{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../__DynamicConstants.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../../../src/utils/Constants.ts","../HelperFuncs.js","../../../src/utils/BrowserConstants.ts","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../InternalConstants.js","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../src/error/ClientAuthError.ts","../../src/Constants.ts","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../../../src/utils/StringUtils.ts","../../../src/event/EventType.ts","../../../src/error/AuthError.ts","../../../out/lib/src/DynamicProto.js","../node_modules/@fortawesome/free-solid-svg-icons/index.es.js","../node_modules/prop-types/index.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../EnvUtils.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@popperjs/core/lib/utils/math.js","../../../src/error/BrowserConfigurationAuthError.ts","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/moment/moment.js","../node_modules/react-table/index.js","../../modules/miniCreateReactContext.js","../../modules/createContext.js","../../modules/createNamedContext.js","../../modules/HistoryContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../DiagnosticLogger.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../ProcessTelemetryContext.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../src/account/ClientInfo.ts","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../TelemetryHelpers.js","../node_modules/axios/lib/utils.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/moment-timezone/index.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../src/authority/AuthorityType.ts","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../RandomHelper.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../../../src/error/InteractionRequiredAuthError.ts","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/context.js","../../src/Helpers.ts","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../DataCacheHelper.js","../../../src/cache/entities/AccountEntity.ts","../node_modules/i18next-http-backend/esm/utils.js","../node_modules/webpack/buildin/global.js","../PerfManager.js","../node_modules/@fortawesome/fontawesome-svg-core/index.es.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js","../node_modules/goober/dist/goober.esm.js","../node_modules/react-placeholder/lib/utils.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/react-csv/index.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/axios/index.js","../EventHelpers.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../../../src/util/index.js","../../src/utils/interleave.js","../../src/utils/isPlainObject.js","../../src/utils/empties.js","../../src/utils/isFunction.js","../../src/utils/getComponentName.js","../../src/utils/isStyledComponent.js","../../src/constants.js","../../src/utils/error.js","../../src/sheet/GroupedTag.js","../../src/sheet/GroupIDAllocator.js","../../src/sheet/Rehydration.js","../../src/utils/nonce.js","../../src/sheet/dom.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/generateAlphabeticName.js","../../src/utils/hash.js","../../src/utils/isStaticRules.js","../../src/models/ComponentStyle.js","../../src/utils/stylis.js","../../src/utils/stylisPluginInsertRule.js","../../src/models/StyleSheetManager.js","../../src/models/Keyframes.js","../../src/utils/hyphenateStyleName.js","../../src/utils/flatten.js","../../src/utils/isStatelessFunction.js","../../src/utils/addUnitIfNeeded.js","../../src/constructors/css.js","../../src/utils/checkDynamicCreation.js","../../src/utils/determineTheme.js","../../src/utils/escape.js","../../src/utils/generateComponentId.js","../../src/utils/isTag.js","../../src/utils/mixinDeep.js","../../src/models/ThemeProvider.js","../../src/models/StyledComponent.js","../../src/utils/generateDisplayName.js","../../src/utils/joinStrings.js","../../src/utils/domElements.js","../../src/constructors/styled.js","../../src/constructors/constructWithOptions.js","../../src/models/GlobalStyle.js","../../src/constructors/createGlobalStyle.js","../../src/constructors/keyframes.js","../../src/models/ServerStyleSheet.js","../../src/hoc/withTheme.js","../../src/hooks/useTheme.js","../../src/secretInternals.js","../../src/base.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/react-is/index.js","../node_modules/invariant/browser.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../../src/index.ts","../../src/core/types.ts","../../src/core/utils.ts","../../src/core/store.ts","../../src/core/toast.ts","../../src/core/use-toaster.ts","../../src/components/toast-bar.tsx","../../src/components/toast-icon.tsx","../../src/components/error.tsx","../../src/components/loader.tsx","../../src/components/checkmark.tsx","../../src/components/toaster.tsx","../CookieMgr.js","../../../src/app/IPublicClientApplication.ts","../../../src/event/EventMessage.ts","../../src/MsalContext.ts","../../src/utils/utilities.ts","../../src/packageMetadata.ts","../../src/MsalProvider.tsx","../../src/hooks/useMsal.ts","../../src/hooks/useIsAuthenticated.ts","../../src/components/AuthenticatedTemplate.tsx","../../src/components/UnauthenticatedTemplate.tsx","../../src/error/ReactAuthError.ts","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/@popperjs/core/lib/modifiers/index.js","../node_modules/@popperjs/core/lib/popper-lite.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../src/logger/Logger.ts","../node_modules/@popperjs/core/lib/index.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/canUseDOM.js","../DbgExtensionUtils.js","../UnloadHandlerContainer.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/i18next-http-backend/esm/getFetch.cjs","../node_modules/process/browser.js","../node_modules/axios/lib/defaults.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/warning/warning.js","../../../js/src/util/index.js","../../../js/src/dom/event-handler.js","../../../js/src/dom/data.js","../../../js/src/dom/manipulator.js","../../../js/src/util/config.js","../../../js/src/base-component.js","../../../js/src/util/component-functions.js","../../../js/src/alert.js","../../../js/src/button.js","../../../js/src/dom/selector-engine.js","../../../js/src/util/swipe.js","../../../js/src/carousel.js","../../../js/src/collapse.js","../../../js/src/dropdown.js","../../../js/src/util/scrollbar.js","../../../js/src/util/backdrop.js","../../../js/src/util/focustrap.js","../../../js/src/modal.js","../../../js/src/offcanvas.js","../../../js/src/util/sanitizer.js","../../../js/src/util/template-factory.js","../../../js/src/tooltip.js","../../../js/src/popover.js","../../../js/src/scrollspy.js","../../../js/src/tab.js","../../../js/src/toast.js","../node_modules/path-to-regexp/index.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../BaseTelemetryPlugin.js","../W3cTraceParent.js","../CoreUtils.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../src/dom/event-handler.js","../../../src/dom/manipulator.js","../node_modules/react-csv/lib/core.js","../node_modules/react-csv/lib/metaProps.js","../node_modules/react-search-autocomplete/dist/components/SearchIcon.js","../node_modules/react-placeholder/lib/placeholders/TextRow.js","../node_modules/react-placeholder/lib/placeholders/RoundShape.js","../node_modules/react-placeholder/lib/placeholders/TextBlock.js","../node_modules/react-dom/client.js","../../src/dropdown.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/react-search-autocomplete/dist/index.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/void-elements/index.js","../node_modules/@stripe/stripe-js/dist/stripe.esm.js","../node_modules/react-placeholder/lib/index.js","../node_modules/i18next-http-backend/esm/index.js","../node_modules/i18next-http-backend/esm/request.js","../node_modules/@fortawesome/free-regular-svg-icons/index.es.js","../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../node_modules/chart.js/dist/chart.mjs","../node_modules/chart.js/auto/auto.mjs","../../node_modules/@swc/helpers/src/_object_spread.js","../../node_modules/@swc/helpers/src/_define_property.js","../../node_modules/@swc/helpers/src/_object_without_properties.js","../../node_modules/@swc/helpers/src/_object_without_properties_loose.js","../../node_modules/@swc/helpers/src/_sliced_to_array.js","../../node_modules/@swc/helpers/src/_array_with_holes.js","../../node_modules/@swc/helpers/src/_iterable_to_array.js","../../node_modules/@swc/helpers/src/_non_iterable_rest.js","../../src/utils.ts","../../src/chart.tsx","../../src/typedCharts.tsx","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/timers-browserify/main.js","../node_modules/setimmediate/setImmediate.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../../src/publicUtils.js","../../src/utils.js","../../src/makeDefaultPluginHooks.js","../../src/hooks/useColumnVisibility.js","../../src/hooks/useTable.js","../../src/plugin-hooks/useExpanded.js","../../src/filterTypes.js","../../src/plugin-hooks/useFilters.js","../../src/plugin-hooks/useGlobalFilter.js","../../src/aggregations.js","../../src/plugin-hooks/useGroupBy.js","../../src/sortTypes.js","../../src/plugin-hooks/useSortBy.js","../../src/plugin-hooks/usePagination.js","../../src/plugin-hooks/_UNSTABLE_usePivotColumns.js","../../src/plugin-hooks/useRowSelect.js","../../src/plugin-hooks/useRowState.js","../../src/plugin-hooks/useColumnOrder.js","../../src/plugin-hooks/useResizeColumns.js","../../src/plugin-hooks/useAbsoluteLayout.js","../../src/plugin-hooks/useBlockLayout.js","../../src/plugin-hooks/useFlexLayout.js","../../src/plugin-hooks/useGridLayout.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../../../src/dom/selector-engine.js","../../src/base-component.js","../../../src/dom/data.js","../../../src/util/config.js","../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","../node_modules/react-csv/lib/index.js","../node_modules/react-csv/lib/components/Download.js","../node_modules/react-csv/lib/components/Link.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/webpack/buildin/module.js","../node_modules/react-search-autocomplete/dist/components/ReactSearchAutocomplete.js","../node_modules/fuse.js/dist/fuse.esm.js","../node_modules/react-search-autocomplete/dist/config/config.js","../node_modules/react-search-autocomplete/dist/utils/utils.js","../node_modules/react-search-autocomplete/dist/components/Results.js","../node_modules/react-search-autocomplete/dist/components/SearchInput.js","../node_modules/react-search-autocomplete/dist/components/ClearIcon.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/react-placeholder/lib/ReactPlaceholder.js","../node_modules/react-placeholder/lib/placeholders/index.js","../node_modules/react-placeholder/lib/placeholders/RectShape.js","../node_modules/react-placeholder/lib/placeholders/MediaBlock.js","../../src/TsLibShims.ts","../node_modules/react-i18next/dist/es/useTranslation.js","../ReactPlugin.js","../../../src/telemetry/performance/PerformanceEvent.ts","../../../src/cache/CryptoKeyStore.ts","../../../src/error/ServerError.ts","../../../src/error/JoseHeaderError.ts","../../../src/crypto/JoseHeader.ts","../../../src/utils/MathUtils.ts","../../../src/crypto/GuidGenerator.ts","../../../src/utils/BrowserStringUtils.ts","../../../src/encode/Base64Encode.ts","../../../src/encode/Base64Decode.ts","../../../src/error/BrowserAuthError.ts","../../../src/crypto/PkceGenerator.ts","../../../src/crypto/ModernBrowserCrypto.ts","../../../src/crypto/MsrBrowserCrypto.ts","../../../src/crypto/MsBrowserCrypto.ts","../../../src/crypto/BrowserCrypto.ts","../../../src/cache/DatabaseStorage.ts","../../../src/cache/MemoryStorage.ts","../../../src/cache/AsyncMemoryStorage.ts","../../../src/crypto/CryptoOps.ts","../../../src/telemetry/performance/PerformanceClient.ts","../../../src/telemetry/performance/StubPerformanceClient.ts","../../../src/crypto/ICrypto.ts","../../../src/cache/entities/CredentialEntity.ts","../../../src/error/ClientConfigurationError.ts","../../../src/account/CcsCredential.ts","../../../src/request/ScopeSet.ts","../../../src/account/AuthToken.ts","../../../src/cache/CacheManager.ts","../../../src/cache/entities/IdTokenEntity.ts","../../../src/utils/TimeUtils.ts","../../../src/cache/entities/AccessTokenEntity.ts","../../../src/cache/entities/RefreshTokenEntity.ts","../../../src/cache/entities/AppMetadataEntity.ts","../../../src/cache/entities/ServerTelemetryEntity.ts","../../../src/cache/entities/AuthorityMetadataEntity.ts","../../../src/cache/entities/ThrottlingEntity.ts","../../../src/utils/ProtocolUtils.ts","../../../src/authority/ProtocolMode.ts","../../../src/authority/AuthorityOptions.ts","../../../src/cache/BrowserStorage.ts","../../../src/url/UrlString.ts","../../../src/utils/BrowserProtocolUtils.ts","../../../src/cache/BrowserCacheManager.ts","../../../src/config/ClientConfiguration.ts","../../../src/network/INetworkModule.ts","../../../src/network/FetchClient.ts","../../../src/network/XhrClient.ts","../../../src/utils/BrowserUtils.ts","../../../src/navigation/NavigationClient.ts","../../../src/config/Configuration.ts","../../../src/crypto/PopTokenGenerator.ts","../../../src/event/EventHandler.ts","../../../src/network/ThrottlingUtils.ts","../../../src/network/NetworkManager.ts","../../../src/request/RequestValidator.ts","../../../src/request/RequestParameterBuilder.ts","../../../src/client/BaseClient.ts","../../../src/cache/entities/CacheRecord.ts","../../../src/cache/persistence/TokenCacheContext.ts","../../../src/response/ResponseHandler.ts","../../../src/client/AuthorizationCodeClient.ts","../../../src/authority/OpenIdConfigResponse.ts","../../../src/authority/AuthorityMetadata.ts","../../../src/authority/RegionDiscovery.ts","../../../src/error/NativeAuthError.ts","../../../src/authority/Authority.ts","../../../src/authority/CloudInstanceDiscoveryResponse.ts","../../../src/authority/CloudInstanceDiscoveryErrorResponse.ts","../../../src/authority/AuthorityFactory.ts","../../../src/telemetry/server/ServerTelemetryManager.ts","../../../src/interaction_client/BaseInteractionClient.ts","../../../src/interaction_client/StandardInteractionClient.ts","../../../src/client/RefreshTokenClient.ts","../../../src/client/SilentFlowClient.ts","../../../src/interaction_client/SilentCacheClient.ts","../../../src/interaction_client/NativeInteractionClient.ts","../../../src/broker/nativeBroker/NativeMessageHandler.ts","../../../src/interaction_handler/InteractionHandler.ts","../../../src/interaction_client/PopupClient.ts","../../../src/interaction_handler/RedirectHandler.ts","../../../src/interaction_client/RedirectClient.ts","../../../src/interaction_handler/SilentHandler.ts","../../../src/interaction_client/SilentIframeClient.ts","../../../src/interaction_client/SilentRefreshClient.ts","../../../src/cache/TokenCache.ts","../../../src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../../../src/interaction_client/SilentAuthCodeClient.ts","../../../src/telemetry/BrowserPerformanceMeasurement.ts","../../../src/telemetry/BrowserPerformanceClient.ts","../../../src/app/PublicClientApplication.ts","../../../src/app/ClientApplication.ts","../EnumHelperFuncs.js","../Enums.js","../StorageHelperFuncs.js","../applicationinsights-common.js","../DataSanitizer.js","../Constants.js","../TelemetryItemCreator.js","../Event.js","../Trace.js","../DataPoint.js","../Metric.js","../PageView.js","../PageViewPerformance.js","../Exception.js","../DomHelperFuncs.js","../RequestResponseHeaders.js","../UrlHelperFuncs.js","../Util.js","../RemoteDependencyData.js","../InstrumentHooks.js","../PageViewManager.js","../PageViewPerformanceManager.js","../PageVisitTimeManager.js","../Timing.js","../AnalyticsPlugin.js","../ContextTagKeys.js","../PartAExtensions.js","../Envelope.js","../Data.js","../EnvelopeCreator.js","../Offline.js","../SendBuffer.js","../Sender.js","../Serializer.js","../HashCodeScoreGenerator.js","../SamplingScoreGenerator.js","../Sample.js","../ConnectionStringParser.js","../SeverityLevel.js","../IConfig.js","../ChannelController.js","../TelemetryInitializerPlugin.js","../BaseCore.js","../NotificationManager.js","../AppInsightsCore.js","../ajaxRecord.js","../ajax.js","../Application.js","../Device.js","../Internal.js","../Location.js","../Session.js","../TelemetryTrace.js","../User.js","../TelemetryContext.js","../Initialization.js","../PropertiesPlugin.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/v4.js","../../src/parse-tag.js","../../src/parse.js","../../src/stringify.js","../../src/index.js","../node_modules/react-i18next/dist/es/Trans.js"],"names":["module","exports","require","_slicedToArray","arr","i","Array","isArray","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","call","next","Object","done","push","value","length","err","unsupportedIterableToArray","TypeError","_regeneratorRuntime","Op","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","undefined","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","HeaderNames","PersistentCacheKeys","AADAuthorityConstants","AADServerParamKeys","ClaimsRequestKeys","Constants","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","ADFS","DSTS","AAD_INSTANCE_DISCOVERY_ENDPT","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","NOT_APPLICABLE","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","REGIONAL_AUTH_NON_MSI_QUERY_STRING","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","SHR_NONCE_VALIDITY","INVALID_INSTANCE","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","SSOTypes","PromptValue","LOGIN","SELECT_ACCOUNT","CONSENT","NONE","CREATE","NO_SESSION","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","CacheSchemaType","CacheType","CodeChallengeMethodValues","PLAIN","S256","AuthorityMetadataSource","APP_METADATA","CLIENT_INFO","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","CACHE_KEY","REFRESH_TIME_SECONDS","AuthenticationScheme","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","PasswordGrantConstants","ResponseCodes","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","JsonTypes","ThrottlingConstants","DEFAULT_THROTTLE_TIME_SECONDS","DEFAULT_MAX_THROTTLE_TIME_SECONDS","THROTTLING_PREFIX","X_MS_LIB_CAPABILITY_VALUE","Errors","INVALID_GRANT_ERROR","CLIENT_MISMATCH_ERROR","NativeExtensionMethod","BrowserCacheLocation","HTTP_REQUEST_TYPE","TemporaryCacheKeys","InMemoryCacheKeys","ApiId","InteractionType","InteractionStatus","BrowserConstants","INTERACTION_IN_PROGRESS_VALUE","POPUP_WIDTH","POPUP_HEIGHT","POPUP_NAME_PREFIX","DEFAULT_POLL_INTERVAL_MS","MSAL_SKU","NativeConstants","CHANNEL_ID","PREFERRED_EXTENSION_ID","MATS_TELEMETRY","WrapperSKU","DEFAULT_REQUEST","scopes","KEY_FORMAT_JWK","CacheLookupPolicy","DB_NAME","DB_VERSION","DB_TABLE_NAME","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread2","target","source","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_defineProperty","_typeof","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","from","_iterableToArray","o","minLen","n","toString","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","camelize","string","replace","match","chr","toUpperCase","substr","toLowerCase","_excluded$1","PRODUCTION","process","e","normalizeIconArgs","icon","prefix","iconName","parse","objectWithKey","_excluded","FontAwesomeIcon","_ref","forwardedRef","iconArgs","maskArgs","mask","symbol","className","title","titleId","maskId","iconLookup","classes","concat","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","size","rotation","pull","swapOpacity","map","classList","split","transform","renderedIcon","_console","console","log","abstract","extraProps","ref","defaultProps","convertCurry","propTypes","PropTypes","bool","oneOfType","array","oneOf","convert","createElement","element","children","child","mixins","attributes","reduce","acc","attrs","s","trim","pair","prop","startsWith","_extraProps$style","style","existingStyle","remaining","tag","bind","React","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","_inherits","subClass","superClass","ClientAuthErrorMessage","clientInfoDecodingError","code","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","unableToGetOpenidConfigError","hashNotDeserialized","blankGuidGenerated","invalidStateError","stateMismatchError","stateNotFoundError","nonceMismatchError","nonceNotFoundError","authTimeNotFoundError","maxAgeTranspiredError","noTokensFoundError","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","tokenRequestCannotBeMade","appendEmptyScopeError","removeEmptyScopeError","appendScopeSetError","emptyInputScopeSetError","DeviceCodePollingCancelled","DeviceCodeExpired","DeviceCodeUnknownError","NoAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","CachePluginError","noCryptoObj","invalidCacheType","unexpectedAccountType","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsRequired","noAuthorizationCodeFromServer","noAzureRegionDetected","accessTokenEntityNullError","bindingKeyNotRemovedError","logoutNotSupported","keyIdMissing","errorCode","errorMessage","ClientAuthError","caughtError","createClientInfoEmptyError","caughtExtractionError","invalidRawTokenString","errDetail","createNetworkError","endpoint","hashParamObj","createInvalidStateError","invalidState","errorString","createStateMismatchError","missingState","createNonceMismatchError","createAuthTimeNotFoundError","createMaxAgeTranspiredError","missingNonce","createMultipleMatchingTokensInCacheError","createMultipleMatchingAccountsInCacheError","createMultipleMatchingAppMetadataInCacheError","createTokenRequestCannotBeMadeError","givenScope","appendError","createEmptyInputScopeSetError","createDeviceCodeCancelledError","createDeviceCodeExpiredError","createDeviceCodeUnknownError","createNoAccountInSilentRequestError","createNullOrUndefinedCacheRecord","createInvalidCacheEnvironmentError","createNoAccountFoundError","createCachePluginError","operationName","createInvalidCacheTypeError","createUnexpectedAccountTypeError","createUnexpectedCredentialTypeError","createInvalidAssertionError","createInvalidCredentialError","createRefreshRequiredError","createUserTimeoutReachedError","createTokenClaimsRequiredError","createNoAuthCodeInServerResponseError","createBindingKeyNotRemovedError","createLogoutNotSupportedError","createKeyIdMissingError","strShimFunction","strShimObject","strShimUndefined","strShimPrototype","strShimHasOwnProperty","strDefault","ObjClass","ObjProto","ObjAssign","ObjCreate","ObjDefineProperty","ObjHasOwnProperty","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","Super","NewTarget","possibleConstructorReturn","_createForOfIteratorHelper","allowArrayLike","it","F","f","normalCompletion","didErr","step","_e2","BrowserRouter","history","createHistory","render","Component","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","C","forwardRef","LinkAnchor","innerRef","navigate","onClick","rest","event","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","Link","component","RouterContext","Consumer","location","href","createHref","isDuplicateNavigation","createPath","ariaCurrent","activeClassName","activeStyle","classNameProp","exact","isActiveProp","isActive","locationProp","sensitive","strict","styleProp","toLocation","path","pathname","escapedPath","matchPath","classnames","join","joinClassnames","authToken","StringUtils","isEmpty","createTokenNullOrEmptyError","matches","exec","createTokenParsingError","JSON","stringify","header","JWSPayload","JWSSig","str","strObj","search","endsWith","lastIndexOf","query","params","decode","decodeURIComponent","matchPattern","pattern","input","RegExp","EventType","AuthErrorMessage","suberror","AuthError","subError","correlationId","errDesc","_a","UNDEFINED","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynClassNamePrefix","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","str__Proto","DynProtoBaseProto","DynProtoGlobalSettings","DynProtoCurrent","strUseBaseInst","strSetInstFuncs","Obj","_objGetPrototypeOf","_objGetOwnProps","_gbl","globalThis","window","global","_getGlobal","_gblInst","_hasOwnProperty","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","Function","_getObjProto","newProto","curProto","_forEachProp","func","name_1","lp","_isDynamicCandidate","funcName","skipOwn","_throwTypeError","message","_hasVisited","_populatePrototype","proto","baseInstFuncs","setInstanceFunc","_createDynamicPrototype","dynProtoProxy","instFunc","currentDynProtoProxy","instFuncTable","canAddInst","objProto","visited","protoFunc","_getInstFunc","_getProtoFunc","instFuncs_1","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","options","classProto","thisTarget","thisProto","_checkPrototype","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_instFuncProxy","funcHost","theFunc","baseProto","_getBaseFuncs","faAngleDoubleLeft","faAngleDoubleRight","faAngleDown","faAngleLeft","faAngleRight","faAngleUp","faArrowLeft","faBan","faBars","faBell","faBox","faCheckCircle","faCircle","faClock","faCog","faCreditCard","faCube","faEdit","faExclamationTriangle","faExternalLinkSquareAlt","faFileExport","faFileInvoiceDollar","faGlobe","faInfo","faInfoCircle","faLock","faLockOpen","faMapMarkerAlt","faMinusCircle","faPaperPlane","faPen","faPlus","faSearch","faSpinner","faSquare","faSync","faTag","faTrashAlt","faUser","faUserLock","faUsers","arrayLikeToArray","strWindow","strDocument","strDocumentMode","strNavigator","strHistory","strLocation","strConsole","strPerformance","strJSON","strCrypto","strMsCrypto","strReactNative","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","property","_getNamedValue","_getPrototypeOf","isElement","node","getWindow","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","get","receiver","base","_extends","assign","max","Math","min","round","BrowserConfigurationAuthErrorMessage","BrowserConfigurationAuthError","createRedirectUriEmptyError","createPostLogoutRedirectUriEmptyError","createStorageNotSupportedError","givenStorageLocation","createRedirectCallbacksNotSetError","createStubPcaInstanceCalledError","createInMemoryRedirectUnavailableError","createEntropyNotProvided","ownerDocument","defaultView","hookCallback","some","hooks","setHookCallback","callback","isObject","hasOwnProp","a","b","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","res","arrLen","extend","createUTC","format","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","isValid","_isValid","flags","parsedParts","isNowValid","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","t","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","stack","deprecations","deprecateSimple","isFunction","set","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","pow","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","data","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","c","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createContext","defaultValue","calculateChangedBits","contextProp","getUniqueId","Provider","emitter","handlers","on","handler","off","newValue","changedBits","createEventEmitter","getChildContext","componentWillReceiveProps","nextProps","oldValue","childContextTypes","isRequired","observedBits","getValue","onUpdate","setState","componentDidMount","componentWillUnmount","contextTypes","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","url","isExact","HistoryContext","cache","cacheLimit","cacheCount","cacheKey","pathCache","regexp","pathToRegexp","compilePath","memo","Route","computedMatch","Children","count","isEmptyChildren","addLeadingSlash","stripBasename","basename","createURL","staticHandler","invariant","noop","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","useContext","useHistory","useParams","getBasePlacement","AiNonUserActionablePrefix","AiUserActionablePrefix","AIInternalMessagePrefix","_sanitizeDiagnosticText","text","_logToConsole","_InternalLogMessage","DiagnosticLogger","_getLogger","logger","_assertThisInitialized","ReferenceError","getNodeName","nodeName","getDocumentElement","document","documentElement","strTelemetryPluginChain","strHasRunFlags","strGetTelCtx","_chainId","_createInternalContext","telemetryChain","proxy","core","startAt","isAbsolute","spliceOne","list","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","valueEqual","every","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hash","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","listener","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","random","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","splice","canGo","getComputedStyle","buildClientInfo","rawClientInfo","crypto","decodedClientInfo","base64Decode","createClientInfoDecodingError","buildClientInfoFromHomeAccountId","homeAccountId","clientInfoParts","CLIENT_INFO_SEPARATOR","uid","utid","rectToClientRect","rect","width","height","getClientRectFromMixedType","clippingParent","strategy","win","html","visualViewport","clientWidth","clientHeight","layoutViewport","isLayoutViewport","offsetLeft","offsetTop","getWindowScrollBarX","getViewportRect","getBoundingClientRect","clientTop","clientLeft","getInnerBoundingClientRect","_element$ownerDocumen","winScroll","getWindowScroll","body","scrollWidth","scrollHeight","scrollLeft","scrollTop","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","listScrollParents","getParentNode","clipperElement","position","getOffsetParent","contains","getClippingParents","firstClippingParent","clippingRect","accRect","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","paddingObject","mergePaddingObject","expandToHashMap","altContext","popperRect","rects","elements","clippingClientRect","contextElement","referenceClientRect","popperOffsets","computeOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","multiply","axis","_inheritsLoose","pluginStateData","isPlainObject","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","assignValue","thisArg","stripBOM","content","charCodeAt","isProduction","condition","provided","tz","load","classNames","argType","inner","includes","default","_possibleConstructorReturn","AuthorityType","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","addVisualOffsets","getVariation","alreadyWarned","warnOnce","_len2","_key2","loadNamespaces","i18n","ns","cb","isInitialized","initialized","setTimeout","hasLoadedNamespace","languages","ignoreJSONStructure","precheck","i18nInstance","loadNotPending","bindI18n","services","backendConnector","backend","isLanguageChangingTo","lng","fallbackLng","lastLng","loadState","hasResourceBundle","resources","partialBundledLanguages","oldI18nextHasLoadedNamespace","_objectSpread","consoleLogger","Logger","concreteLogger","init","debug","forward","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","events","_this","observer","defer","rej","promise","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","_entityMap","escape","isIE10","deepFind","keySeparator","paths","current","p","mix","joinedPath","ResourceStore","_EventEmitter","defaultNS","silent","addNamespaces","emit","addResource","deep","pack","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","translator","processor","checkedLoadedFor","Translator","language","interpolation","resolved","nsSeparator","namespaces","interpolator","nestingRegexp","lastKey","_this2","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","send","fallbackValue","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","codes","utils","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","find","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","Number","PluralResolver","rules","numbers","plurals","createRules","rule","getRule","idx","noAbs","simplifyPluralSuffix","returnSuffix","prepend","compatibilityJSON","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","r","elem","v","Connector","store","queue","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","q","_getLastOfPath2","pushPath","what","remove","fcName","tried","wait","queueLoad","loadOne","prepareLoading","_this5","isUpdate","transformOptions","nonExplicitWhitelist","I18n","modules","external","isClone","initImmediate","createClassOnDemand","ClassOrObject","preload","pluralSeparator","tDescription","_format","lu","languageDetector","detection","_this2$store","_this2$store2","deferred","initializedStoreOnce","changeLanguage","usedCallback","append","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","keyPrefix","fixedT","opts","resultKey","_this$translator","_this$translator2","exists","_this6","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","i18next","__esModule","isTableElement","getTrueOffsetParent","offsetParent","isFirefox","getUAString","currentNode","host","css","perspective","contain","willChange","parentNode","getContainingBlock","UInt32Mask","MaxUInt32","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","offsets","isScrollParent","getNodeScroll","order","modifiers","Map","Set","modifier","requires","requiresIfExists","dep","has","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","phase","orderModifiers","merged","existing","mergeByName","enabled","_ref3","_ref3$options","effect","cleanupFn","noopFn","update","forceUpdate","_state$elements","getLayoutRect","_state$orderedModifie","_state$orderedModifie2","destroy","onFirstUpdate","createPopper","toPropertyKey","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessage","native_account_unavailable","timestamp","traceId","claims","InteractionRequiredAuthError","isInteractionRequiredError","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","createNoTokensFoundError","createNativeAccountUnavailableError","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","initReactI18next","setDefaults","react","setI18n","_cachedGlobal","getGlobal","useCached","throwTypeError","objCreateFn","tmpFunc","unsetSides","mapToStyles","_ref2","_Object$assign2","variation","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","passive","_options$scroll","_options$resize","resize","scrollParent","assignedSlot","_objDefineProperty","instanceName","_dataUid","_canAcceptData","_getCache","generateAccountId","environment","CACHE_KEY_SEPARATOR","generateAccountKey","AccountEntity","generateAccountCacheKey","tenantId","realm","username","localAccountId","generateType","authorityType","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","MSA","MSSTS_ACCOUNT_TYPE","MSSTS","GENERIC_ACCOUNT_TYPE","GENERIC","getAccountInfo","idTokenClaims","nativeAccountId","accountInterface","createAccount","clientInfo","idToken","authority","cloudGraphHostName","msGraphHost","account","env","getPreferredCache","tid","oid","sub","preferredUsername","preferred_username","email","emails","createGenericAccount","Adfs","upn","serverClientInfo","authType","cryptoObj","accountId","Dsts","verbose","entity","accountInfoIsEqual","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","nonce","each","hasXMLHttpRequest","XMLHttpRequest","makePromise","maybePromise","isPromise","g","strExecutionContextKey","strParentContextKey","strChildrenContextKey","_defaultPerfManager","PerfEvent","PerfManager","doPerfActiveKey","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","measure","MutationObserver","performance","_ref$userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","head","IS_IE","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","RESERVED_CLASSES","initial","FontAwesomeConfig","attr","coerce","getAttrConfig","familyPrefix","styleDefault","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","_onChangeCb","meaninglessTransform","rotate","flipX","flipY","idPool","nextUniqueId","id","classArray","htmlEscape","joinStyles","styleName","transformIsMeaningful","baseStyles","dfp","drc","fp","rc","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","setAttribute","innerHTML","headChildren","childNodes","beforeChild","tagName","insertBefore","insertCss","InjectCSS","mixout","dom","beforeDOMElementCreation","beforeI2svg","shims","functions","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","joinAttributes","iconFromMapping","mapping","doScroll","readyState","subject","initialValue","thisContext","bindInternal4","toHex","unicode","decoded","counter","extra","ucs2decode","normalizeIcons","icons","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","build","lookup","reducer","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","unicodes","getCanonicalPrefix","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","emptyCanonicalIcon","styleOrPrefix","defined","getCanonicalIcon","_params$skipLookups","skipLookups","givenPrefix","canonical","aliasIconName","Library","definitions","additions","_pullDefinitions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","hookFn","callHooks","callProvided","findIconDefinition","library","i2svg","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","container","makeInlineSvgAbstract","_params$icons","_params$watchable","watchable","isUploadedIcon","attrClass","role","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","preamble","perf","begin","noop$2","isWatched","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","appendChild","mutators","mutation","comment","createComment","outerHTML","nodeAsComment","replaceChild","forSvg","splitClasses","toSvg","toNode","removeAttribute","newInnerHTML","performOperationSync","op","perform","mutations","callbackFunction","frame","requestAnimationFrame","mutator","disabled","disableObservation","enableObservation","mo","observe","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","childList","characterData","subtree","classParser","ligature","existingPrefix","existingIconName","innerText","parseMeta","parser","styleParser","_classParser","extraClasses","extraAttributes","attributesParser","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","onTree","root","htmlClassList","hclAdd","hclRemove","prefixes","prefixesDomQuery","candidates","querySelectorAll","all","resolvedMutations","catch","onNode","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","makeLayersCounterAbstract","LayersText","generateLayersText","computedFontSize","fontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","_content","_hexValueFromContent","cleaned","codePoint","first","codePointAt","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","iconIdentifier","iconName4","oldUnicode","newUnicode","byOldUnicode","meta","firstChild","processable","operations","_unwatched","parseTransformString","transformString","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","opacity","nextPlugins","mixoutsTo","plugin","tk","sk","registerPlugins","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","library$1","parse$1","within","mathMax","mathMin","withinMaxClamp","createCommonjsModule","ReactPropTypesSecret_1","emptyFunction","emptyFunctionWithReset","resetWarningCache","factoryWithThrowingShims","propName","componentName","propFullName","secret","getShim","ReactPropTypes","any","arrayOf","elementType","instanceOf","objectOf","shape","checkPropTypes","usePrevious","useRef","useEffect","isUnknownObject","raw","isStripe","createToken","createPaymentMethod","confirmCardPayment","PLAIN_OBJECT_STR","isEqual","leftArray","leftPlainObject","leftKeys","rightKeys","keySet","pred","extractAllowedOptionsUpdates","prevOptions","immutableKeys","newOptions","isUpdated","INVALID_STRIPE_ERROR","validateStripe","maybeStripe","parseStripeProp","stripePromise","stripe","ElementsContext","parseElementsContext","ctx","useCase","CartElementContext","parseCartElementContext","Elements","rawStripeProp","parsed","useMemo","_React$useState2","useState","cart","setCart","_React$useState4","cartState","setCartState","_React$useState6","setContext","isMounted","safeSetContext","prevStripe","updates","anyStripe","_registerWrapper","registerAppInfo","useElementsContextWithUseCase","useCaseMessage","useCartElementContextWithUseCase","useElements","useStripe","useCartElement","useCartElementState","ElementsConsumer","useAttachEvent","cbDefined","cbRef","decoratedCb","capitalized","createElementComponent","isServer","readyCallback","_ref$options","onBlur","onFocus","onReady","onChange","onEscape","onLoadError","onLoaderStart","onNetworksChange","onCheckout","onLineItemClick","onConfirm","onCancel","onShippingAddressChange","onShippingRateChange","setElement","elementRef","domNode","_useCartElementContex","useLayoutEffect","newElement","mount","__elementType","AuBankAccountElement","CardElement","CardNumberElement","CardExpiryElement","CardCvcElement","FpxBankElement","IbanElement","IdealBankElement","P24BankElement","EpsBankElement","PaymentElement","PayButtonElement","PaymentRequestButtonElement","LinkAuthenticationElement","AddressElement","ShippingAddressElement","CartElement","PaymentMethodMessagingElement","AffirmMessageElement","AfterpayClearpayMessageElement","_goober","theme","joinClassNames","initialStyles","margin","attribute","toPaddingObject","_state$modifiersData$","arrowElement","basePlacement","getMainAxisFromPlacement","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","referenceRect","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","getOppositePlacement","getOppositeVariationPlacement","_skip","_options$mainAxis","mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","getFreshSideObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","pageXOffset","pageYOffset","_getComputedStyle","overflowX","overflowY","getScrollParent","isBody","updatedList","strOnPrefix","strAttachEvent","strAddEventHelper","strDetachEvent","strRemoveEventListener","strEvents","strVisibilityChangeEvt","strPageHide","strUnload","strBeforeUnload","strPageHideNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","eventName","evtNamespace","_getRegisteredEvents","evtName","addDefault","_doDetach","handlerRef","useCapture","_doUnregister","unRegFn","_addEventListeners","excludeEvents","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","getUID","getElementById","getSelector","selector","hrefAttribute","getSelectorFromElement","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","jquery","nodeType","getElement","isVisible","getClientRects","elementIsVisible","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","hasAttribute","findShadowRoot","attachShadow","getRootNode","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","isRTL","defineJQueryPlugin","$","NAME","JQUERY_NO_CONFLICT","jQueryInterface","noConflict","execute","executeAfterTransition","transitionElement","durationPadding","emulatedDuration","called","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","strings","interpolations","typeOf","EMPTY_ARRAY","freeze","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","SC_VERSION","__VERSION__","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","STATIC_EXECUTION_CONTEXT","throwStyledComponentsError","DefaultGroupedTag","groupSizes","Uint32Array","indexOfGroup","group","insertRules","oldBuffer","oldSize","newSize","throwStyledError","ruleIndex","insertRule","clearGroup","startIndex","endIndex","deleteRule","getGroup","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","getIdForGroup","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","sheet","registerName","rehydrateSheetFromTag","textContent","marker","getTag","getNonce","__webpack_nonce__","makeStyleTag","parent","prevStyle","nextSibling","CSSOMTag","styleSheets","ownerNode","_error","cssRules","cssText","TextTag","nodes","refNode","VirtualTag","_target","SHOULD_REHYDRATE","useCSSOMInjection","StyleSheet","globalStyles","gs","server","registerId","reconstructWithOptions","withNames","allocateGSInstance","hasNameForId","groupNames","clearNames","clear","clearRules","clearTag","AD_REPLACER_R","getAlphabeticChar","fromCharCode","generateAlphabeticName","phash","isStaticRules","SEED","ComponentStyle","componentId","baseStyle","staticRulesId","isStatic","NODE_ENV","baseHash","generateAndInjectStyles","executionContext","styleSheet","stylis","cssStatic","flatten","generateName","cssStaticFormatted","dynamicHash","partRule","partChunk","partString","cssFormatted","COMMENT_REGEX","COMPLEX_SELECTOR_PREFIX","createStylisInstance","_componentId","_selector","_selectorRegexp","_consecutiveSelfRefRegExp","plugins","Stylis","parsingRules","parseRulesPlugin","toSheet","selectors","parents","line","column","depth","at","delimiter","selfReferenceReplacer","stringifyRules","flatCSS","cssStr","use","_","parsedRules","StyleSheetContext","StyleSheetConsumer","StylisContext","masterSheet","masterStylis","useStyleSheet","useStylis","StyleSheetManager","stylisPlugins","setPlugins","contextStyleSheet","disableCSSOMInjection","disableVendorPrefixes","shallowequal","Keyframes","inject","stylisInstance","resolvedName","getName","uppercaseCheck","uppercasePattern","msPattern","prefixAndLowerCase","char","hyphenateStyleName","isFalsish","chunk","ruleSet","isReactComponent","objToCssArray","prevKey","isCss","hyphenate","unitless","addTag","interleave","originalConsoleError","providedTheme","escapeRegex","dashesAtEnds","isTag","isValidKey","mixin","mixinDeep","ThemeContext","ThemeConsumer","ThemeProvider","outerTheme","themeContext","identifiers","createStyledComponent","isTargetStyledComp","isCompositeComponent","parentComponentId","generateComponentId","finalAttrs","shouldForwardProp","filterFn","elementToBeCreated","WrappedStyledComponent","componentStyle","forwardedComponent","componentAttrs","foldedComponentIds","resolvedAttrs","resolvedAttrDef","attrDef","determineTheme","generatedClassName","warnTooManyClasses","refToForward","$as","isTargetTag","computedProps","propsForElement","validAttr","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","hoist","styled","constructWithOptions","componentConstructor","isValidElementType","templateFunction","withConfig","StyledComponent","domElement","GlobalStyle","createStyles","removeStyles","renderStyles","createGlobalStyle","globalStyle","GlobalStyleComponent","keyframes","ServerStyleSheet","_emitSheetCSS","SC_ATTR_VERSION","getStyleTags","sealed","getStyleElement","dangerouslySetInnerHTML","__html","seal","collectStyles","interleaveWithNodeStream","WithTheme","themeProp","useTheme","__PRIVATE__","argIndex","framesToPop","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","uaData","userAgentData","brands","brand","delete","toastId","toasts","toast","clearTimeout","visible","pausedAt","pauseDuration","blank","success","loading","custom","createdAt","ariaProps","dismiss","useCallback","reverseOrder","gutter","defaultPosition","findIndex","updateHeight","startPause","endPause","primary","secondary","iconTheme","animation","setup","onHeightUpdate","toastOptions","containerStyle","containerClassName","zIndex","pointerEvents","onMouseEnter","onMouseLeave","justifyContent","display","transition","strToGMTString","strToUTCString","strCookie","strExpires","strEnabled","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_isMgrEnabled","cookieMgr","_isIgnoredCookie","cookieMgrCfg","rootConfig","_extractParts","theValue","_formatDate","theDate","_formatCookieValue","_getCookieValue","_setCookieValue","cookieValue","stubbedPublicClientApplication","initialize","acquireTokenPopup","acquireTokenRedirect","acquireTokenSilent","acquireTokenByCode","getAllAccounts","getAccountByHomeId","getAccountByUsername","getAccountByLocalId","handleRedirectPromise","loginPopup","loginRedirect","logout","logoutRedirect","logoutPopup","ssoSilent","addEventCallback","removeEventCallback","addPerformanceCallback","removePerformanceCallback","enableAccountStorageEvents","disableAccountStorageEvents","getTokenCache","getLogger","setLogger","setActiveAccount","getActiveAccount","initializeWrapperLibrary","setNavigationClient","getConfiguration","getInteractionStatusFromEvent","currentStatus","eventType","LOGIN_START","Login","SSO_SILENT_START","SsoSilent","ACQUIRE_TOKEN_START","interactionType","Redirect","Popup","AcquireToken","HANDLE_REDIRECT_START","HandleRedirect","LOGOUT_START","Logout","SSO_SILENT_SUCCESS","SSO_SILENT_FAILURE","None","LOGOUT_END","HANDLE_REDIRECT_END","LOGIN_SUCCESS","LOGIN_FAILURE","ACQUIRE_TOKEN_SUCCESS","ACQUIRE_TOKEN_FAILURE","defaultMsalContext","inProgress","accounts","MsalContext","getChildrenOrFunction","accountArraysAreEqual","arrayA","arrayB","comparisonArray","elementA","elementB","getAccountByIdentifiers","allAccounts","accountIdentifiers","accountObj","MsalProviderActionType","previousState","payload","newInProgress","UNBLOCK_INPROGRESS","Startup","EVENT","status","EventMessageUtils","currentAccounts","MsalProvider","useReducer","updateState","callbackId","finally","contextValue","useMsal","isAuthenticated","matchAccount","useIsAuthenticated","hasAuthenticated","setHasAuthenticated","AuthenticatedTemplate","Fragment","UnauthenticatedTemplate","ReactAuthErrorMessage","capture","__once","eventListeners","computeStyles","applyStyles","arrayWithHoles","iterableToArrayLimit","nonIterableRest","useMounted","mounted","_setPrototypeOf","LogLevel","loggerOptions","packageName","packageVersion","level","Info","setLoggerOptions","createDefaultLoggerOptions","localCallback","loggerCallback","piiLoggingEnabled","logLevel","logMessage","containsPii","toUTCString","executeCallback","errorPii","warning","Warning","warningPii","infoPii","Verbose","verbosePii","trace","Trace","tracePii","isPiiLoggingEnabled","hashMap","rootNode","isSameNode","commonX","commonY","hide","isReactNative","isDOM","optionsSupported","onceSupported","once","wrappedHandler","onceHandler","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","_toPropertyKey","hint","prim","toPrimitive","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","Item","nextTick","browser","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","adapter","getDefaultAdapter","transformRequest","rawValue","encoder","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","arrayWithoutHoles","iterableToArray","nonIterableSpread","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","getElementEvents","findHandler","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","relatedTarget","delegateTarget","wrapFunction","previousFunction","domElements","hydrateObj","EventHandler","bootstrapDelegationHandler","bootstrapHandler","removeHandler","removeNamespacedHandlers","storeElementEvent","handlerKey","one","inNamespace","isNamespace","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","elementMap","instanceMap","normalizeData","normalizeDataKey","Manipulator","bsKeys","dataset","pureKey","Config","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","Default","configTypes","DefaultType","expectedTypes","valueType","BaseComponent","_element","Data","DATA_KEY","dispose","EVENT_KEY","_queueCallback","getInstance","getOrCreateInstance","VERSION","enableDismissTrigger","clickEvent","EVENT_CLOSE","EVENT_CLOSED","Alert","close","isAnimated","_destroyElement","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","SelectorEngine","findOne","ancestor","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","DATA_API_KEY","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INDICATORS","KEY_TO_DIRECTION","interval","keyboard","pause","ride","touch","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","items","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","show","activeChildren","_getFirstLevelChildren","dimension","_getDimension","capitalizedDimension","scrollSize","selected","triggerArray","isOpen","selectorElements","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","popperConfig","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","Offcanvas","blur","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","nodeValue","attributeRegex","DefaultAllowlist","area","br","col","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sup","strong","ul","allowList","extraClass","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","templateWrapper","_maybeSanitize","_setContent","templateElement","_putElementInTemplate","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","customClass","delay","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_ACTIVATE","EVENT_CLICK","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","entryIsLowerThanPrevious","_clearActiveClass","targetLinks","_activateParents","listGroup","activeNodes","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","isarray","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encode","pretty","encodeURIComponent","segment","attachKeys","re","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","objectWithoutPropertiesLoose","strGetPlugin","BaseTelemetryPlugin","DEFAULT_VERSION","INVALID_VERSION","INVALID_TRACE_ID","INVALID_SPAN_ID","invalidValue","_formatValue","defValue","_formatFlags","_canUseCookies","_cookieMgrs","memoize","reactPropsRegex","isPropValid","paramsSerializer","serializedParams","hashmarkIndex","request","response","isAxiosError","description","fileName","lineNumber","columnNumber","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","password","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","onreadystatechange","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","cancel","abort","__CANCEL__","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","isNativeReflectConstruct","assertThisInitialized","setDataAttribute","removeDataAttribute","getDataAttributes","getDataAttribute","isSafari","isJsons","row","isArrays","jsonsHeaders","json","jsons2arrays","jsons","headerLabels","headerKeys","label","getHeaderValue","foundValue","elementOrEmpty","joiner","enclosingCharacter","arrays2csv","jsons2csv","string2csv","toCSV","buildURI","uFEFF","csv","blob","Blob","dataURI","URL","webkitURL","createObjectURL","PropsNotForwarded","_react","_propTypes","filename","asyncOnClick","__makeTemplateObject","cooked","__assign","__importDefault","SearchIcon","jsx_runtime_1","styled_components_1","showIcon","jsx","StyledSearchIcon","focusable","xmlns","viewBox","templateObject_1","svg","searchIconMargin","iconColor","utils_1","maxHeight","color","_b","lineSpacing","defaultStyles","backgroundColor","marginTop","borderRadius","TextRow_1","defaultWidths","rows","widths","getRowStyle","createRoot","hydrateRoot","ESCAPE_KEY","TAB_KEY","RIGHT_MOUSE_BUTTON","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","ReactSearchAutocomplete","ReactSearchAutocomplete_js_1","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","stylis_min","K","I","B","J","G","N","ca","O","A","H","X","D","z","da","ea","fa","P","Y","ha","Q","ia","Z","ja","ka","aa","ba","la","ma","R","oa","S","U","T","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","lineHeight","orphans","tabSize","widows","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","loadScript","Stripe","script","scripts","src","findScript","queryString","advancedFraudSignals","headOrBody","injectScript","initStripe","startTime","registerWrapper","stripePromise$1","loadCalled","loadStripe","ReactPlaceholder_1","loadPath","addPath","allowMultiLoading","parsePayload","reloadInterval","customHeaders","queryStringParams","crossDomain","overrideMimeType","requestOptions","mode","credentials","Backend","allOptions","_readAny","loadUrlLanguages","loadUrlNamespaces","resolvedLoadPath","loadUrl","parseErr","finished","dataArray","resArray","_this$services","currentLanguage","fetchApi","XmlHttpRequestApi","ActiveXObjectApi","fetch","ActiveXObject","fetchNode","addQueryString","paramName","fetchIt","fetchOptions","omitFetchOptions","reqOptions","opt","requestWithFetch","requestWithXmlHttpRequest","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","_splitKey","_getKeyResolver","_capitalize","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","range","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","hex","eq","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","V","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","nk","unpacked","tkeys","unpack","transparent","RGB_RE","modHSL","ratio","fromObject","functionParse","rgbParse","Color","hexParse","_rgb","_valid","hexString","hslString","weight","w2","c1","c2","w1","rgb1","rgb2","deg","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","descriptors","getScope$1","scope","_descriptors","borderColor","datasets","chart","platform","getDevicePixelRatio","font","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","_indexable","_fallback","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","radius","rad","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","borderWidth","stroke","_isPointInArea","point","clipArea","clip","unclipArea","_steppedLineTo","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","lines","strokeColor","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","inputs","cacheable","parentContext","_createResolver","rootScopes","getTarget","_resolve","deleteProperty","_keys","_cached","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_cacheable","_proxy","_context","_subProxy","_stack","override","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fb","splineCurveMonotone","pointBefore","pointCurrent","valueAxis","pointsLen","deltaK","mK","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","offsetX","offsetY","box","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","formatter","Intl","NumberFormat","getNumberFormat","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","rtl","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","bounds","prevValue","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","splitByStyles","segmentOptions","chartContext","_chart","readStyle","_datasetIndex","addStyle","st","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","currentStep","_update","_refresh","running","draw","_active","_total","tick","_notify","charts","progress","_getAnims","cur","_duration","animator","interpolators","boolean","factor","c0","valid","Animation","cfg","currentValue","_fn","_easing","easing","_prop","_from","_to","_promises","elapsed","remain","promises","animationOptions","colors","animations","Animations","_properties","configure","animatedProps","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","linkScales","_stacked","addElements","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","xAxisKey","yAxisKey","parsedValue","canStack","otherScale","_getOtherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","updateRangeFromParsed","getParsed","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","computeMinSampleSize","curr","_cache","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","_getSharedOptions","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","updateElement","grouped","skipNull","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","_index_","grid","_value_","beginAtZero","BubbleController","tooltip","DoughnutController","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_getRotationExtents","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","useFinalPosition","getProps","final","defaultRoutes","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","reverseAlign","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","Scale","_margins","paddingTop","paddingBottom","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","fullSize","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","fillRect","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","gz","getSortedVisibleDatasetMetas","axisID","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","_get","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","registry","camelMethod","ScatterController","DateAdapter","chartOptions","amount","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","layout","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","_layers","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","removedNodes","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","PluginService","_init","_createDescriptors","_oldCache","_notifyStateChanges","localIds","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newRatio","onResize","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","outerStartX","outerStartY","outerEndX","outerEndY","lineJoin","fullCircles","drawFullCircleBorders","unregister","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","decimated","samples","maxAreaPoint","maxArea","nextA","bucketWidth","sampledIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","xMin","dx","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","rtlHelper","hitbox","_draw","cursor","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","adjustHitBoxes","afterEvent","handleEvent","ci","Title","_padding","textSize","fontOpts","_drawArgs","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","_willRender","labelCount","Decimation","Filler","SubTitle","addIfString","addedLabels","CategoryScale","_startValue","_valueRange","_addedLabels","added","findOrAddLabel","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","handleTickRangeOptions","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","steps","UNITS","sorter","_adapter","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","minorFormat","majorFormat","_tickFormatFunction","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","nextDataset","currentDataset","cloneData","nextData","noopData","ChartComponent","redraw","dataProp","getDatasetAtEvent","getElementAtEvent","getElementsAtEvent","fallbackContent","onClickProp","canvasRef","chartRef","computedData","setComputedData","renderChart","ChartJS","destroyChart","nextOptions","nativeEvent","createTypedChart","Line","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isPureReactComponent","__self","__source","$$typeof","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","only","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_currentValue","_currentValue2","_threadCount","_defaultValue","_globalName","createFactory","createRef","isValidElement","lazy","_payload","startTransition","unstable_act","useDebugValue","useDeferredValue","useId","useImperativeHandle","useInsertionEffect","useSyncExternalStore","useTransition","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","setAttributeNS","xlinkHref","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","Ra","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","ab","bb","db","eb","defaultSelected","gb","hb","ib","jb","kb","lb","mb","namespaceURI","MSApp","execUnsafeLocalFunction","ob","lastChild","pb","gridArea","lineClamp","qb","rb","sb","tb","menuitem","embed","keygen","link","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ed","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","returnValue","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","pageX","pageY","getModifierState","zd","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","targetTouches","changedTouches","Xd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","tel","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","Pe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","sf","tf","uf","parentWindow","vf","wf","xa","$a","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","bh","ch","eventTime","lane","dh","eh","fh","gh","ih","jh","kh","nh","_reactInternals","mh","oh","shouldComponentUpdate","ph","qh","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","sh","_stringRef","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ji","ki","getSnapshot","mi","ni","lastEffect","stores","oi","pi","qi","ri","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useMutableSource","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","autoFocus","Hj","Ij","Jj","Kj","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","bk","ck","dk","ek","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","pk","qk","rk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","pl","ql","sl","rl","unmount","unstable_scheduleHydration","form","usingClientEntryPoint","Events","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","wl","supportsFiber","createPortal","dl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","sortIndex","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","channel","installMessageChannelImplementation","installReadyStateChangeImplementation","task","ReactPropTypesSecret","bigint","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","spread","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","normalizedName","expires","domain","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","protocol","hostname","port","requestURL","pkg","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","schema","allowUnknown","executor","resolvePromise","jsxs","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","actions","defaultRenderer","emptyRenderer","defaultColumn","Cell","minWidth","mergeProps","propList","makePropGetter","userProps","handlePropGetter","prevProps","reduceHooks","allowUndefined","loopHooks","ensurePluginOrder","befores","pluginName","afters","functionalUpdate","old","useGetLatest","safeUseLayoutEffect","useMountedLayoutEffect","mountedRef","makeRenderer","Comp","flexRender","linkColumnStructure","assignColumnAccessor","flattenColumns","flattenBy","accessor","Header","accessorPath","def","pathObj","pathObjCache","flattenDeep","newArr","reOpenBracket","reCloseBracket","pathPart","decorateColumn","userDefaultColumn","Footer","originalWidth","makeHeaderGroups","allColumns","additionalHeaderProperties","headerGroups","scanColumns","headerGroup","parentColumns","hasParents","newParent","latestParentColumn","originalId","placeholderOf","getFirstDefined","flat","recurse","expandRows","manualExpandedKey","expanded","expandSubRows","expandedRows","handleRow","addToExpandedRows","isExpanded","canExpand","subRows","getFilterMethod","userFilterTypes","filterTypes","shouldAutoRemoveFilter","autoRemove","unpreparedAccessWarning","defaultGetTableProps","defaultGetTableBodyProps","defaultGetHeaderProps","colSpan","totalVisibleHeaderCount","defaultGetFooterProps","defaultGetHeaderGroupProps","defaultGetFooterGroupProps","defaultGetRowProps","defaultGetCellProps","cell","makeDefaultPluginHooks","useOptions","stateReducers","useControlledState","columnsDeps","allColumnsDeps","accessValue","materializedColumns","materializedColumnsDeps","useInstanceAfterData","visibleColumns","visibleColumnsDeps","headerGroupsDeps","useInstanceBeforeDimensions","useInstance","prepareRow","getTableProps","getTableBodyProps","getHeaderGroupProps","getFooterGroupProps","getHeaderProps","getFooterProps","getRowProps","getCellProps","useFinalInstance","resetHiddenColumns","toggleHideColumn","setHiddenColumns","toggleHideAllColumns","useColumnVisibility","getToggleHiddenProps","defaultGetToggleHiddenProps","getToggleHideAllColumnsProps","defaultGetToggleHideAllColumnsProps","hiddenColumns","toggleHidden","allColumnsHidden","indeterminate","initialState","columnId","handleColumn","parentVisible","subColumn","subHeader","flatHeaders","getHooks","autoResetHiddenColumns","getAutoResetHiddenColumns","defaultInitialState","defaultColumnInstance","defaultReducer","prevState","defaultGetSubRows","defaultGetRowId","defaultUseControlledState","applyDefaults","getSubRows","getRowId","stateReducer","calculateHeaderWidths","sumTotalMinWidth","sumTotalWidth","sumTotalMaxWidth","sumTotalFlexWidth","subHeaders","totalLeft","totalMinWidth","totalMaxWidth","totalFlexWidth","canResize","accessRowsForColumn","flatRows","rowsById","accessValueHooks","originalRow","rowIndex","accessRow","parentRows","originalSubRows","cells","resetExpanded","toggleRowExpanded","toggleAllRowsExpanded","useExpanded","getToggleAllRowsExpandedProps","defaultGetToggleAllRowsExpandedProps","getToggleRowExpandedProps","defaultGetToggleRowExpandedProps","isAllRowsExpanded","rowId","setExpanded","shouldExist","paginateExpandedRows","autoResetExpanded","getAutoResetExpanded","expandedDepth","maxDepth","splitId","preExpandedRows","ids","filterValue","rowValue","exactText","exactTextCase","includesAll","includesSome","includesValue","equals","resetFilters","setFilter","setAllFilters","useFilters","filters","filterMethod","previousfilter","newFilter","manualFilters","defaultCanFilter","disableFilters","autoResetFilters","columnDefaultCanFilter","columnDisableFilters","canFilter","filteredFlatRows","filteredRowsById","filterRows","filteredRows","filteredSoFar","preFilteredRows","getAutoResetFilters","preFilteredFlatRows","preFilteredRowsById","resetGlobalFilter","setGlobalFilter","useGlobalFilter","globalFilter","manualGlobalFilter","globalFilterValue","autoResetGlobalFilter","disableGlobalFilter","columnDisableGlobalFilter","filterableColumns","globalFilteredRows","globalFilteredFlatRows","globalFilteredRowsById","getAutoResetGlobalFilter","preGlobalFilteredRows","preGlobalFilteredFlatRows","preGlobalFilteredRowsById","sum","aggregatedValues","nums","emptyArray","emptyObject","resetGroupBy","setGroupBy","toggleGroupBy","useGroupBy","getGroupByToggleProps","defaultGetGroupByToggleProps","groupBy","canGroupBy","resolvedGroupBy","groupByColumns","nonGroupByColumns","isGrouped","groupedIndex","defaultUserAggregations","groupByFn","defaultGroupByFn","manualGroupBy","aggregations","userAggregations","autoResetGroupBy","disableGroupBy","defaultCanGroupBy","defaultColumnGroupBy","defaultGroupBy","columnDisableGroupBy","Aggregated","existingGroupBy","groupedFlatRows","groupedRowsById","onlyGroupedFlatRows","onlyGroupedRowsById","nonGroupedFlatRows","nonGroupedRowsById","groupedRows","groupUpRecursively","parentId","rowGroupsMap","groupByVal","leafRows","aggregateFn","aggregate","groupedValues","leafValues","columnValue","aggregateValue","aggregateValueFn","groupByID","subRow","getAutoResetGroupBy","preGroupedRows","preGroupedFlatRow","preGroupedRowsById","allCells","isPlaceholder","isAggregated","resKey","reSplitAlphaNumeric","compareBasic","getRowValuesByColumnID","row1","row2","rowA","rowB","an","bn","combo","alower","blower","replaceNonNumeric","resetSortBy","setSortBy","toggleSortBy","clearSortBy","sortType","sortDescFirst","useSortBy","getSortByToggleProps","defaultGetSortByToggleProps","isMultiSortEvent","canSort","disableMultiSort","sortBy","sortAction","multi","disableSortRemove","disableMultiRemove","maxMultiSortColCount","existingSortBy","existingIndex","hasDescDefined","newSortBy","orderByFn","defaultOrderByFn","userSortTypes","sortTypes","manualSortBy","defaultCanSort","disableSortBy","autoResetSortBy","defaultColumnCanSort","columnDisableSortBy","columnSort","isSorted","sortedIndex","isSortedDesc","sortedFlatRows","availableSortBy","sortData","sortedData","sortMethod","sortInverted","sortedRows","getAutoResetSortBy","preSortedRows","preSortedFlatRows","funcs","dirs","sortFn","sortInt","resetPage","gotoPage","setPageSize","usePagination","pageSize","pageIndex","pageCount","page","newPageIndex","canNavigate","topRowIndex","autoResetPage","userPageCount","manualPagination","getAutoResetPage","pageOptions","pageStart","pageEnd","canPreviousPage","canNextPage","previousPage","nextPage","resetPivot","togglePivot","_UNSTABLE_usePivotColumns","getPivotToggleProps","defaultGetPivotToggleProps","defaultPivotColumns","canPivot","pivotColumns","setPivot","resolvedPivot","isPivotSource","uniqueValues","materialized","sourceColumns","newMaterialized","buildPivotColumns","pivotFilters","pivotColumn","columnGroup","PivotHeader","uniqueValue","isPivotGroup","pivotValue","sourceColumn","isPivoted","autoResetPivot","manaulPivot","disablePivot","defaultCanPivot","defaultColumnPivot","defaultPivot","columnDisablePivot","getAutoResetPivot","resetSelectedRows","toggleAllRowsSelected","toggleRowSelected","toggleAllPageRowsSelected","useRowSelect","getToggleRowSelectedProps","defaultGetToggleRowSelectedProps","getToggleAllRowsSelectedProps","defaultGetToggleAllRowsSelectedProps","getToggleAllPageRowsSelectedProps","defaultGetToggleAllPageRowsSelectedProps","manualRowSelectedKey","isSelected","isSomeSelected","isAllRowsSelected","selectedRowIds","isAllPageRowsSelected","setSelected","selectAll","selectSubRows","newSelectedRowIds","handleRowById","autoResetSelectedRows","selectedFlatRows","getRowIsSelected","allChildrenSelected","someSelected","getAutoResetSelectedRows","defaultInitialRowStateAccessor","defaultInitialCellStateAccessor","setRowState","setCellState","resetRowState","useRowState","initialRowStateAccessor","initialCellStateAccessor","rowState","oldRowState","oldCellState","cellState","autoResetRowState","getAutoResetRowState","resetColumnOrder","setColumnOrder","useColumnOrder","columnOrder","columnOrderCopy","columnsCopy","columnsInOrder","targetColumnId","foundIndex","columnStartResizing","columnResizing","columnDoneResizing","resetResize","useResizeColumns","getResizerProps","defaultGetResizerProps","onResizeStart","isTouchEvent","raf","mostRecentClientX","headerIdWidths","leafHeaders","recurseHeader","dispatchEnd","cancelAnimationFrame","dispatchMove","scheduleDispatchMoveOnNextAnimationFrame","clientXPos","handlersAndEvents","mouse","moveEvent","moveHandler","upEvent","upHandler","passiveIfSupported","supported","columnWidth","onMouseDown","onTouchStart","draggable","columnWidths","isResizingColumn","percentageDeltaX","newColumnWidths","headerId","headerWidth","disableResizing","isResizing","autoResetResize","getAutoResetResize","resetResizing","cellStyles","useAbsoluteLayout","getRowStyles","totalColumnsWidth","useBlockLayout","useFlexLayout","totalColumnsMinWidth","useGridLayout","gridTemplateColumns","gridLayout","startWidths","getElementWidth","minWidths","maxWidths","headerIdGridWidths","defaultFn","defaultWait","debounceRef","getDefaultFn","getDefaultWait","userColumns","getStateReducer","reducerState","allColumnsQueue","initialRows","visibleColumnsDep","totalColumnsMaxWidth","footerGroups","superPropBase","CSVLink","CSVDownload","_Download2","_interopRequireDefault","_Link2","_react2","_core","_metaProps","_React$Component","specs","isAsync","msSaveOrOpenBlob","csvData","msSaveBlob","proceed","handleLegacy","handleAsyncClick","handleSyncClick","_props2","download","handleClick","moment","cachedGuess","zones","links","countries","guesses","logError","momentVersion","charCodeToInt","unpackBase60","whole","fractional","multiplier","arrayToInt","mapIndices","indices","untils","intToUntil","abbrs","population","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","addLink","normal0","normal1","needsOffset","isUnixTimestamp","_index","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","abbrWrap","_z","resetZoneWrap","defaultZone","setDefault","webpackPolyfill","__createBinding","k2","__setModuleDefault","__importStar","MAX_RESULTS","DEFAULT_INPUT_DEBOUNCE","fuse_js_1","react_1","config_1","Results_1","SearchInput_1","_c","fuseOptions","defaultFuseOptions","inputDebounce","onSearch","_g","onSelect","_h","_j","onClear","_k","showClear","_m","maxResults","_o","placeholder","_p","_q","styling","resultStringKeyName","inputSearchString","formatResult","_t","showNoResults","_u","showNoResultsText","_v","showItemsOnFocus","maxLength","defaultTheme","fuse","setCollection","searchString","setSearchString","_y","results","setResults","highlightedItem","setHighlightedItem","_0","isSearchComplete","setIsSearchComplete","_1","isTyping","setIsTyping","_2","showNoResultsFlag","setShowNoResultsFlag","_3","hasFocus","setHasFocus","timeoutId","fuseResults","handleDocumentClick","eraseResults","callOnSearch","keyword","newResults","handleOnSearch","handleSetHighlightedItem","setValues","StyledReactSearchAutocomplete","boxShadow","baseToString","isBoolean","isObjectLike","isDefined","isBlank","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","KeyStore","_keyMap","totalWeight","keyId","getFn","createKeyPath","createKeyId","AdvancedOptions","useExtendedSearch","deepGet","ignoreLocation","ignoreFieldNorm","fieldNormWeight","isCaseSensitive","includeScore","shouldSort","includeMatches","findAllMatches","minMatchCharLength","SPACE","FuseIndex","norm","mantissa","numTokens","isCreated","setIndexRecords","docs","records","_keysMap","docIndex","_addString","_addObject","keyIndex","subRecords","nestedArrIndex","subRecord","createIndex","myIndex","setKeys","setSources","computeScore$1","expectedLocation","accuracy","proximity","MAX_BITS","patternAlphabet","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","binMin","binMid","bitArr","charMatch","isMatch","matchmask","convertMaskToIndices","createPatternAlphabet","BitapSearch","chunks","addChunk","alphabet","remainder","allIndices","totalScore","hasMatches","BaseMatch","getMatch","multiRegex","singleRegex","ExactMatch","InverseExactMatch","PrefixExactMatch","InversePrefixExactMatch","SuffixExactMatch","InverseSuffixExactMatch","FuzzyMatch","_bitapSearch","searchIn","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","MultiMatchSet","ExtendedSearch","queryItem","searcher","isMultiMatch","isSingleMatch","parseQuery","numMatches","qLen","pLen","registeredSearchers","createSearcher","searcherClass","LogicalOperator","KeyType","PATH","PATTERN","isExpression","isPath","isLeaf","convertToExplicit","isQueryPath","operator","transformMatches","refIndex","transformScore","Fuse","_keyStore","_docs","_myIndex","predicate","removeAt","_searchStringList","_searchObjectList","_searchLogical","computeScore","transformers","transformer","expression","evaluate","_findMatches","getValueForItemAtKeyId","resultMap","expResults","parseIndex","placeholderColor","clearIconMargin","immediate","SearchIcon_1","formatResultWithKey","ResultsWrapper","handleMouseDown","StyledResults","ClearIcon_1","manualFocus","maxLengthProperty","StyledSearchInput","spellCheck","onKeyDown","ClearIcon","setFocus","StyledClearIcon","__rest","placeholders","readyProp","ready","firstLaunchOnly","showLoadingAnimation","customPlaceholder","setReady","mergedCustomClasses","Placeholder","getFiller","media","textRow","MediaBlock","TextBlock","RectShape","RoundShape","TextRow","RoundShape_1","RectShape_1","TextBlock_1","MediaBlock_1","defaultStyle","marginRight","minHeight","__assignFn","__extendsFn","__","__spreadArrayFn","ignore","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","i18nOptions","addUsedNamespaces","getT","getFixedT","nsMode","_useState","_useState2","setT","joinedNS","previousJoinedNS","boundReset","isInitial","ReactPlugin","PerformanceEvents","PerformanceEventStatus","CryptoKeyStoreNames","IntFields","ServerError","JoseHeaderErrorMessage","JoseHeaderError","createMissingKidError","createMissingAlgError","typ","alg","kid","shrHeaderOptions","shrHeader","JoseHeader","Jwt","decimalToHex","generateGuid","Uint8Array","getRandomValues","MathUtils","guidHolder","guidResponse","isGuid","guid","stringToUtf8Arr","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","aBytes","nIdx","nChrIdx","stringToArrayBuffer","dataString","dataView","utf8ArrToString","sView","nPart","nLen","getSortedObjectString","urlEncode","urlEncodeArr","inputArr","base64EncArr","inputUtf8Arr","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","nUint6","encodedString","base64DecToArr","base64String","nBlockSize","nInLen","nOutLen","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","BrowserAuthErrorMessage","BrowserAuthError","createPkceNotGeneratedError","createCryptoNotAvailableError","createHttpMethodNotImplementedError","createEmptyNavigationUriError","createEmptyHashError","hashValue","createHashDoesNotContainStateError","createHashDoesNotContainKnownPropertiesError","createUnableToParseStateError","createStateInteractionTypeMismatchError","createInteractionInProgressError","createPopupWindowError","createEmptyWindowCreatedError","createUserCancelledError","createMonitorPopupTimeoutError","createMonitorIframeTimeoutError","createRedirectInIframeError","windowParentCheck","createBlockReloadInHiddenIframeError","createBlockAcquireTokenInPopupsError","createIframeClosedPrematurelyError","createSilentLogoutUnsupportedError","createNoAccountError","createSilentPromptValueError","givenPrompt","createUnableToParseTokenRequestCacheError","createNoTokenRequestCacheError","createAuthRequestNotSetError","createNoCachedAuthorityError","createNonBrowserEnvironmentError","createDatabaseNotOpenError","createNoNetworkConnectivityError","createPostRequestFailedError","errorDesc","createGetRequestFailedError","createFailedToParseNetworkResponseError","createUnableToLoadTokenError","errorDetail","createSigningKeyNotFoundInStorageError","createAuthCodeRequiredError","createAuthCodeOrNativeAccountIdRequiredError","createDatabaseUnavailableError","createUnableToAcquireTokenFromNativePlatformError","createNativeHandshakeTimeoutError","createNativeExtensionNotInstalledError","createNativeConnectionNotEstablishedError","createNativeBrokerCalledBeforeInitialize","createNativePromptParameterNotSupportedError","base64Encode","generateCodes","codeVerifier","generateCodeVerifier","generateCodeChallengeFromVerifier","codeChallenge","verifier","challenge","pkceCodeVerifier","sha256Digest","pkceHashedCodeVerifier","dataBuffer","generateKey","extractable","keyUsages","subtle","exportKey","importKey","keyData","initPrng","entropy","msrCrypto","msGenerateKey","msExportKey","resultBuffer","resultString","keyString","keyBuffer","msImportKey","msSign","digestOperation","PKCS1_V15_KEYGEN_ALG","S256_HASH_ALG","MODULUS_LENGTH","PUBLIC_EXPONENT","cryptoOptions","hasBrowserCrypto","subtleCrypto","hasIECrypto","hasMsrCrypto","useMsrCrypto","keygenAlgorithmOptions","modulusLength","publicExponent","generateKeyPair","usages","exportJwk","importJwk","dbName","tableName","dbOpen","openDB","indexedDB","createObjectStore","closeConnection","validateDbIsOpen","getItem","dbGet","transaction","objectStore","setItem","dbPut","put","removeItem","dbDelete","getKeys","dbGetKeys","getAllKeys","containsKey","dbContainsKey","deleteDatabase","deleteDbRequest","cacheKeys","storeName","inMemoryCache","MemoryStorage","indexedDBCache","handleDatabaseAccessError","clearInMemory","clearPersistent","dbDeleted","asymmetricKeys","symmetricKeys","performanceClient","cryptoConfig","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","createNewGuid","generatePkceCodes","getPublicKeyThumbprint","publicKeyThumbMeasurement","startMeasurement","CryptoOptsGetPublicKeyThumbprint","CryptoOps","EXTRACTABLE","POP_KEY_USAGES","keyPair","publicKey","publicKeyJwk","pubKeyThumprintObj","kty","publicJwkString","hashString","publicJwkHash","privateKey","privateKeyJwk","unextractablePrivateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","endMeasurement","removeTokenBindingKey","clearKeystore","signJwt","signJwtMeasurement","CryptoOptsSignJwt","cachedKeyPair","publicKeyJwkString","encodedKeyIdThumbprint","getShrHeaderString","encodedShrHeader","cnf","jwk","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","signedJwt","plainText","hashBuffer","hashBytes","clientId","libraryName","libraryVersion","applicationTelemetry","eventsByCorrelationId","staticFieldsByCorrelationId","measurementsById","queueMeasurements","preQueueTimeByCorrelationId","countersByCorrelationId","startPerformanceMeasurement","measureName","startPerformanceMeasuremeant","getIntFields","getPreQueueTime","preQueueTimesByEvents","calculateQueuedTime","preQueueTime","currentTime","addQueueMeasurement","queueTime","queueMeasurement","existingMeasurements","measurementArray","validMeasurement","eventCorrelationId","generateId","performanceMeasuremeant","performanceMeasurement","inProgressEvent","eventId","InProgress","startTimeMs","cacheEventByCorrelationId","staticFields","appName","appVersion","addStaticFields","cacheMeasurement","completedEvent","flushMeasurement","flushMeasurements","discardMeasurement","discardMeasurements","fields","counters","measurement","durationMs","Completed","existingStaticFields","queueMeasurementForCorrelationId","totalQueueTime","totalQueueCount","eventsForCorrelationId","discardCache","sortedCompletedEvents","eventA","eventB","topLevelEvents","topLevelEvent","eventToEmit","subMeasurementName","finalEvent","queuedTimeMs","queuedCount","incompleteSubsCount","truncateIntegralFields","emitEvents","intFields","StubPerformanceMeasurement","setPreQueueTime","DEFAULT_CRYPTO_IMPLEMENTATION","createUnexpectedError","_initRegex","CredentialEntity","credentialRegexMap","credKey","credVal","credentialDomainRegex","generateAccountIdForCacheKey","generateCredentialId","generateCredentialIdForCacheKey","credentialType","familyId","generateTarget","generateTargetForCacheKey","generateCredentialKey","generateCredentialCacheKey","tokenType","requestedClaimsHash","ID_TOKEN","ACCESS_TOKEN","ACCESS_TOKEN_WITH_AUTH_SCHEME","REFRESH_TOKEN","generateClaimsHashForCacheKey","generateSchemeForCacheKey","BEARER","CcsCredentialType","ClientConfigurationErrorMessage","ClientConfigurationError","claimsRequestParseError","urlString","urlParseError","createUrlEmptyError","createEmptyScopesArrayError","inputScopes","promptValue","createInvalidClaimsRequestError","createEmptyLogoutRequestError","createEmptyTokenRequestError","createInvalidCodeChallengeMethodError","createInvalidCodeChallengeParamsError","createInvalidCloudDiscoveryMetadataError","createInvalidAuthorityMetadataError","createUntrustedAuthorityError","createInvalidAzureCloudInstanceError","createMissingSshJwkError","createMissingSshKidError","createMissingNonceAuthenticationHeadersError","createInvalidAuthenticationHeaderError","invalidHeaderName","details","scopeArr","trimArrayEntries","filteredInput","removeEmptyStringsFromArray","validateInputScopes","inputScopeString","ScopeSet","lowerCaseScopesSet","printScopesLowerCase","scopeSet","asArray","containsScope","containsOnlyOIDCScopes","defaultScopeCount","defaultScope","newScope","newScopes","appendScope","createAppendScopeSetError","createRemoveEmptyScopeFromSetError","removeOIDCScopes","otherScopes","unionScopes","unionScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","printScopes","rawToken","AuthToken","extractTokenClaims","encodedToken","decodedToken","decodeAuthToken","base64TokenPayload","base64Decoded","checkMaxAge","authTime","maxAge","cryptoImpl","getAccountsFilteredBy","accountValues","accountKey","accountInfo","CacheManager","readIdTokenFromCache","cacheRecord","setAccount","setIdTokenCredential","accessToken","saveAccessToken","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","currentTokenCache","getCredentialsFilteredBy","currentScopes","fromString","currentAccessTokens","accessTokens","tokenEntity","intersectingScopeSets","removeCredential","setAccessTokenCredential","accountFilter","getAccountsFilteredByInternal","allCacheKeys","matchingAccounts","getAccount","matchHomeAccountId","matchEnvironment","matchRealm","matchNativeAccountId","getCredentialsFilteredByInternal","userAssertionHash","matchingCredentials","idTokens","refreshTokens","credType","getCredentialType","getSpecificCredential","matchUserAssertionHash","matchCredentialType","matchClientId","matchFamilyId","matchTarget","matchTokenType","SSH","matchKeyId","updatedCacheKey","updateCredentialCacheKey","getAppMetadataFilteredByInternal","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","removeAllAccounts","removedAccounts","removeAccount","removeAccountContext","ACCOUNT","removedCredentials","cacheEntity","POP","CREDENTIAL","removeAppMetadata","cachedAccount","readAccountFromCache","cachedIdToken","cachedAccessToken","readAccessTokenFromCache","cachedRefreshToken","readRefreshTokenFromCache","cachedAppMetadata","readAppMetadataFromCache","accountCache","idTokenFilter","credentialCache","numIdTokens","authScheme","authenticationScheme","accessTokenFilter","sshKid","numAccessTokens","familyRT","refreshTokenFilter","appMetadataFilter","getAppMetadataFilteredBy","appMetadataEntries","numAppMetadata","isAppMetadataFOCI","cloudMetadata","getAuthorityMetadataByAlias","entityScopeSet","requestTargetScopeSet","removeScope","containsScopeSet","getIdTokenCredential","getAccessTokenCredential","getRefreshTokenCredential","setServerTelemetry","getServerTelemetry","setAuthorityMetadata","setThrottlingCache","getThrottlingCache","idTokenEntity","IdTokenEntity","nowSeconds","isTokenExpired","expiresOn","expirationSec","TimeUtils","cachedAt","createAccessTokenEntity","extExpiresOn","cryptoUtils","refreshOn","requestedClaims","atEntity","AccessTokenEntity","extendedExpiresOn","tokenClaims","createRefreshTokenEntity","rtEntity","RefreshTokenEntity","generateAppMetadataKey","AppMetadataEntity","generateAppMetadataCacheKey","createAppMetadataEntity","isAppMetadataEntity","failedRequests","cacheHits","isServerTelemetryEntity","validateKey","validateEntity","expiresAt","updateCloudDiscoveryMetadata","metadata","fromNetwork","preferred_cache","preferred_network","aliasesFromNetwork","updateEndpointMetadata","authorization_endpoint","token_endpoint","end_session_endpoint","issuer","endpointsFromNetwork","jwks_uri","canonical_authority","resetExpiresAt","isExpired","isAuthorityMetadataEntity","isThrottlingEntity","setRequestState","userState","libraryState","ProtocolUtils","generateLibraryState","createNoCryptoObjectError","stateObj","stateString","parseRequestState","splitState","libraryStateString","libraryStateObj","userRequestState","ProtocolMode","AzureCloudInstance","cacheLocation","validateWindowStorage","windowStorage","LocalStorage","SessionStorage","_urlString","getHash","UrlString","canonicalizeUri","lowerCaseUrl","validateAsUri","components","getUrlComponents","createUrlParseError","HostNameAndPort","PathSegments","Protocol","createInsecureAuthorityUriError","appendQueryString","urlObject","pathArray","COMMON","ORGANIZATIONS","constructAuthorityUriFromObject","parseHash","regEx","urlComponents","AbsolutePath","QueryString","pathSegments","getAbsoluteUrl","relativeUrl","baseUrl","baseComponents","hashIndex1","hashIndex2","queryIndex1","queryIndex2","parsedHash","deserializedHash","queryStringToObject","createHashNotDeserializedError","parsedQueryString","parseQueryString","deserializedQueryString","parameters","getDeserializedHash","error_description","extractBrowserRequestState","parseServerResponseFromHash","locationHash","hashUrlString","cacheConfig","COOKIE_LIFE_MULTIPLIER","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","migrateCacheEntries","idTokenKey","clientInfoKey","errorKey","ERROR","errorDescKey","ERROR_DESC","migrateCacheEntry","newKey","setTemporaryCache","validateAndParseJson","jsonValue","parsedJson","parsedAccount","isAccountEntity","parsedIdToken","isIdTokenEntity","accessTokenKey","parsedAccessToken","isAccessTokenEntity","refreshTokenKey","parsedRefreshToken","isRefreshTokenEntity","appMetadataKey","parsedMetadata","serverTelemetryKey","serverTelemetry","setWrapperMetadata","wrapperSKU","wrapperVersion","WRAPPER_SKU","WRAPPER_VER","getWrapperMetadata","activeAccountKeyFilters","generateCacheKey","ACTIVE_ACCOUNT_FILTERS","activeAccountValueFilters","activeAccountKeyLocal","ACTIVE_ACCOUNT","activeAccountValueLocal","activeAccount","getAccountInfoByFilter","activeAccountValueObj","activeAccountKey","activeAccountValue","getAccountInfoByHints","loginHint","sid","accountSid","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","storeAuthStateInCookie","itemCookie","getItemCookie","setItemCookie","clearItemCookie","cookieName","cookieStr","getCookieExpirationTime","secureCookies","cookieList","clearMsalCookies","cookiePrefix","cookieKey","cookieLifeDays","today","getCache","setCache","ADAL_ID_TOKEN","generateAuthorityKey","stateId","AUTHORITY","generateNonceKey","NONCE_IDTOKEN","generateStateKey","REQUEST_STATE","getCachedAuthority","cachedState","stateCacheKey","authorityCacheKey","updateCacheEntries","authorityInstance","nonceCacheKey","ccsCredential","HOME_ACCOUNT_ID","CCS_CREDENTIAL","UPN","resetRequestCache","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","CORRELATION_ID","NATIVE_REQUEST","setInteractionInProgress","cleanRequestByState","stateKey","cleanRequestByInteractionType","stateValue","parsedState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","cachedAuthority","getCachedNativeRequest","cachedRequest","isInteractionInProgress","getInteractionInProgress","INTERACTION_STATUS_KEY","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","currentCacheKey","cacheItem","getRedirectRequestContext","REDIRECT_CONTEXT","setRedirectRequestContext","cacheOptions","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","preventCorsPreflight","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","cpu","os","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","tenant","application","StubbedNetworkModule","GET","getFetchHeaders","onLine","getHeaderDict","reqBody","POST","Headers","optionsHeaders","headerDict","sendRequestAsync","xhr","setXhrHeaders","onload","jsonResponse","networkResponse","headerArr","headerName","headerVal","clearHash","origin","replaceHash","urlParts","isInIframe","isInPopup","opener","getCurrentUri","getHomepage","getBrowserNetworkClient","blockReloadInHiddenIframes","hashContainsKnownProperties","BrowserUtils","blockRedirectInIframe","allowRedirectInIframe","isIframedApp","blockAcquireTokenInPopups","blockNonBrowserEnvironment","isBrowserEnvironment","blockNativeBrokerCalledBeforeInitialized","allowNativeBroker","detectIEOrEdge","msie11","msedge","navigateInternal","NavigationClient","defaultNavigateWindow","navigateExternal","noHistory","DEFAULT_POPUP_TIMEOUT_MS","DEFAULT_IFRAME_TIMEOUT_MS","DEFAULT_REDIRECT_TIMEOUT_MS","DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS","KeyLocation","eventCallbacks","listeningToStorageEvents","handleAccountCacheChange","emitEvent","cacheValue","ACCOUNT_ADDED","ACCOUNT_REMOVED","thumbprint","preProcess","cacheManager","ThrottlingUtils","generateThrottlingStorageKey","throttleTime","THROTTLING","errorCodes","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","RETRY_AFTER","error_codes","currentSeconds","homeAccountIdentifier","shrClaims","networkClient","sendPostRequest","tokenEndpoint","redirectUri","promptValues","createInvalidPromptError","validateCodeChallengeParams","codeChallengeMethod","validateCodeChallengeMethod","sanitizeEQParams","eQParams","queryParams","fromEntries","addResponseTypeCode","RESPONSE_TYPE","addResponseTypeForTokenAndIdToken","responseMode","RESPONSE_MODE","QUERY","addNativeBroker","NATIVE_BROKER","addOidcScopes","requestScopes","SCOPE","CLIENT_ID","validateRedirectUri","REDIRECT_URI","POST_LOGOUT_URI","idTokenHint","ID_TOKEN_HINT","domainHint","DOMAIN_HINT","LOGIN_HINT","CCS_HEADER","SID","addClaims","clientCapabilities","mergedClaims","addClientCapabilitiesToClaims","validateClaims","CLIENT_REQUEST_ID","libraryInfo","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","appTelemetry","X_APP_NAME","X_APP_VER","validatePrompt","PROMPT","STATE","NONCE","addCodeChallengeParams","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","CODE","DEVICE_CODE","CODE_VERIFIER","CLIENT_SECRET","CLIENT_ASSERTION","clientAssertionType","CLIENT_ASSERTION_TYPE","oboAssertion","OBO_ASSERTION","tokenUse","REQUESTED_TOKEN_USE","grantType","GRANT_TYPE","addClientInfo","sanitizedEQParams","XMS_CC","cnfString","TOKEN_TYPE","REQ_CNF","sshJwkString","serverTelemetryManager","X_CLIENT_CURR_TELEM","generateCurrentRequestHeaderValue","X_CLIENT_LAST_TELEM","generateLastRequestHeaderValue","addThrottling","X_MS_LIB_CAPABILITY","logoutHint","LOGOUT_HINT","createQueryString","queryParameterArray","configuration","authOptions","userAuthOptions","userSystemOptions","userLoggerOption","storageImplementation","networkImplementation","cryptoImplementation","clientCredentials","telemetry","persistencePlugin","serializableCache","azureCloudOptions","skipAuthorityMetadataCache","systemOptions","storageInterface","networkInterface","cryptoInterface","buildClientConfiguration","networkManager","ccsCred","CONTENT_TYPE","clearTelemetryCache","updatedAuthority","discoveryComplete","createEndpointDiscoveryIncompleteError","parameterBuilder","tokenQueryParameters","addExtraQueryParameters","accountEntity","accessTokenEntity","refreshTokenEntity","appMetadataEntity","PopTokenGenerateCnf","PopTokenGenerateKid","generateKid","reqCnf","reqCnfString","reqCnfHash","xms_ksl","SW","signPopToken","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","ts","client_claims","tokenCache","hasChanged","cacheStorage","validateServerAuthorizationCodeResponse","serverResponseHash","createStateNotFoundError","trace_id","correlation_id","client_info","serverResponse","errString","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","forceCacheRefreshTokenResponse","serverRequestId","HandleServerTokenResponse","id_token","idTokenObj","auth_time","generateHomeAccountId","requestStateObj","key_id","generateCacheRecord","cacheContext","TokenCacheContext","beforeCacheAccess","saveCacheRecord","ResponseHandler","generateAuthenticationResult","afterCacheAccess","spa_code","createIdTokenEntity","generateAccountEntity","access_token","responseScopes","expiresIn","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","token_type","refresh_token","foci","CacheRecord","cloud_graph_host_name","msGraphhost","msgraph_host","protocolMode","fromTokenCache","requestState","requestId","popTokenGenerator","canonicalAuthority","uniqueId","fromCache","fromNativeBroker","GetAuthCodeUrl","AuthClientCreateQueryString","createAuthCodeUrlQueryString","authorizationEndpoint","acquireToken","AuthClientAcquireToken","atsMeasurement","AuthClientExecuteTokenRequest","executeTokenRequest","X_MS_REQUEST_ID","httpVerAuthority","X_MS_HTTP_VERSION","responseHandler","validateTokenResponse","subErrorCode","handleFragmentResponse","hashFragment","serverParams","logoutRequest","createLogoutUrlQueryString","endSessionEndpoint","AuthClientCreateTokenRequestBody","queryParametersString","createTokenQueryParameters","createTokenRequestBody","requestBody","createTokenRequestHeaders","executePostToTokenEndpoint","addClientId","includeRedirectUri","addRedirectUri","addAuthorizationCode","addLibraryInfo","addApplicationTelemetry","addServerTelemetry","addCodeVerifier","addClientSecret","addClientAssertion","assertion","addClientAssertionType","assertionType","addGrantType","AUTHORIZATION_CODE_GRANT","generateCnf","reqCnfData","addPopToken","sshJwk","addSshJwk","addCorrelationId","isEmptyObj","addCcsOid","addCcsUpn","tokenBodyParameters","enableSpaAuthorizationCode","RETURN_SPA_CODE","extraScopesToConsent","addResponseMode","addPrompt","addDomainHint","addSid","extractAccountSid","accountLoginHintClaim","extractLoginHint","addLoginHint","addNonce","addState","extraQueryParameters","nativeBroker","postLogoutRedirectUri","addPostLogoutRedirectUri","addIdTokenHint","addLogoutHint","login_hint","isOpenIdConfigResponse","EndpointMetadata","InstanceDiscoveryMetadata","NativeStatusCode","detectRegion","environmentRegion","regionDiscoveryMetadata","RegionDiscoveryDetectRegion","autodetectedRegionName","RegionDiscovery","IMDS_OPTIONS","RegionDiscoveryGetRegionFromIMDS","getRegionFromIMDS","localIMDSVersionResponse","httpSuccess","region_source","IMDS","httpBadRequest","RegionDiscoveryGetCurrentVersion","getCurrentVersion","currentIMDSVersion","FAILED_AUTO_DETECTION","currentIMDSVersionResponse","ENVIRONMENT_VARIABLE","Metadata","authorityOptions","_canonicalAuthority","region_used","region_outcome","regionDiscovery","canonicalAuthorityUrlComponents","_canonicalAuthorityUrlComponents","replacePath","replaceTenant","cachedAuthorityParts","currentPart","cachedPart","OIDC","resolveEndpointsAsync","AuthorityResolveEndpointsAsync","metadataEntity","hostnameAndPort","updateCanonicalAuthority","AuthorityUpdateCloudDiscoveryMetadata","cloudDiscoverySource","AuthorityUpdateEndpointMetadata","endpointSource","CACHE","generateAuthorityMetadataCacheKey","getEndpointMetadataFromConfig","CONFIG","isAuthoritySameType","harcodedMetadata","getEndpointMetadataFromHardcodedValues","AuthorityGetEndpointMetadataFromNetwork","getEndpointMetadataFromNetwork","azureRegionConfiguration","azureRegion","AuthorityUpdateMetadataWithRegionalInformation","updateMetadataWithRegionalInformation","NETWORK","HARDCODED_VALUES","createUnableToGetOpenidConfigError","defaultOpenIdConfigurationEndpoint","authorityMetadata","AUTO_DETECTION_REQUESTED_SUCCESSFUL","AUTO_DETECTION_REQUESTED_FAILED","CONFIGURED_MATCHES_DETECTED","CONFIGURED_NOT_DETECTED","CONFIGURED_NO_AUTO_DETECTION","Authority","replaceWithRegionalInformation","knownAuthorities","getCloudDiscoveryMetadataFromConfig","metadataEntityExpired","AuthorityGetCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromHarcodedValues","cloudDiscoveryMetadata","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","isInKnownAuthorities","createCloudDiscoveryMetadataFromHost","instanceDiscoveryEndpoint","typedResponseBody","isCloudInstanceDiscoveryResponse","tenant_discovery_endpoint","isCloudInstanceDiscoveryErrorResponse","typedError","getDomainFromUrl","generateAuthority","authorityString","authorityAzureCloudInstance","buildRegionalAuthorityString","region","authorityUrlInstance","authorityUrlParts","hostNameAndPort","isPublicCloudAuthority","createDiscoveredInstance","authorityUri","AuthorityFactoryCreateDiscoveredInstance","acquireTokenAuthority","AuthorityFactory","authorityUrl","telemetryRequest","cacheOutcome","NO_CACHE_HIT","apiId","wrapperVer","telemetryCacheKey","platformFields","requestWithRegionDiscoveryFields","getRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","ServerTelemetryManager","maxErrorsToSend","errorCount","incrementCacheHits","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionDiscoveryFields","regionUsed","regionSource","regionOutcome","storageImpl","eventHandler","navigationClient","nativeMessageHandler","system","clearCacheOnLogout","initializeBaseRequest","InitializeBaseRequest","validatedRequest","getRedirectUri","requestRedirectUri","initializeServerTelemetryManager","telemetryPayload","getDiscoveredAuthority","requestAuthority","initializeAuthorizationCodeRequest","StandardInteractionClientInitializeAuthorizationCodeRequest","generatedPkceParams","initializeLogoutRequest","validLogoutRequest","getLogoutHintFromIdTokenClaims","createAuthCodeClient","requestAzureCloudOptions","StandardInteractionClientCreateAuthCodeClient","StandardInteractionClientGetClientConfiguration","getClientConfiguration","clientConfig","StandardInteractionClientGetDiscoveredAuthority","discoveredAuthority","validateAndExtractStateFromHash","requestCorrelationId","platformStateObj","getAuthorityMeasurement","userAuthority","builtAuthority","initializeAuthorizationRequest","StandardInteractionClientInitializeAuthorizationRequest","browserState","FRAGMENT","legacyLoginHint","NativeAuthErrorMessage","ext","NativeAuthError","isFatal","PERSISTENT_ERROR","DISABLED","ACCOUNT_UNAVAILABLE","USER_INTERACTION_REQUIRED","USER_CANCEL","NO_NETWORK","createUserSwitchError","createTokensNotFoundInCacheError","RefreshTokenClientAcquireToken","RefreshTokenClientExecuteTokenRequest","httpVerToken","refreshTokenSize","forceCache","RefreshTokenClientAcquireTokenByRefreshToken","RefreshTokenClientAcquireTokenWithCachedRefreshToken","acquireTokenWithCachedRefreshToken","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","refreshTokenRequest","acquireTokenMeasurement","RefreshTokenClientCreateTokenRequestBody","BaseClientCreateTokenRequestHeaders","REFRESH_TOKEN_GRANT","addRefreshToken","acquireCachedToken","acquireTokenByRefreshToken","setCacheOutcome","FORCE_REFRESH","readCacheRecord","NO_CACHED_ACCESS_TOKEN","wasClockTurnedBack","CACHED_ACCESS_TOKEN_EXPIRED","REFRESH_CACHED_ACCESS_TOKEN","generateResultFromCacheRecord","silentRequest","SilentCacheClientAcquireToken","acquireTokenSilent_silentFlow","createSilentFlowClient","silentAuthClient","cachedToken","initializeSilentRequest","InitializeSilentRequest","provider","nativeStorageImpl","nativeStorageManager","silentCacheClient","nativeATMeasurement","NativeInteractionClientAcquireToken","initializeNativeRequest","nativeRequest","acquireTokensFromCache","isNativeBroker","messageBody","GetToken","sendMessage","validatedResponse","validateNativeResponse","handleNativeResponse","createSilentCacheRequest","readAccountFromCacheWithNativeAccountId","navigationOptions","redirectNavigationTimeout","navigateToLoginRequestUrl","mats","getMATSFromResponse","extensionId","getExtensionId","extensionVersion","getExtensionVersion","matsBrokerVersion","broker_version","matsAccountJoinOnStart","account_join_on_start","matsAccountJoinOnEnd","account_join_on_end","matsDeviceJoin","device_join","matsPromptBehavior","prompt_behavior","matsApiErrorCode","api_error_code","matsUiVisible","ui_visible","matsSilentCode","silent_code","matsSilentBiSubCode","silent_bi_sub_code","matsSilentMessage","silent_message","matsSilentStatus","silent_status","matsHttpStatus","http_status","matsHttpEventCount","http_event_count","authorityPreferredCache","accountProperties","responseTokenType","shr","responseAccessToken","shrParameters","isResponseFromCache","MATS","is_cached","remainingProperties","appendScopes","getPrompt","windowTitleSubstring","extraParameters","extendedExpiryToken","handshakeTimeoutMs","resolvers","handshakeResolvers","responseId","messageChannel","windowListener","onWindowMessage","req","createProvider","preferredProvider","NativeMessageHandler","sendHandshakeRequest","backupProvider","HandshakeRequest","onChannelMessage","handshakeResolver","Response","HandshakeResponse","isNativeAvailable","nativeExtensionProvider","authCodeModule","authModule","handleCodeResponseFromHash","networkModule","HandleCodeResponseFromHash","authCodeResponse","HandleCodeResponseFromServer","handleCodeResponseFromServer","validateNonce","nonceKey","cachedNonce","cloud_instance_host_name","UpdateTokenEndpointAuthority","updateTokenEndpointAuthority","cachedCcsCred","checkCcsCredentials","tokenResponse","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","updateAuthority","unloadWindow","nativeStorage","popupName","generatePopupName","popupWindowAttributes","asyncPopups","acquireTokenPopupAsync","popup","openSizedPopup","generateLogoutPopupName","mainWindowRedirectUri","logoutPopupAsync","validRequest","authClient","fetchNativeAccountIdMeasurement","FetchAccountIdWithNativeBroker","getAuthCodeUrl","navigateUrl","interactionHandler","popupParameters","popupWindow","initiateAuthRequest","POPUP_OPENED","monitorPopupForHash","removeThrottle","nativeInteractionClient","setCorrelationId","cacheFailedRequest","logoutUri","getLogoutUri","LOGOUT_SUCCESS","openPopup","waitForLogoutPopup","absoluteUrl","LOGOUT_FAILURE","requestUrl","windowHashTimeout","pollIntervalMilliseconds","intervalId","closed","cleanPopup","urlNavigate","popupParams","currentWindow","winLeft","screenLeft","winTop","screenTop","winWidth","winHeight","innerHeight","popupSize","popupPosition","redirectStartPage","redirectTimeout","onRedirectNavigate","handleBackButton","persisted","getRedirectStartPage","responseHash","getRedirectResponseHash","loginRequestUrl","loginRequestUrlNormalized","removeHashFromUrl","currentUrlNormalized","handleHash","handleHashResult","processHashOnRedirect","homepage","cachedHash","currentAuthority","requestStartPage","navigateFrameWait","SilentHandlerInitiateAuthRequest","SilentHandlerLoadFrame","loadFrame","loadFrameSync","monitorIframeForHash","iframe","SilentHandlerMonitorIframeForHash","timeoutMark","removeHiddenIframe","contentHash","frameHandle","createHiddenIframe","authFrame","visibility","getElementsByTagName","SilentIframeClientAcquireToken","Silent","SilentIframeClientTokenHelper","silentTokenHelper","silentHandler","msalFrame","iframeHashTimeout","SilentRefreshClientAcquireToken","createRefreshTokenClient","refreshTokenClient","loadExternalTokens","cacheRecordAccount","loadAccount","loadIdToken","loadAccessToken","loadRefreshToken","requestHomeAccountId","cloudInstanceHostName","startMark","endMark","supportsBrowserPerformance","clearMarks","clearMeasures","getEntriesByName","BrowserPerformanceMeasurement","entriesForMeasurement","getPageVisibility","visibilityState","supportsBrowserPerformanceNow","startPageVisibility","endPageVisibility","preQueueTimes","astsAsyncMeasurement","activeSilentTokenRequests","trackPageVisibility","getRequestCorrelationId","AcquireTokenSilent","cacheLookupPolicy","preflightBrowserEnvironmentCheck","silentRequestKey","cachedResponse","AcquireTokenSilentAsync","acquireTokenSilentAsync","accessTokenSize","idTokenSize","visibilityChangeCount","acquireTokenNative","createSilentIframeClient","createSilentCacheClient","AcquireTokenFromCache","acquireTokenFromCache","cacheError","AccessToken","ACQUIRE_TOKEN_NETWORK_START","AcquireTokenByRefreshToken","refreshTokenError","isServerError","isInvalidGrantError","AccessTokenAndRefreshToken","RefreshToken","Skip","AcquireTokenBySilentIframe","acquireTokenBySilentIframe","tokenRenewalError","userInputAuth","userInputCache","userInputSystem","userInputTelemetry","DEFAULT_AUTH_OPTIONS","AAD","DEFAULT_CACHE_OPTIONS","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","loadFrameTimeout","nativeBrokerHandshakeTimeout","providedSystemOptions","DEFAULT_TELEMETRY_OPTIONS","buildConfiguration","redirectResponse","hybridAuthCodeResponses","nativeCacheOptions","nativeInternalStorage","trackPageVisibilityWithMeasurement","INITIALIZE_START","INITIALIZE_END","loggedInAccounts","redirectResponseKey","nativeClient","redirectClient","createRedirectClient","isLoggedIn","canUseNative","getNativeAccountId","atPopupMeasurement","AcquireTokenPopup","createPopupClient","ssoSilentMeasurement","acquireTokenByCodeAsyncMeasurement","silentIframeClient","ACQUIRE_TOKEN_BY_CODE_START","atbcMeasurement","AcquireTokenByCode","acquireTokenByCodeAsync","ACQUIRE_TOKEN_BY_CODE_SUCCESS","ACQUIRE_TOKEN_BY_CODE_FAILURE","AcquireTokenByCodeAsync","createSilentAuthCodeClient","commonRequest","RefreshTokenAndNetwork","silentRefreshClient","createSilentRefreshClient","userName","preflightInteractiveRequest","strEmpty","_canUseLocalStorage","_canUseSessionStorage","_getLocalStorageObject","_getVerifiedStorageObject","storageType","_getSessionStorageObject","DataPoint","NoMethod","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","theEvent","errorType","_isStackDetails","_convertStackObj","errorStack","_getStackFromErrorObj","errorObj","_getErrorType","stackDetails","_htmlAnchorIdx","_htmlAnchorElement","_internalEndpoints","aiInstrumentHooks","cbNames","_arrLoop","_doCallbacks","callDetails","cbArgs","hookCtx","_getOwner","checkPrototype","_createInstrumentHook","owner","aiHook","MAX_DURATION_ALLOWED","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","_getPerformanceTiming","_getPerformanceNavigationTiming","_shouldCollectDuration","strEvent","_dispatchEvent","evnt","MinMilliSeconds","_configMilliseconds","_getDefaultConfig","_updateStorageUsage","extConfig","_aiNameFunc","baseName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","strBaseType","strBaseData","strProperties","strTrue","_setValueIf","_extractPropsAndMeasurements","measurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","envelopeType","telemetryItem","EnvelopeCreatorInit","_disableEvents","FetchSyncRequestSizeLimitBytes","_getDefaultAppInsightsChannelConfig","EnvelopeTypeCreator","_FIELDS_SEPARATOR","_FIELD_KEY_VALUE_SEPARATOR","ChannelValidationMessage","_addChannelQueue","channelQueue","strValidationError","strNotificationManager","strSdkUnloadingError","strSdkNotInitialized","defaultInitConfig","_createPerfManager","notificationMgr","_isPluginPresent","thePlugin","channelPriority","allExtensions","_runListeners","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","ajaxData","dependency","AJAX_MONITOR_PREFIX","strDiagLog","strAjaxData","STR_FETCH","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","FAILED_TO_CALCULATE_DURATION_ERROR","_markCount","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","msgId","isUserAct","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","_indexOf","_addHandler","_processDependencyContainer","BLOB_CORE","_internalExcludeEndpoints","_getEmptyConfig","Application","Device","Version","Location","cookieNameConst","Session","_validateUserInput","strExt","strTags","_removeEmpty","_internalSdkSrc","_AUTHENTICATED_USER_CONTEXT","_TRACK","_ignoreUpdateSnippetProperties","qsa","defaultKey","_toPrimitive","useUncontrolledProp","propValue","wasPropRef","isProp","wasProp","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","useCommittedRef","useEventCallback","useEventListener","eventTarget","DropdownContext","tar","dequal","foo","DataView","byteLength","getInt8","useSafeState","disabledApplyStylesModifier","ariaDescribedByModifier","_popper$getAttribute","EMPTY_MODIFIERS","usePopper","popperElement","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","popperState","updateModifier","nextModifiers","getRefTarget","InitialTriggerEvents","mouseup","useClickOutside","onClickOutside","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","isLeftClickEvent","handleInitialMouse","handleMouse","currentEvent","removeInitialTriggerListener","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","toModifierArray","mergeOptionsWithPopperConfig","_modifiers$eventListe","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","fixed","toModifierMap","useDropdownMenu","attachArrowRef","hasShownRef","rootCloseEvent","placementOverride","enableEventListeners","shouldUsePopper","setMenu","menuElement","toggleElement","menuProps","hasShown","arrowProps","DropdownMenu","_jsx","_Fragment","isRoleMenu","_el$getAttribute","useDropdownToggle","useSSRSafeId","setToggle","DropdownToggle","makeEventKey","eventKey","SelectableContext","NavContext","useButtonProps","rel","tabIndex","isTrivialHref","asProp","buttonProps","ATTRIBUTE_PREFIX","dataAttr","useDropdownItem","onSelectCtx","activeKey","DropdownItem","dropdownItemProps","useRefWithUpdate","attachRef","defaultShow","rawShow","rawOnToggle","onToggle","itemSelector","focusFirstItemOnShow","menuRef","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","originalEvent","handleSelect","focusToggle","maybeFocusFirst","focusType","getNextFocusedChild","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_menuRef$current2","Toggle","Anchor","handleKeyDown","DEFAULT_BREAKPOINTS","DEFAULT_MIN_BREAKPOINT","breakpoints","minBreakpoint","useBootstrapPrefix","bsPrefix","toFnRef","useMergedRefs","refA","refB","mergeRefs","useWrappedRefWithWarning","getDropdownMenuPlacement","alignEnd","dropDirection","showProps","renderOnMount","variant","isNavbar","NavbarContext","contextAlign","drop","isInputGroup","InputGroupContext","alignClasses","brkPoint","useIsomorphicEffect","childBsPrefix","dropdownContext","toggleProps","rHyphen","pascalCase","createWithBsPrefix","BsComponent","Tag","resolvedPrefix","DropdownHeader","DropdownDivider","DropdownItemText","pProps","fieldName","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","useUncontrolled","navbar","handleToggle","directionClasses","down","BaseDropdown","ItemText","Divider","rnds8","rng","msCrypto","validate","uuid","REGEX","byteToHex","v4","buf","rnds","attrRE","voidElement","tagMatch","tagRE","whitespaceRE","buff","inComponent","isComment","nextChar","parseTag","rootEl","_excluded2","hasChildren","checkLength","getChildren","getAsArray","nodesToString","stringNode","childrenArray","keepArray","childIndex","childPropsCount","shouldKeepChild","childChildren","i18nIsDynamicList","renderNodes","targetString","combinedTOpts","shouldUnescape","emptyChildrenButNeedsHandling","getData","childs","ast","HTML","renderInner","rootReactNode","mappedChildren","mapAST","hasValidReactChildren","pushTranslatedJSX","mem","isVoid","dummy","reactNode","astNode","reactNodes","translationContent","newTarget","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","_inner","_inner3","_inner4","wrapTextNodes","Trans","i18nKey","_ref$tOptions","tOptions","tFromProps","additionalProps","reactI18nextOptions","hashTransKey","interpolationOverride","useAsParent","defaultTransParent"],"mappings":"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KAKD,SAAYC,GACR,kBACA,gCACA,uBACH,CAJD,CAAYA,MAIX,KAKD,SAAYC,GACR,wBACA,8BACA,gCACA,gCACA,0BACA,kBACA,gBACA,gBACA,wCACA,8BACA,sBACA,gCACA,0BACA,gBACA,gBACA,kBACA,gCACA,4BACA,cACA,kCACA,gDACA,gCACA,wCACA,8BACA,8BACA,4BACA,8BACA,mDACA,gDACA,4CACA,0BACA,wBACA,6CACA,gCACA,4BACA,gCACA,sCACA,gDACA,0BACA,oBACA,4BACA,4CACA,8BACA,cACA,+BACA,oCACA,+BACA,2BACH,CAjDD,CAAYA,MAiDX,KAKD,SAAYC,GACR,8BACA,iBACH,CAHD,CAAYA,MAGX,KAOY,IAYD2C,EAZCC,EAAc,CACvBC,MAAO,QACPC,eAAgB,iBAChBC,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRC,WAAY,eAMhB,SAAYP,GACR,oBACA,YACA,0BACA,sBACA,4BACA,gCACA,wBACA,iCACA,wCACH,CAVD,CAAYA,MAUX,KAaY,IAkBDQ,EASAC,EAaAC,EAUAC,EAQAC,EAUAC,EAgBAC,EApFCC,EAA4B,CACrCC,MAAO,QACPC,KAAM,SAgBV,SAAYT,GACR,gBACA,sBACA,uBACH,CAJD,CAAYA,MAIX,KAKD,SAAYC,GACR,4BACA,gDACA,gDACA,2CACA,sCACA,kCACA,0DACH,CARD,CAAYA,MAQX,KAKD,SAAYC,GACR,6BACA,2BACA,2BACA,EAAgC,8BACnC,CALD,CAAYA,MAKX,KAKD,SAAYC,GACR,0BACA,2BACH,CAHD,CAAYA,MAGX,KAKD,SAAYC,GACR,qBACA,6BACA,8DACA,8BACH,CALD,CAAYA,MAKX,KAKD,SAAYC,GACR,oBACA,0BACA,qBACA,6BACA,+BACA,6BACA,wBACA,wBACA,wBACA,yBACH,CAXD,CAAYA,MAWX,KAKD,SAAYC,GACR,sBACA,oBACA,wBACA,4BACA,sCACA,wCACA,8BACA,sCACA,+BACH,CAVD,CAAYA,MAUX,KAKM,IASKI,EATCC,EAAe,cACfC,EAAc,cACdC,EAAgB,IAEhBC,EAA+B,CACxCC,UAAW,qBACXC,qBAAsB,QAG1B,SAAYN,GACR,kBACA,gBACA,oBACA,qCACH,CALD,CAAYA,MAKX,KAEY,IAgBDO,EAhBCC,EAAyB,CAClCC,eAAgB,EAChBC,qBAAsB,GACtBC,sBAAuB,IACvBC,kBAAmB,GACnBP,UAAW,mBACXQ,mBAAoB,IACpBC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,cAAe,kBAMnB,SAAYV,GACR,kBACA,YACA,gBACH,CAJD,CAAYA,MAIX,KAKY,IAmBDW,EAQCC,EAQDC,EAUAC,EAQAC,EAQAC,EA7DCC,EAAsB,CAE/BC,8BAA+B,GAE/BC,kCAAmC,KAEnCC,kBAAmB,aAEnBC,0BAA2B,qBAGlBC,EAAS,CAClBC,oBAAqB,gBACrBC,sBAAuB,oBAM3B,SAAYb,GACR,sBACA,qBACH,CAHD,CAAYA,MAGX,KAKD,SAAaC,GACT,mCACA,wCACH,CAHD,CAAaA,MAGZ,KAKD,SAAYC,GACR,4BACA,qBACA,2BACA,UACH,CALD,CAAYA,MAKX,KAKD,SAAYC,GACR,kCACA,mCACA,8BACA,0CACA,qCACH,CAND,CAAYA,MAMX,KAED,SAAYC,GACR,mBACA,oBACA,6BACA,kCACA,iCACH,CAND,CAAYA,MAMX,KAED,SAAYC,GACR,YACA,WACH,CAHD,CAAYA,MAGX,I,+tIClZD,gBACA,aACA,eACA,YACA,QACA,WACA,SACA,aAKA,cAKA,gBACA,MACA,aAEA,GADA,SACA,UACA,cACA,OACA,OAGA,GAFA,KACA,UACA,IACA,gBACA,SACA,SAEA,cACA,cACA,iBACA,mBAKA,wBAKA,cACA,MAEA,KACA,YAGA,yBACA,KACA,QAEA,CACA,WACA,CAIA,gBACA,mBACA,CACA,cACA,iCACA,CAIA,cACA,qBACA,CACA,cACA,WACA,CACA,gBACA,2BACA,CACA,cAEA,2BACA,CACA,cAEA,2BACA,CAWA,cACA,QAWA,OAVA,UAMA,GADA,GAHA,0BACA,sBACA,KACA,aACA,sBACA,WACA,KAEA,CACA,CAOA,gBACA,KACA,eACA,eACA,gBAIA,CAOA,gBACA,SAKA,OAJA,mBAEA,YAUA,cACA,SACA,aACA,aACA,2BAEA,IADA,UACA,gBACA,cACA,SAEA,GACA,CACA,IACA,CACA,QACA,CAzBA,OAEA,CACA,CA8DA,gBACA,kBACA,aAGA,CAIA,cACA,wCACA,CAKA,SACA,YACA,yCACA,EAIA,cACA,yCACA,CAMA,cAEA,yBACA,CAMA,cAEA,yBACA,CAMA,cAEA,0BACA,CAcA,cACA,SACA,2BAEA,kBACA,GAMA,sBACA,QAEA,iCAPA,IASA,CACA,QACA,CAIA,cACA,KAEA,gBAMA,YACA,wBACA,kBACA,gBAIA,OAHA,aACA,SAEA,CACA,EACA,0BACA,yBACA,sBACA,uBACA,yBACA,yBACA,+DACA,GACA,CACA,CAxBA,GAEA,CA+BA,kBACA,aACA,IACA,oBACA,UACA,2BAFA,KASA,CADA,SACA,CAEA,CASA,kBACA,MAEA,QACA,iBAEA,aACA,OACA,IACA,mDACA,oBACA,QAKA,CADA,SACA,CAEA,CACA,QACA,CASA,mBACA,MACA,MAEA,QACA,iBAEA,aACA,OACA,eACA,IACA,oBACA,SACA,sBAKA,CADA,SACA,CAEA,CACA,QACA,CASA,mBACA,MACA,MAEA,QACA,iBAEA,aACA,IAEA,qBACA,mBAEA,CACA,qBACA,IAEA,QACA,CACA,UACA,SACA,iBAEA,GAEA,CACA,QACA,CAIA,eAKA,OAJA,IAEA,0DAEA,CACA,CACA,yDACA,IACA,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAQA,eACA,eAKA,GAJA,4BACA,6CAGA,MACA,YAEA,SACA,eACA,kBACA,UAGA,MAEA,IADA,cACA,YACA,sBACA,cAIA,QACA,CAWA,qBACA,KACA,IACA,OACA,cACA,iBASA,OAPA,IACA,SAEA,IACA,SAEA,UACA,CAIA,CAFA,SAEA,CAGA,QACA,CACA,eACA,QACA,CACA,eAQA,OAPA,GACA,oBACA,aACA,IAEA,IAEA,KACA,CACA,aAMA,cACA,WACA,sCACA,CAIA,eACA,YACA,OAEA,GACA,CAWA,uBACA,QAQA,OAPA,KACA,UACA,wBACA,IACA,SAGA,CACA,CAOA,mBACA,MAaA,OAZA,IACA,SACA,OAEA,YACA,QAKA,YAEA,CACA,CAMA,iBACA,eACA,CAIA,eACA,SACA,CACA,eACA,kBACA,CACA,iBACA,WACA,OAOA,OANA,KACA,IAGA,IAEA,WAEA,gBAIA,GAHA,IACA,OAEA,EACA,qBAEA,CACA,CAgBA,mBACA,qBACA,kBACA,SACA,WACA,KACA,kBAEA,cAGA,kBACA,eAEA,KAEA,mBACA,WACA,gBACA,MACA,MAIA,QAGA,CACA,EAEA,eACA,IAEA,CACA,QACA,CAUA,uBACA,WACA,kBACA,aAGA,CASA,qBAQA,OAPA,kBACA,iBACA,MACA,aAEA,IAEA,CACA,CAMA,eACA,OACA,WACA,WACA,GACA,mBACA,MACA,GAEA,CAGA,CAQA,eAMA,OAHA,SACA,kCAEA,CACA,CACA,yBAEA,gBACA,WACA,SACA,KACA,IAYA,IAVA,YACA,IACA,WACA,KAGA,OACA,MAGA,SACA,WACA,OACA,OACA,gBAEA,GADA,4BACA,CAGA,WACA,SAEA,2BAEA,WACA,EACA,OAEA,MAGA,OAEA,MAGA,WACA,MAEA,QACA,OAtBA,CAwBA,CACA,CACA,QACA,C,qmBC1vBYS,EAOAC,EASAC,EAQAC,EAqBAC,EAWAC,EAeAC,EAWAC,E,OAvHCC,EAAmB,CAI5BC,8BAA+B,0BAI/BX,oBAAqB,gBAIrBY,YAAa,IAIbC,aAAc,IAIdC,kBAAmB,OAInBC,yBAA0B,GAI1BC,SAAU,mBAGDC,EAAkB,CAC3BC,WAAY,uCACZC,uBAAwB,mCACxBC,eAAgB,SAGpB,SAAYlB,GACR,+BACA,wCACA,sBACA,qBACH,CALD,CAAYA,MAAqB,KAOjC,SAAYC,GACR,8BACA,kCACA,+BACH,CAJD,CAAYA,MAAoB,KAShC,SAAYC,GACR,YACA,aACH,CAHD,CAAYA,MAAiB,KAQ7B,SAAYC,GACR,wBACA,+CACA,gCACA,gCACA,iCACA,8BACA,oCACA,qBACA,kCACA,kBACA,8CACA,kCACA,yCACA,kCACA,6CACH,CAhBD,CAAYA,MAAkB,KAqB9B,SAAYC,GACR,4BACA,+BACH,CAHD,CAAYA,MAAiB,KAW7B,SAAYC,GACR,qDACA,+CACA,+BACA,mEACA,uDACA,iDACA,sEACA,yBACA,kCACH,CAVD,CAAYA,MAAK,KAejB,SAAYC,GACR,sBACA,gBACA,kBACA,aACH,CALD,CAAYA,MAAe,KAW3B,SAAYC,GAIR,oBAIA,gBAIA,kBAIA,8BAIA,wBAIA,kCAIA,aACH,CA7BD,CAAYA,MAAiB,K,IAyCjBY,EAVCC,EAAgD,CACzDC,OAAQ,KAMCC,EAAiB,OAG9B,SAAYH,GACR,4BACA,+BACH,CAHD,CAAYA,MAAU,K,IAUVI,EAJCC,EAAU,UACVC,EAAa,EACbC,EAAmBF,EAAO,SAEvC,SAAYD,GAMR,yBAKA,iCAMA,+DAMA,mCAMA,uDAKA,kBACH,CAnCD,CAAYA,MAAiB,I,+BCtL7B,SAASI,EAAmBC,EAAKxM,EAASC,EAAQwM,EAAOC,EAAQvP,EAAK0B,GACpE,IACE,IAAIyC,EAAOkL,EAAIrP,GAAK0B,GAChBtC,EAAQ+E,EAAK/E,KAInB,CAHE,MAAOgE,GAEP,YADAN,EAAOM,EAET,CACIe,EAAKjF,KACP2D,EAAQzD,GAER2G,QAAQlD,QAAQzD,GAAO8D,KAAKoM,EAAOC,EAEvC,CACe,SAASC,EAAkB/N,GACxC,OAAO,WACL,IAAIV,EAAOiB,KACTyN,EAAOC,UACT,OAAO,IAAI3J,SAAQ,SAAUlD,EAASC,GACpC,IAAIuM,EAAM5N,EAAGkO,MAAM5O,EAAM0O,GACzB,SAASH,EAAMlQ,GACbgQ,EAAmBC,EAAKxM,EAASC,EAAQwM,EAAOC,EAAQ,OAAQnQ,EAClE,CACA,SAASmQ,EAAOjQ,GACd8P,EAAmBC,EAAKxM,EAASC,EAAQwM,EAAOC,EAAQ,QAASjQ,EACnE,CACAgQ,OAAMpL,EACR,GACF,CACF,CA7BA,iC,+BCAA,8CACA,SAAS0L,EAAQzJ,EAAQ0J,GACvB,IAAI5J,EAAOhH,OAAOgH,KAAKE,GACvB,GAAIlH,OAAO6Q,sBAAuB,CAChC,IAAIC,EAAU9Q,OAAO6Q,sBAAsB3J,GAC3C0J,IAAmBE,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOhR,OAAOiR,yBAAyB/J,EAAQ8J,GAAKxP,UACtD,KAAKwF,EAAK9G,KAAKwQ,MAAM1J,EAAM8J,EAC7B,CACA,OAAO9J,CACT,CACe,SAASkK,EAAeC,GACrC,IAAK,IAAIlS,EAAI,EAAGA,EAAIwR,UAAUrQ,OAAQnB,IAAK,CACzC,IAAImS,EAAS,MAAQX,UAAUxR,GAAKwR,UAAUxR,GAAK,CAAC,EACpDA,EAAI,EAAI0R,EAAQ3Q,OAAOoR,IAAS,GAAI9N,SAAQ,SAAUvC,GACpD,YAAeoQ,EAAQpQ,EAAKqQ,EAAOrQ,GACrC,IAAKf,OAAOqR,0BAA4BrR,OAAOsR,iBAAiBH,EAAQnR,OAAOqR,0BAA0BD,IAAWT,EAAQ3Q,OAAOoR,IAAS9N,SAAQ,SAAUvC,GAC5Jf,OAAOa,eAAesQ,EAAQpQ,EAAKf,OAAOiR,yBAAyBG,EAAQrQ,GAC7E,GACF,CACA,OAAOoQ,CACT,C,2wECrBe,SAASI,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIlR,UAAU,oCAExB,CAJA,iC,+BCAA,+CACA,SAASmR,EAAkBP,EAAQQ,GACjC,IAAK,IAAI1S,EAAI,EAAGA,EAAI0S,EAAMvR,OAAQnB,IAAK,CACrC,IAAI2S,EAAaD,EAAM1S,GACvB2S,EAAWpQ,WAAaoQ,EAAWpQ,aAAc,EACjDoQ,EAAWnQ,cAAe,EACtB,UAAWmQ,IAAYA,EAAWlQ,UAAW,GACjD1B,OAAOa,eAAesQ,EAAQ,YAAcS,EAAW7Q,KAAM6Q,EAC/D,CACF,CACe,SAASC,EAAaJ,EAAaK,EAAYC,GAM5D,OALID,GAAYJ,EAAkBD,EAAY/Q,UAAWoR,GACrDC,GAAaL,EAAkBD,EAAaM,GAChD/R,OAAOa,eAAe4Q,EAAa,YAAa,CAC9C/P,UAAU,IAEL+P,CACT,C,+jBCZA,SACA,aACI,EAAJ,OACI,EAAJ,gBACA,aACA,oBACA,eACA,qBACA,aACA,eACA,oBACA,sBACA,cACA,mBACA,kBACA,c,+BCpBA,+EAIA,SAASd,EAAQzJ,EAAQ0J,GACvB,IAAI5J,EAAOhH,OAAOgH,KAAKE,GAEvB,GAAIlH,OAAO6Q,sBAAuB,CAChC,IAAIC,EAAU9Q,OAAO6Q,sBAAsB3J,GAC3C0J,IAAmBE,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOhR,OAAOiR,yBAAyB/J,EAAQ8J,GAAKxP,UACtD,KAAKwF,EAAK9G,KAAKwQ,MAAM1J,EAAM8J,EAC7B,CAEA,OAAO9J,CACT,CAEA,SAASkK,EAAeC,GACtB,IAAK,IAAIlS,EAAI,EAAGA,EAAIwR,UAAUrQ,OAAQnB,IAAK,CACzC,IAAImS,EAAS,MAAQX,UAAUxR,GAAKwR,UAAUxR,GAAK,CAAC,EACpDA,EAAI,EAAI0R,EAAQ3Q,OAAOoR,IAAS,GAAI9N,SAAQ,SAAUvC,GACpDiR,EAAgBb,EAAQpQ,EAAKqQ,EAAOrQ,GACtC,IAAKf,OAAOqR,0BAA4BrR,OAAOsR,iBAAiBH,EAAQnR,OAAOqR,0BAA0BD,IAAWT,EAAQ3Q,OAAOoR,IAAS9N,SAAQ,SAAUvC,GAC5Jf,OAAOa,eAAesQ,EAAQpQ,EAAKf,OAAOiR,yBAAyBG,EAAQrQ,GAC7E,GACF,CAEA,OAAOoQ,CACT,CAEA,SAASc,EAAQnR,GAGf,OAAOmR,EAAU,mBAAqB5S,QAAU,iBAAmBA,OAAOC,SAAW,SAAUwB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBzB,QAAUyB,EAAIyF,cAAgBlH,QAAUyB,IAAQzB,OAAOqB,UAAY,gBAAkBI,CAC1H,EAAGmR,EAAQnR,EACb,CAEA,SAASkR,EAAgBlR,EAAKC,EAAKZ,GAYjC,OAXIY,KAAOD,EACTd,OAAOa,eAAeC,EAAKC,EAAK,CAC9BZ,MAAOA,EACPqB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZZ,EAAIC,GAAOZ,EAGNW,CACT,CAiBA,SAASoR,EAAyBd,EAAQe,GACxC,GAAc,MAAVf,EAAgB,MAAO,CAAC,EAE5B,IAEIrQ,EAAK9B,EAFLkS,EAlBN,SAAuCC,EAAQe,GAC7C,GAAc,MAAVf,EAAgB,MAAO,CAAC,EAC5B,IAEIrQ,EAAK9B,EAFLkS,EAAS,CAAC,EACViB,EAAapS,OAAOgH,KAAKoK,GAG7B,IAAKnS,EAAI,EAAGA,EAAImT,EAAWhS,OAAQnB,IACjC8B,EAAMqR,EAAWnT,GACbkT,EAASE,QAAQtR,IAAQ,IAC7BoQ,EAAOpQ,GAAOqQ,EAAOrQ,IAGvB,OAAOoQ,CACT,CAKemB,CAA8BlB,EAAQe,GAInD,GAAInS,OAAO6Q,sBAAuB,CAChC,IAAI0B,EAAmBvS,OAAO6Q,sBAAsBO,GAEpD,IAAKnS,EAAI,EAAGA,EAAIsT,EAAiBnS,OAAQnB,IACvC8B,EAAMwR,EAAiBtT,GACnBkT,EAASE,QAAQtR,IAAQ,GACxBf,OAAOU,UAAU8R,qBAAqB1S,KAAKsR,EAAQrQ,KACxDoQ,EAAOpQ,GAAOqQ,EAAOrQ,GAEzB,CAEA,OAAOoQ,CACT,CAEA,SAASsB,EAAmBzT,GAC1B,OAGF,SAA4BA,GAC1B,GAAIE,MAAMC,QAAQH,GAAM,OAAO0T,EAAkB1T,EACnD,CALS2T,CAAmB3T,IAO5B,SAA0B+H,GACxB,GAAsB,qBAAX1H,QAAmD,MAAzB0H,EAAK1H,OAAOC,WAA2C,MAAtByH,EAAK,cAAuB,OAAO7H,MAAM0T,KAAK7L,EACtH,CAToC8L,CAAiB7T,IAWrD,SAAqC8T,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAOJ,EAAkBI,EAAGC,GACvD,IAAIC,EAAIhT,OAAOU,UAAUuS,SAASnT,KAAKgT,GAAGtL,MAAM,GAAI,GAC1C,WAANwL,GAAkBF,EAAEvM,cAAayM,EAAIF,EAAEvM,YAAYC,MACvD,GAAU,QAANwM,GAAqB,QAANA,EAAa,OAAO9T,MAAM0T,KAAKE,GAClD,GAAU,cAANE,GAAqB,2CAA2CE,KAAKF,GAAI,OAAON,EAAkBI,EAAGC,EAC3G,CAlB6DI,CAA4BnU,IA4BzF,WACE,MAAM,IAAIuB,UAAU,uIACtB,CA9BiG6S,EACjG,CAmBA,SAASV,EAAkB1T,EAAKqU,IACnB,MAAPA,GAAeA,EAAMrU,EAAIoB,UAAQiT,EAAMrU,EAAIoB,QAE/C,IAAK,IAAInB,EAAI,EAAGqU,EAAO,IAAIpU,MAAMmU,GAAMpU,EAAIoU,EAAKpU,IAAKqU,EAAKrU,GAAKD,EAAIC,GAEnE,OAAOqU,CACT,CAmEA,SAASC,EAASC,GAChB,OAPoB1S,EAOH0S,GANjB1S,GAAY,KAEGA,EAKN0S,GAITA,EAASA,EAAOC,QAAQ,iBAAiB,SAAUC,EAAOC,GACxD,OAAOA,EAAMA,EAAIC,cAAgB,EACnC,KAEcC,OAAO,EAAG,GAAGC,cAAgBN,EAAOK,OAAO,GAhB3D,IAAsB/S,CAiBtB,CAEA,IAAIiT,EAAc,CAAC,SAqEnB,IAAIC,GAAa,EAEjB,IACEA,GAAaC,CACF,CAAX,MAAOC,GAAI,CAUb,SAASC,EAAkBC,GAGzB,OAAIA,GAA0B,WAAlBnC,EAAQmC,IAAsBA,EAAKC,QAAUD,EAAKE,UAAYF,EAAKA,KACtEA,EAGLG,IAAMH,KACDG,IAAMH,KAAKA,GAIP,OAATA,EACK,KAILA,GAA0B,WAAlBnC,EAAQmC,IAAsBA,EAAKC,QAAUD,EAAKE,SACrDF,EAILlV,MAAMC,QAAQiV,IAAyB,IAAhBA,EAAKhU,OAEvB,CACLiU,OAAQD,EAAK,GACbE,SAAUF,EAAK,IAKC,kBAATA,EACF,CACLC,OAAQ,MACRC,SAAUF,QAHd,CAMF,CAKA,SAASI,EAAczT,EAAKZ,GAK1B,OAAOjB,MAAMC,QAAQgB,IAAUA,EAAMC,OAAS,IAAMlB,MAAMC,QAAQgB,IAAUA,EAAQ6R,EAAgB,CAAC,EAAGjR,EAAKZ,GAAS,CAAC,CACzH,CAEA,IAAIsU,EAAY,CAAC,gBACjB,SAASC,EAAgBC,GACvB,IAAIC,EAAeD,EAAKC,aACpBjD,EAAQO,EAAyByC,EAAMF,GAEvCI,EAAWlD,EAAMyC,KACjBU,EAAWnD,EAAMoD,KACjBC,EAASrD,EAAMqD,OACfC,EAAYtD,EAAMsD,UAClBC,EAAQvD,EAAMuD,MACdC,EAAUxD,EAAMwD,QAChBC,EAASzD,EAAMyD,OACfC,EAAalB,EAAkBU,GAC/BS,EAAUd,EAAc,UAAW,GAAGe,OAAO9C,EA3NnD,SAAmBd,GACjB,IAAI6D,EAEAC,EAAO9D,EAAM8D,KACbC,EAAO/D,EAAM+D,KACbC,EAAWhE,EAAMgE,SACjBC,EAASjE,EAAMiE,OACfC,EAAQlE,EAAMkE,MACdC,EAAQnE,EAAMmE,MACdC,EAAOpE,EAAMoE,KACbC,EAAYrE,EAAMqE,UAClBC,EAActE,EAAMsE,YACpBC,EAAQvE,EAAMuE,MACdC,EAAaxE,EAAMwE,WACnBC,EAAUzE,EAAMyE,QAChBC,EAAS1E,EAAM0E,OACfC,EAAW3E,EAAM2E,SACjBC,EAAO5E,EAAM4E,KACbC,EAAO7E,EAAM6E,KACbC,EAAW9E,EAAM8E,SACjBC,EAAO/E,EAAM+E,KAEbpB,GAkBDtD,EAlBYwD,EAAW,CACxB,UAAWC,EACX,UAAWC,EACX,eAAgBC,EAChB,YAAaC,EACb,WAAYC,EACZ,WAAYC,EACZ,UAAWC,EACX,kBAAmBE,EACnB,gBAAiBD,EACjB,WAAYE,EACZ,QAASC,EACT,aAAcC,EACd,YAAaC,EACb,QAASC,EACT,WAAoB,IAATC,EACX,qBAA+B,eAATA,GAAkC,SAATA,EAC/C,mBAA6B,aAATA,GAAgC,SAATA,GAChB,MAAMhB,OAAOiB,GAAuB,qBAATA,GAAiC,OAATA,GAAgBxE,EAAgBwD,EAAU,aAAaD,OAAOkB,GAA+B,qBAAbA,GAAyC,OAAbA,GAAkC,IAAbA,GAAiBzE,EAAgBwD,EAAU,WAAWD,OAAOmB,GAAuB,qBAATA,GAAiC,OAATA,GAAgB1E,EAAgBwD,EAAU,kBAAmB7D,EAAMgF,aAAcnB,GAGrY,OAAOxV,OAAOgH,KAAKsO,GAASsB,KAAI,SAAU7V,GACxC,OAAOuU,EAAQvU,GAAOA,EAAM,IAC9B,IAAGgQ,QAAO,SAAUhQ,GAClB,OAAOA,CACT,GACF,CA2KsE8V,CAAUlF,IAASc,EAAmBwC,EAAU6B,MAAM,QACtHC,EAAYvC,EAAc,YAAwC,kBAApB7C,EAAMoF,UAAyBxC,IAAMwC,UAAUpF,EAAMoF,WAAapF,EAAMoF,WACtHhC,EAAOP,EAAc,OAAQL,EAAkBW,IAC/CkC,EAAe5C,YAAKiB,EAAYnE,EAAeA,EAAeA,EAAeA,EAAe,CAAC,EAAGoE,GAAUyB,GAAYhC,GAAO,CAAC,EAAG,CACnIC,OAAQA,EACRE,MAAOA,EACPC,QAASA,EACTC,OAAQA,KAGV,IAAK4B,EAEH,OAnFJ,WAEI,IAAIC,GADDjD,GAAckD,SAAoC,oBAAlBA,QAAQ/S,QAG1C8S,EAAWC,SAAS/S,MAAMuM,MAAMuG,EAAUxG,UAE/C,CA4EI0G,CAAI,sBAAuB9B,GACpB,KAGT,IAAI+B,EAAWJ,EAAaI,SACxBC,EAAa,CACfC,IAAK1C,GAQP,OANA5U,OAAOgH,KAAK2K,GAAOrO,SAAQ,SAAUvC,GAE9B2T,EAAgB6C,aAAa3W,eAAeG,KAC/CsW,EAAWtW,GAAO4Q,EAAM5Q,GAE5B,IACOyW,EAAaJ,EAAS,GAAIC,EACnC,CACA3C,EAAgBvO,YAAc,kBAC9BuO,EAAgB+C,UAAY,CAC1BhC,KAAMiC,IAAUC,KAChBtB,OAAQqB,IAAUC,KAClBhC,SAAU+B,IAAUC,KACpB/B,OAAQ8B,IAAUC,KAClB1C,UAAWyC,IAAUlE,OACrBkC,KAAMgC,IAAUC,KAChB7B,MAAO4B,IAAUC,KACjB5C,KAAM2C,IAAUE,UAAU,CAACF,IAAUxQ,OAAQwQ,IAAUG,MAAOH,IAAUlE,SACxE4B,OAAQsC,IAAUlE,OAClB2C,WAAYuB,IAAUC,KACtBvB,QAASsB,IAAUC,KACnBpB,KAAMmB,IAAUI,MAAM,EAAC,GAAM,EAAO,aAAc,WAAY,SAC9D1D,KAAMsD,IAAUE,UAAU,CAACF,IAAUxQ,OAAQwQ,IAAUG,MAAOH,IAAUlE,SACxE8C,SAAUoB,IAAUC,KACpBjB,KAAMgB,IAAUI,MAAM,CAAC,QAAS,SAChC5B,MAAOwB,IAAUC,KACjBlB,SAAUiB,IAAUI,MAAM,CAAC,EAAG,GAAI,IAAK,MACvCjC,MAAO6B,IAAUC,KACjBnB,KAAMkB,IAAUI,MAAM,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QACnH/B,KAAM2B,IAAUC,KAChB3B,UAAW0B,IAAUC,KACrB1B,YAAayB,IAAUC,KACvB3C,OAAQ0C,IAAUE,UAAU,CAACF,IAAUC,KAAMD,IAAUlE,SACvD0B,MAAOwC,IAAUlE,OACjB2B,QAASuC,IAAUlE,OACnBuD,UAAWW,IAAUE,UAAU,CAACF,IAAUlE,OAAQkE,IAAUxQ,SAC5DyP,YAAae,IAAUC,MAEzBjD,EAAgB6C,aAAe,CAC7BlB,QAAQ,EACRpB,UAAW,GACXF,KAAM,KACNK,OAAQ,KACRe,YAAY,EACZC,SAAS,EACTG,MAAM,EACNnC,KAAM,KACNkC,UAAU,EACVI,KAAM,KACNR,OAAO,EACPO,SAAU,KACVD,KAAM,KACNT,MAAM,EACNC,WAAW,EACXC,aAAa,EACbR,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,OAAO,EACPb,QAAQ,EACRE,MAAO,GACPC,QAAS,KACT4B,UAAW,KACXJ,aAAa,GAEf,IAAIa,EAnNJ,SAASO,EAAQC,EAAeC,GAC9B,IAAIZ,EAAa5G,UAAUrQ,OAAS,QAAsB6E,IAAjBwL,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEtF,GAAuB,kBAAZwH,EACT,OAAOA,EAGT,IAAIC,GAAYD,EAAQC,UAAY,IAAItB,KAAI,SAAUuB,GACpD,OAAOJ,EAAQC,EAAeG,EAChC,IAGIC,EAASpY,OAAOgH,KAAKiR,EAAQI,YAAc,CAAC,GAAGC,QAAO,SAAUC,EAAKxX,GACvE,IAAIkG,EAAMgR,EAAQI,WAAWtX,GAE7B,OAAQA,GACN,IAAK,QACHwX,EAAIC,MAAiB,UAAIvR,SAClBgR,EAAQI,WAAkB,MACjC,MAEF,IAAK,QACHE,EAAIC,MAAa,MAAkBvR,EAnC5B6P,MAAM,KAAKF,KAAI,SAAU6B,GACpC,OAAOA,EAAEC,MACX,IAAG3H,QAAO,SAAU0H,GAClB,OAAOA,CACT,IAAGH,QAAO,SAAUC,EAAKI,GACvB,IAVgB1R,EAUZhI,EAAI0Z,EAAKtG,QAAQ,KACjBuG,EAAOrF,EAASoF,EAAKnR,MAAM,EAAGvI,IAC9BkB,EAAQwY,EAAKnR,MAAMvI,EAAI,GAAGyZ,OAE9B,OADAE,EAAKC,WAAW,UAAYN,GAbZtR,EAa2B2R,EAZtC3R,EAAIM,OAAO,GAAGqM,cAAgB3M,EAAIO,MAAM,KAYOrH,EAAQoY,EAAIK,GAAQzY,EACjEoY,CACT,GAAG,CAAC,GA0BE,MAEF,QAC+B,IAAzBxX,EAAIsR,QAAQ,UAA2C,IAAzBtR,EAAIsR,QAAQ,SAC5CkG,EAAIC,MAAMzX,EAAI+S,eAAiB7M,EAE/BsR,EAAIC,MAAMjF,EAASxS,IAAQkG,EAKjC,OAAOsR,CACT,GAAG,CACDC,MAAO,CAAC,IAGNM,EAAoBzB,EAAW0B,MAC/BC,OAAsC,IAAtBF,EAA+B,CAAC,EAAIA,EACpDG,EAAY/G,EAAyBmF,EAAYtD,GAKrD,OAHAqE,EAAOI,MAAa,MAAItH,EAAeA,EAAe,CAAC,EAAGkH,EAAOI,MAAa,OAAIQ,GAG3EhB,EAActH,WAAM,EAAQ,CAACuH,EAAQiB,IAAKhI,EAAeA,EAAe,CAAC,EAAGkH,EAAOI,OAAQS,IAAY1D,OAAO9C,EAAmByF,IAC1I,EAoK2BiB,KAAK,KAAMC,IAAMpB,c,+BC7a5C,gzBAAO,IAAIqB,EAAM,MACNC,EAAS,SACTC,EAAQ,QACRC,EAAO,OACPC,EAAO,OACPC,EAAiB,CAACL,EAAKC,EAAQC,EAAOC,GACtCG,EAAQ,QACRC,EAAM,MACNC,EAAkB,kBAClBC,EAAW,WACXC,EAAS,SACTC,EAAY,YACZC,EAAmCP,EAAepB,QAAO,SAAUC,EAAK2B,GACjF,OAAO3B,EAAIhD,OAAO,CAAC2E,EAAY,IAAMP,EAAOO,EAAY,IAAMN,GAChE,GAAG,IACQO,EAA0B,GAAG5E,OAAOmE,EAAgB,CAACD,IAAOnB,QAAO,SAAUC,EAAK2B,GAC3F,OAAO3B,EAAIhD,OAAO,CAAC2E,EAAWA,EAAY,IAAMP,EAAOO,EAAY,IAAMN,GAC3E,GAAG,IAEQQ,EAAa,aACbC,EAAO,OACPC,EAAY,YAEZC,EAAa,aACbC,EAAO,OACPC,EAAY,YAEZC,EAAc,cACdC,EAAQ,QACRC,EAAa,aACbC,EAAiB,CAACT,EAAYC,EAAMC,EAAWC,EAAYC,EAAMC,EAAWC,EAAaC,EAAOC,E,+BC9B3G,+CACe,SAASE,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIza,UAAU,sDAEtBwa,EAASra,UAAYV,OAAOmC,OAAO6Y,GAAcA,EAAWta,UAAW,CACrE6F,YAAa,CACXpG,MAAO4a,EACPrZ,UAAU,EACVD,cAAc,KAGlBzB,OAAOa,eAAeka,EAAU,YAAa,CAC3CrZ,UAAU,IAERsZ,GAAY,YAAeD,EAAUC,EAC3C,C,uHCNaC,EAAyB,CAClCC,wBAAyB,CACrBC,KAAM,6BACNna,KAAM,+GAEVoa,qBAAsB,CAClBD,KAAM,0BACNna,KAAM,mFAEVqa,kBAAmB,CACfF,KAAM,sBACNna,KAAM,8EAEVsa,iBAAkB,CACdH,KAAM,sBACNna,KAAM,oFAEVua,wBAAyB,CACrBJ,KAAM,6BACNna,KAAM,2EAEVwa,aAAc,CACVL,KAAM,gBACNna,KAAM,+EAEVya,6BAA8B,CAC1BN,KAAM,sBACNna,KAAM,+IAEV0a,oBAAqB,CACjBP,KAAM,wBACNna,KAAM,uGAEV2a,mBAAoB,CAChBR,KAAM,uBACNna,KAAM,sFAEV4a,kBAAmB,CACfT,KAAM,gBACNna,KAAM,6IAEV6a,mBAAoB,CAChBV,KAAM,iBACNna,KAAM,iGAEV8a,mBAAoB,CAChBX,KAAM,kBACNna,KAAM,mBAEV+a,mBAAoB,CAChBZ,KAAM,iBACNna,KAAM,wFAEVgb,mBAAoB,CAChBb,KAAM,kBACNna,KAAM,mBAEVib,sBAAuB,CACnBd,KAAM,sBACNna,KAAM,gOAIVkb,sBAAuB,CACnBf,KAAM,qBACNna,KAAM,6FAEVmb,mBAAoB,CAChBhB,KAAM,kBACNna,KAAM,oLAEVob,uBAAwB,CACpBjB,KAAM,2BACNna,KAAM,qJAGVqb,yBAA0B,CACtBlB,KAAM,6BACNna,KAAM,6HAEVsb,4BAA6B,CACzBnB,KAAM,gCACNna,KAAM,oIAEVub,yBAA0B,CACtBpB,KAAM,yBACNna,KAAM,6EAEVwb,sBAAuB,CACnBrB,KAAM,4BACNna,KAAM,8FAEVyb,sBAAuB,CACnBtB,KAAM,4BACNna,KAAM,gGAEV0b,oBAAqB,CACjBvB,KAAM,yBACNna,KAAM,wCAEV2b,wBAAyB,CACrBxB,KAAM,uBACNna,KAAM,6CAEV4b,2BAA4B,CACxBzB,KAAM,gCACNna,KAAM,mHAEV6b,kBAAmB,CACf1B,KAAM,sBACNna,KAAM,2BAEV8b,uBAAwB,CACpB3B,KAAM,4BACNna,KAAM,oDAEV+b,yBAA0B,CACtB5B,KAAM,+BACNna,KAAM,2FAEVgc,mBAAoB,CAChB7B,KAAM,uBACNna,KAAM,8CAEVic,wBAAyB,CACrB9B,KAAM,4BACNna,KAAM,6DAEVkc,eAAgB,CACZ/B,KAAM,mBACNna,KAAM,4CAEVmc,iBAAkB,CACdhC,KAAM,sCACNna,KAAM,iFAEVoc,YAAa,CACTjC,KAAM,mBACNna,KAAM,6EAEVqc,iBAAkB,CACdlC,KAAM,qBACNna,KAAM,sBAEVsc,sBAAuB,CACnBnC,KAAM,0BACNna,KAAM,4BAEVuc,yBAA0B,CACtBpC,KAAM,6BACNna,KAAM,+BAEVwc,iBAAkB,CACdrC,KAAM,oBACNna,KAAM,4FAEVyc,wBAAyB,CACrBtC,KAAM,4BACNna,KAAM,kKAEV0c,qBAAsB,CAClBvC,KAAM,yBACNna,KAAM,sOAEV2c,mBAAoB,CAChBxC,KAAM,uBACNna,KAAM,wDAEV4c,oBAAqB,CACjBzC,KAAM,0CACNna,KAAM,mEAEV6c,8BAA+B,CAC3B1C,KAAM,kDACNna,KAAM,qEAEV8c,sBAAuB,CACnB3C,KAAM,2BACNna,KAAM,mEAEV+c,2BAA4B,CACxB5C,KAAM,2BACNna,KAAM,uGAEVgd,0BAA2B,CACvB7C,KAAM,0BACNna,KAAM,+DAEVid,mBAAoB,CAChB9C,KAAM,qCACNna,KAAM,+CAEVkd,aAAc,CACV/C,KAAM,iBACNna,KAAM,0IAOd,cAEI,SAAY,EAAAmd,EAAmBC,GAA/B,MACI,EAAM,UAAAD,EAAWC,IAIpB,K,OAHG,EAAK5X,KAAO,kBAEZxG,OAAO0G,eAAe,EAAM2X,EAAgB3d,W,CAC/C,CAkVL,OAzVqC,YAAS,KAanC,EAA6B,8BAApC,SAAqC4d,GACjC,OAAO,IAAID,EAAgBpD,EAAuBC,wBAAwBC,KACnEF,EAAuBC,wBAAwBla,KAA2B,uBAAAsd,E,EAO9E,EAAAC,2BAAP,WACI,OAAO,IAAIF,EAAgBpD,EAAuBG,qBAAqBD,KACnE,GAAGF,EAAuBG,qBAAqBpa,K,EAOhD,EAAuB,wBAA9B,SAA+Bwd,GAC3B,OAAO,IAAIH,EAAgBpD,EAAuBI,kBAAkBF,KAC7DF,EAAuBI,kBAAkBra,KAA2B,uBAAAwd,E,EAOxE,EAA2B,4BAAlC,SAAmCC,GAC/B,OAAO,IAAIJ,EAAgBpD,EAAuBK,iBAAiBH,KAC5DF,EAAuBK,iBAAiBta,KAAyB,qBAAAyd,E,EAMrE,EAAsC,uCAA7C,SAA8CC,GAC1C,OAAO,IAAIL,EAAgBpD,EAAuBM,wBAAwBJ,KACnEF,EAAuBM,wBAAwBva,KAAgB,YAAA0d,E,EAMnE,EAAAC,mBAAP,SAA0BC,EAAkBF,GACxC,OAAO,IAAIL,EAAgBpD,EAAuBO,aAAaL,KACxDF,EAAuBO,aAAaxa,KAAI,0BAA0B0d,EAAS,0BAA0BE,EAAS9H,MAAM,KAAK,G,EAM7H,EAAkC,mCAAzC,SAA0C4H,GACtC,OAAO,IAAIL,EAAgBpD,EAAuBQ,6BAA6BN,KACxEF,EAAuBQ,6BAA6Bza,KAA8C,0CAAA0d,E,EAOtG,EAA8B,+BAArC,SAAsCG,GAClC,OAAO,IAAIR,EAAgBpD,EAAuBS,oBAAoBP,KAC/DF,EAAuBS,oBAAoB1a,KAAsB,kBAAA6d,E,EAOrE,EAAAC,wBAAP,SAA+BC,EAAsBC,GACjD,OAAO,IAAIX,EAAgBpD,EAAuBW,kBAAkBT,KAC7DF,EAAuBW,kBAAkB5a,KAAI,mBAAmB+d,EAA2B,eAAAC,E,EAM/F,EAAAC,yBAAP,WACI,OAAO,IAAIZ,EAAgBpD,EAAuBY,mBAAmBV,KACjEF,EAAuBY,mBAAmB7a,K,EAO3C,EAAwB,yBAA/B,SAAgCke,GAC5B,OAAO,IAAIb,EAAgBpD,EAAuBa,mBAAmBX,KAC9DF,EAAuBa,mBAAmB9a,KAAU,MAAAke,E,EAMxD,EAAAC,yBAAP,WACI,OAAO,IAAId,EAAgBpD,EAAuBc,mBAAmBZ,KACjEF,EAAuBc,mBAAmB/a,K,EAO3C,EAAAoe,4BAAP,WACI,OAAO,IAAIf,EAAgBpD,EAAuBgB,sBAAsBd,KACpEF,EAAuBgB,sBAAsBjb,K,EAM9C,EAAAqe,4BAAP,WACI,OAAO,IAAIhB,EAAgBpD,EAAuBiB,sBAAsBf,KACpEF,EAAuBiB,sBAAsBlb,K,EAO9C,EAAwB,yBAA/B,SAAgCse,GAC5B,OAAO,IAAIjB,EAAgBpD,EAAuBe,mBAAmBb,KAC9DF,EAAuBe,mBAAmBhb,KAAU,MAAAse,E,EAMxD,EAAAC,yCAAP,WACI,OAAO,IAAIlB,EAAgBpD,EAAuBmB,uBAAuBjB,KAClEF,EAAuBmB,uBAAuBpb,KAAI,I,EAMtD,EAAAwe,2CAAP,WACI,OAAO,IAAInB,EAAgBpD,EAAuBoB,yBAAyBlB,KACvEF,EAAuBoB,yBAAyBrb,K,EAMjD,EAAAye,8CAAP,WACI,OAAO,IAAIpB,EAAgBpD,EAAuBqB,4BAA4BnB,KAC1EF,EAAuBqB,4BAA4Btb,K,EAMpD,EAAA0e,oCAAP,WACI,OAAO,IAAIrB,EAAgBpD,EAAuBsB,yBAAyBpB,KAAMF,EAAuBsB,yBAAyBvb,K,EAO9H,EAAgC,iCAAvC,SAAwC2e,GACpC,OAAO,IAAItB,EAAgBpD,EAAuBuB,sBAAsBrB,KAASF,EAAuBuB,sBAAsBxb,KAAqB,iBAAA2e,E,EAOhJ,EAAkC,mCAAzC,SAA0CA,GACtC,OAAO,IAAItB,EAAgBpD,EAAuBwB,sBAAsBtB,KAASF,EAAuBwB,sBAAsBzb,KAAqB,iBAAA2e,E,EAOhJ,EAAyB,0BAAhC,SAAiCC,GAC7B,OAAO,IAAIvB,EAAgBpD,EAAuByB,oBAAoBvB,KAASF,EAAuByB,oBAAoB1b,KAAsB,kBAAA4e,E,EAO7I,EAAAC,8BAAP,WACI,OAAO,IAAIxB,EAAgBpD,EAAuB0B,wBAAwBxB,KAAM,GAAGF,EAAuB0B,wBAAwB3b,K,EAM/H,EAAA8e,+BAAP,WACI,OAAO,IAAIzB,EAAgBpD,EAAuB2B,2BAA2BzB,KAAM,GAAGF,EAAuB2B,2BAA2B5b,K,EAMrI,EAAA+e,6BAAP,WACI,OAAO,IAAI1B,EAAgBpD,EAAuB4B,kBAAkB1B,KAAM,GAAGF,EAAuB4B,kBAAkB7b,K,EAMnH,EAAAgf,6BAAP,WACI,OAAO,IAAI3B,EAAgBpD,EAAuB6B,uBAAuB3B,KAAM,GAAGF,EAAuB6B,uBAAuB9b,K,EAM7H,EAAAif,oCAAP,WACI,OAAO,IAAI5B,EAAgBpD,EAAuB8B,yBAAyB5B,KAAM,GAAGF,EAAuB8B,yBAAyB/b,K,EAMjI,EAAAkf,iCAAP,WACI,OAAO,IAAI7B,EAAgBpD,EAAuB+B,mBAAmB7B,KAAMF,EAAuB+B,mBAAmBhc,K,EAMlH,EAAAmf,mCAAP,WACI,OAAO,IAAI9B,EAAgBpD,EAAuBgC,wBAAwB9B,KAAMF,EAAuBgC,wBAAwBjc,K,EAM5H,EAAAof,0BAAP,WACI,OAAO,IAAI/B,EAAgBpD,EAAuBiC,eAAe/B,KAAMF,EAAuBiC,eAAelc,K,EAM1G,EAAAqf,uBAAP,WACI,OAAO,IAAIhC,EAAgBpD,EAAuBkC,iBAAiBhC,KAAM,GAAGF,EAAuBkC,iBAAiBnc,K,EAOjH,EAAyB,0BAAhC,SAAiCsf,GAC7B,OAAO,IAAIjC,EAAgBpD,EAAuBmC,YAAYjC,KAAM,GAAGF,EAAuBmC,YAAYpc,KAAOsf,E,EAM9G,EAAAC,4BAAP,WACI,OAAO,IAAIlC,EAAgBpD,EAAuBoC,iBAAiBlC,KAAM,GAAGF,EAAuBoC,iBAAiBrc,K,EAMjH,EAAAwf,iCAAP,WACI,OAAO,IAAInC,EAAgBpD,EAAuBqC,sBAAsBnC,KAAM,GAAGF,EAAuBqC,sBAAsBtc,K,EAM3H,EAAAyf,oCAAP,WACI,OAAO,IAAIpC,EAAgBpD,EAAuBsC,yBAAyBpC,KAAM,GAAGF,EAAuBsC,yBAAyBvc,K,EAMjI,EAAA0f,4BAAP,WACI,OAAO,IAAIrC,EAAgBpD,EAAuBuC,iBAAiBrC,KAAM,GAAGF,EAAuBuC,iBAAiBxc,K,EAMjH,EAAA2f,6BAAP,WACI,OAAO,IAAItC,EAAgBpD,EAAuBwC,wBAAwBtC,KAAM,GAAGF,EAAuBwC,wBAAwBzc,K,EAM/H,EAAA4f,2BAAP,WACI,OAAO,IAAIvC,EAAgBpD,EAAuByC,qBAAqBvC,KAAMF,EAAuByC,qBAAqB1c,K,EAMtH,EAAA6f,8BAAP,WACI,OAAO,IAAIxC,EAAgBpD,EAAuB0C,mBAAmBxC,KAAMF,EAAuB0C,mBAAmB3c,K,EAMlH,EAAA8f,+BAAP,WACI,OAAO,IAAIzC,EAAgBpD,EAAuB2C,oBAAoBzC,KAAMF,EAAuB2C,oBAAoB5c,K,EAMpH,EAAA+f,sCAAP,WACI,OAAO,IAAI1C,EAAgBpD,EAAuB4C,8BAA8B1C,KAAMF,EAAuB4C,8BAA8B7c,K,EAGxI,EAAAggB,gCAAP,WACI,OAAO,IAAI3C,EAAgBpD,EAAuB+C,0BAA0B7C,KAAMF,EAAuB+C,0BAA0Bhd,K,EAMhI,EAAAigB,8BAAP,WACI,OAAO,IAAI5C,EAAgBpD,EAAuBgD,mBAAmB9C,KAAMF,EAAuBgD,mBAAmBjd,K,EAMlH,EAAAkgB,wBAAP,WACI,OAAO,IAAI7C,EAAgBpD,EAAuBiD,aAAa/C,KAAMF,EAAuBiD,aAAald,K,EAEhH,CAAD,CAzVA,CAAqC,I,+BCnNrC,wZAGO,IAAMmgB,EAAkB,WAClBC,EAAgB,SAChBC,EAAmB,YACnBC,EAAmB,YACnBC,EAAwB,iBACxBC,EAAa,UAEbC,EAAWzhB,OACX0hB,EAAWD,EAASH,GACpBK,EAAYF,EAAiB,OAC7BG,EAAYH,EAAiB,OAC7BI,EAAoBJ,EAAyB,eAC7CK,EAAoBJ,EAASH,E,yFCZ3B,SAASQ,EAAaC,GACnC,IAAIC,ECJS,WACb,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAC,QAAQ5hB,UAAU6hB,QAAQziB,KAAKoiB,QAAQC,UAAUG,QAAS,IAAI,WAAa,MACpE,CAGT,CAFE,MAAOpO,GACP,OAAO,CACT,CACF,CDNkC,GAChC,OAAO,WACL,IACEnQ,EADEye,EAAQ,OAAAvf,EAAA,GAAe+e,GAE3B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAY,OAAAxf,EAAA,GAAeF,MAAMwD,YACrCxC,EAASme,QAAQC,UAAUK,EAAO/R,UAAWgS,EAC/C,MACE1e,EAASye,EAAM9R,MAAM3N,KAAM0N,WAE7B,OAAO,OAAAiS,EAAA,GAA0B3f,KAAMgB,EACzC,CACF,C,+BEhBA,8CACe,SAAS4e,EAA2B7P,EAAG8P,GACpD,IAAIC,EAAuB,qBAAXxjB,QAA0ByT,EAAEzT,OAAOC,WAAawT,EAAE,cAClE,IAAK+P,EAAI,CACP,GAAI3jB,MAAMC,QAAQ2T,KAAO+P,EAAK,YAA2B/P,KAAO8P,GAAkB9P,GAAyB,kBAAbA,EAAE1S,OAAqB,CAC/GyiB,IAAI/P,EAAI+P,GACZ,IAAI5jB,EAAI,EACJ6jB,EAAI,WAAc,EACtB,MAAO,CACLrK,EAAGqK,EACH9P,EAAG,WACD,OAAI/T,GAAK6T,EAAE1S,OAAe,CACxBH,MAAM,GAED,CACLA,MAAM,EACNE,MAAO2S,EAAE7T,KAEb,EACAiV,EAAG,SAAW1U,GACZ,MAAMA,CACR,EACAujB,EAAGD,EAEP,CACA,MAAM,IAAIviB,UAAU,wIACtB,CACA,IAEEF,EAFE2iB,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACLxK,EAAG,WACDoK,EAAKA,EAAG/iB,KAAKgT,EACf,EACAE,EAAG,WACD,IAAIkQ,EAAOL,EAAG9iB,OAEd,OADAijB,EAAmBE,EAAKjjB,KACjBijB,CACT,EACAhP,EAAG,SAAWiP,GACZF,GAAS,EACT5iB,EAAM8iB,CACR,EACAJ,EAAG,WACD,IACOC,GAAoC,MAAhBH,EAAW,QAAWA,EAAW,QAG5D,CAFE,QACA,GAAII,EAAQ,MAAM5iB,CACpB,CACF,EAEJ,C,wKC1CM+iB,c,wIACJC,QAAUC,YAAc,EAAK3R,O,sCAE7B4R,kB,OACS,kBAAC,IAAD,CAAQF,QAAStgB,KAAKsgB,QAASnL,SAAUnV,KAAK4O,MAAMuG,U,IAJzDkL,CAAsBhK,IAAMoK,WCATpK,IAAMoK,UCPxB,IAAMC,EAAoB,SAACC,EAAIC,G,MACtB,oBAAPD,EAAoBA,EAAGC,GAAmBD,C,EAEtCE,EAAsB,SAACF,EAAIC,G,MACjB,kBAAPD,EACVG,YAAeH,EAAI,KAAM,KAAMC,GAC/BD,C,ECGAI,EAAiB,SAAAC,G,OAAKA,C,EACtBC,EAAe5K,IAAf4K,WACoB,qBAAfA,IACTA,EAAaF,GAOf,IAAMG,EAAaD,GACjB,WAOEpP,G,IALEsP,EAMC,EANDA,SACAC,EAKC,EALDA,SACAC,EAIC,EAJDA,QACGC,EAGF,iDACKlT,EAAWkT,EAAXlT,OAEJQ,EAAQ,OAAH,IAAG,CAAH,GACJ0S,EADI,CAEPD,QAAS,SAAAE,G,IAEDF,GAASA,EAAQE,E,CACrB,MAAOC,G,MACPD,EAAME,iBACAD,C,CAILD,EAAMG,kBACU,IAAjBH,EAAMI,QACJvT,GAAqB,UAAXA,GA7BtB,SAAyBmT,G,SACbA,EAAMK,SAAWL,EAAMM,QAAUN,EAAMO,SAAWP,EAAMQ,S,CA6BzDC,CAAgBT,KAEjBA,EAAME,iBACNL,I,WAOJxS,EAAM2F,IADJwM,IAAmBE,GACTpP,GAEAsP,EAIP,sBAAOvS,E,IAWlB,IAAMqT,EAAOhB,GACX,WAQEpP,G,QANEqQ,iBAOC,MAPWhB,EAOX,EANDxQ,EAMC,EANDA,QACAiQ,EAKC,EALDA,GACAQ,EAIC,EAJDA,SACGG,EAGF,uD,OAED,kBAACa,IAAcC,SAAf,MACG,SAAA/iB,GACWA,GAAV,aAAU,G,IAEFihB,EAAYjhB,EAAZihB,QAEF+B,EAAWxB,EACfH,EAAkBC,EAAIthB,EAAQgjB,UAC9BhjB,EAAQgjB,UAGJC,EAAOD,EAAW/B,EAAQiC,WAAWF,GAAY,GACjDzT,EAAQ,OAAH,IAAG,CAAH,GACN0S,EADM,CAETgB,OACAlB,SAHS,W,IAIDiB,EAAW3B,EAAkBC,EAAIthB,EAAQgjB,UACzCG,EAAwBC,YAAWpjB,EAAQgjB,YAAcI,YAAW5B,EAAoBwB,KAC9E3R,GAAW8R,EAAyBlC,EAAQ5P,QAAU4P,EAAQnjB,MAEvEklB,E,WAKPtB,IAAmBE,EACrBrS,EAAM2F,IAAM1C,GAAgBsP,EAE5BvS,EAAMuS,SAAWA,EAGZ9K,IAAMpB,cAAciN,EAAWtT,E,OC1G1CmS,EAAiB,SAAAC,G,OAAKA,C,EACtBC,EAAe5K,IAAf4K,WACoB,qBAAfA,IACTA,EAAaF,GAUCE,GACd,WAgBEpP,G,QAdE,gBAAgB6Q,OAef,MAf6B,OAe7B,E,IAdDC,uBAcC,MAdiB,SAcjB,EAbDC,EAaC,EAbDA,YACWC,EAYV,EAZD3Q,UACA4Q,EAWC,EAXDA,MACUC,EAUT,EAVDC,SACUC,EAST,EATDZ,SACAa,EAQC,EARDA,UACAC,EAOC,EAPDA,OACOC,EAMN,EANDpN,MACA2K,EAKC,EALDA,GACAQ,EAIC,EAJDA,SACGG,EAGF,uJ,OAED,kBAACa,IAAcC,SAAf,MACG,SAAA/iB,GACWA,GAAV,aAAU,G,IAEJuhB,EAAkBqC,GAAgB5jB,EAAQgjB,SAC1CgB,EAAaxC,EACjBH,EAAkBC,EAAIC,GACtBA,GAEgB0C,EAASD,EAAnBE,SAEFC,EACJF,GAAQA,EAAK5S,QAAQ,4BAA6B,QAE9CC,EAAQ6S,EACVC,YAAU7C,EAAgB2C,SAAU,CAClCD,KAAME,EACNV,QACAI,YACAC,WAEF,KACEH,KAAcD,EAChBA,EAAapS,EAAOiQ,GACpBjQ,GAEAuB,EACuB,oBAAlB2Q,EACHA,EAAcG,GACdH,EAEF7M,EACmB,oBAAdoN,EAA2BA,EAAUJ,GAAYI,EAEtDJ,IACF9Q,EA9DZ,W,2BAA2BwR,EAAY,yBAAZA,EAAY,gB,OAC9BA,EAAW1V,QAAO,SAAA9R,G,OAAKA,C,IAAGynB,KAAK,I,CA6DhBC,CAAe1R,EAAWyQ,GACtC3M,EAAQ,OAAH,IAAG,CAAH,GAAQA,EAAU4M,I,IAGnBhU,EAAQ,OAAH,IAAG,CAAH,C,eACQoU,GAAYN,GAAgB,KAC7CxQ,YACA8D,QACA2K,GAAI0C,GACD/B,G,OAIDP,IAAmBE,EACrBrS,EAAM2F,IAAM1C,GAAgBsP,EAE5BvS,EAAMuS,SAAWA,EAGZ,kBAACc,EAASrT,E,mFCvF3B,0BAwHC,CAAD,OAjHW,EAAe,gBAAtB,SAAuBiV,GACnB,GAAIC,EAAYC,QAAQF,GACpB,MAAM,IAAgBG,4BAA4BH,GAEtD,IACMI,EADkB,uCACQC,KAAKL,GACrC,IAAKI,GAAWA,EAAQ5mB,OAAS,EAC7B,MAAM,IAAgB8mB,wBAAwB,6BAA6BC,KAAKC,UAAUR,IAO9F,MALuC,CACnCS,OAAQL,EAAQ,GAChBM,WAAYN,EAAQ,GACpBO,OAAQP,EAAQ,G,EAUjB,EAAO,QAAd,SAAeQ,GACX,MAAuB,qBAARA,IAAwBA,GAAO,IAAMA,EAAIpnB,M,EAOrD,EAAU,WAAjB,SAAkBqnB,GACd,GAAIA,IAAWZ,EAAYC,QAAQW,GAC/B,IACI,IAAM3mB,EAAMqmB,KAAK5S,MAAMkT,GACvB,OAAmC,IAA5BznB,OAAOgH,KAAKlG,GAAKV,MACf,CAAX,MAAO8T,GAAI,CAEjB,OAAO,C,EAGJ,EAAA2E,WAAP,SAAkB2O,EAAaE,GAC3B,OAA+B,IAAxBF,EAAInV,QAAQqV,E,EAGhB,EAAAC,SAAP,SAAgBH,EAAaE,GACzB,OAAQF,EAAIpnB,QAAUsnB,EAAOtnB,QAAYonB,EAAII,YAAYF,KAAaF,EAAIpnB,OAASsnB,EAAOtnB,M,EAQvF,EAAmB,oBAA1B,SAA8BynB,GAC1B,IAAM/mB,EAAU,CAAC,EACXgnB,EAASD,EAAM/Q,MAAM,KACrBiR,EAAS,SAACtP,GAAc,OAAAuP,mBAAmBvP,EAAEhF,QAAQ,MAAO,KAAK,EASvE,OARAqU,EAAOxkB,SAAQ,SAACqV,GACZ,GAAIA,EAAKD,OAAQ,CACP,MAAeC,EAAK7B,MAAM,SAAU,GAAnC/V,EAAG,KAAEZ,EAAgC,KACxCY,GAAOZ,IACPW,EAAIinB,EAAOhnB,IAAQgnB,EAAO5nB,GAEjC,CACL,IACOW,C,EAQJ,EAAgB,iBAAvB,SAAwB9B,GACpB,OAAOA,EAAI4X,KAAI,SAAArR,GAAS,OAAAA,EAAMmT,MAAN,G,EAOrB,EAA2B,4BAAlC,SAAmC1Z,GAC/B,OAAOA,EAAI+R,QAAO,SAAAxL,GACd,OAAQshB,EAAYC,QAAQvhB,EAChC,G,EAOG,EAAe,gBAAtB,SAA0BiiB,GACtB,IACI,OAAOL,KAAK5S,MAAMiT,EAGrB,CAFC,MAAOtT,GACL,OAAO,IACV,C,EAQE,EAAA+T,aAAP,SAAoBC,EAAiBC,GAOjC,OAFsB,IAAIC,OAAOF,EAAQzU,QAAQ,MAAO,QAAQA,QAAQ,MAAO,SAASA,QAAQ,MAAO,QAE1FP,KAAKiV,E,EAEzB,CAAD,CAxHA,E,mCCNYE,E,kCAAZ,SAAYA,GACR,0CACA,sCACA,oCACA,wCACA,gCACA,oCACA,oCACA,+CACA,mDACA,mDACA,kEACA,yCACA,6CACA,6CACA,6DACA,iEACA,iEACA,mDACA,+CACA,kCACA,kCACA,sCACA,sCACA,6BACH,CAzBD,CAAYA,MAAS,I,oFCKRC,EACQ,CACbnN,KAAM,mBACNna,KAAM,uCAHDsnB,EAKU,CACfnN,KAAM,sBACNna,KAAM,wIAOd,cAsBI,WAAYmd,EAAoBC,EAAuBmK,GAAvD,IASC,OARSvJ,EAAcZ,EAAkBD,EAAS,KAAKC,EAAiBD,E,OACrE,cAAMa,IAAa,KACnBhf,OAAO0G,eAAe,EAAM8hB,EAAU9nB,WAEtC,EAAKyd,UAAYA,GAAa,IAAU7T,aACxC,EAAK8T,aAAeA,GAAgB,IAAU9T,aAC9C,EAAKme,SAAWF,GAAY,IAAUje,aACtC,EAAK9D,KAAO,Y,CACf,CAsBL,OArD+B,YAAK,KAiChC,EAAgB,2BAAhB,SAAiBkiB,GACb3lB,KAAK2lB,cAAgBA,C,EAOlB,EAAqB,sBAA5B,SAA6BC,GACzB,OAAO,IAAIH,EAAUF,EAAiCnN,KAASmN,EAAiCtnB,KAAS,KAAA2nB,E,EAQtG,EAAuB,wBAA9B,SAA+BA,GAC3B,OAAO,IAAIH,EAAUF,EAAmCnN,KAASmN,EAAmCtnB,KAAS,KAAA2nB,E,EAEpH,CAAD,CArDA,CAA+BpkB,M,4CCtB/B,IAAIqkB,E,kCAEJ,IAAIC,EAAY,YAKZpX,EAAc,cAKdqX,EAAY,YAKZC,EAAc,WAKdC,EAAmB,gBAKnBC,EAAc,cAKdC,EAAe,YAKfC,EAAqB,WAKrBC,EAAgB,cAKhBC,EAAqBD,EAIrBE,EAAyB,UAKzBC,EAAe,YAKfC,EAAa,YAIbC,EAAoB,OAASD,EAI7BE,EAAyB,iBAIzBC,EAAkB,gBAKlBC,EAAiB,cAKjBC,EAAkB,eAClBC,EAAM9pB,OAKN+pB,EAAqBD,EAAoB,eAIzCE,EAAkBF,EAAyB,oBAuB/C,IAAIG,EAlBJ,WACI,IAAIlmB,EAaJ,cAZWmmB,aAAerB,IACtB9kB,EAASmmB,YAERnmB,UAAiBjC,OAAS+mB,IAC3B9kB,EAASjC,MAERiC,UAAiBomB,SAAWtB,IAC7B9kB,EAASomB,QAERpmB,UAAiBqmB,IAAWvB,IAC7B9kB,EAASqmB,GAENrmB,GAAU,CAAC,CACtB,CAGWsmB,GACPC,EAAWL,EAAKP,KAA4BO,EAAKP,GAA0B,CAC3E5W,GAAI8V,EAAK,CAAC,EACNA,EAAGiB,IAAmB,EACtBjB,EAAGgB,IAAkB,EACrBhB,GACJ5V,EAAG,MAMP,SAASuX,EAAgBzpB,EAAK8X,GAC1B,OAAO9X,GAAOgpB,EAAIhB,GAAWloB,eAAed,KAAKgB,EAAK8X,EAC1D,CAKA,SAAS4R,EAA0BrZ,GAC/B,OAAOA,IAAWA,IAAW2Y,EAAIhB,IAAc3X,IAAWjS,MAAM4pB,GACpE,CAKA,SAAS2B,EAAkCtZ,GACvC,OAAOqZ,EAA0BrZ,IAAWA,IAAWuZ,SAAS5B,EACpE,CAKA,SAAS6B,EAAaxZ,GAClB,IAAIyZ,EACJ,GAAIzZ,EAAQ,CAER,GAAI4Y,EACA,OAAOA,EAAmB5Y,GAE9B,IAAI0Z,EAAW1Z,EAAOqY,IAAerY,EAAO2X,KAAe3X,EAAOM,GAAeN,EAAOM,GAAaqX,GAAa,MAElH8B,EAAWzZ,EAAOsY,IAAsBoB,EACnCN,EAAgBpZ,EAAQsY,YAGlBtY,EAAOwY,GACdiB,EAAWzZ,EAAOsY,GAAqBtY,EAAOwY,IAAoBxY,EAAOsY,GACzEtY,EAAOwY,GAAmBkB,EAEtC,CACI,OAAOD,CACX,CAMA,SAASE,EAAa3Z,EAAQ4Z,GAC1B,IAAIpZ,EAAQ,GACZ,GAAIqY,EACArY,EAAQqY,EAAgB7Y,QAGxB,IAAK,IAAI6Z,KAAU7Z,EACO,kBAAX6Z,GAAuBT,EAAgBpZ,EAAQ6Z,IACtDrZ,EAAMzR,KAAK8qB,GAIvB,GAAIrZ,GAASA,EAAMvR,OAAS,EACxB,IAAK,IAAI6qB,EAAK,EAAGA,EAAKtZ,EAAMvR,OAAQ6qB,IAChCF,EAAKpZ,EAAMsZ,GAGvB,CASA,SAASC,EAAoB/Z,EAAQga,EAAUC,GAC3C,OAAQD,IAAa1Z,UAAsBN,EAAOga,KAAcpC,IAAgBqC,GAAWb,EAAgBpZ,EAAQga,GACvH,CAMA,SAASE,EAAgBC,GACrB,MAAM,IAAI/qB,UAAU,iBAAmB+qB,EAC3C,CAyBA,SAASC,EAAYpoB,EAAQhD,GACzB,IAAK,IAAI8qB,EAAK9nB,EAAO/C,OAAS,EAAG6qB,GAAM,EAAGA,IACtC,GAAI9nB,EAAO8nB,KAAQ9qB,EACf,OAAO,EAGf,OAAO,CACX,CA0HA,SAASqrB,EAAmBC,EAAOxW,EAAW9D,EAAQua,EAAeC,GACjE,SAASC,EAAwBH,EAAON,GACpC,IAAIU,EAAgB,SAAhBA,IAEA,IAAIC,EA1EhB,SAAsB3a,EAAQga,EAAUM,EAAOM,GAC3C,IAAID,EAAW,KAGf,GAAI3a,GAAUoZ,EAAgBkB,EAAOvC,GAAe,CAChD,IAAI8C,EAAgB7a,EAAO6X,IAAqB,CAAC,EAQjD,IAPA8C,GAAYE,EAAcP,EAAMvC,KAAkB,CAAC,GAAGiC,KAGlDE,EAAgB,YAAcF,EAAW,KAAOpC,IAI/C+C,EAAS1C,KAAwD,IAAtC4C,EAAc3C,GAA+B,CAQzE,IANA,IAAI4C,GAAc1B,EAAgBpZ,EAAQga,GAEtCe,EAAWvB,EAAaxZ,GACxBgb,EAAU,GAGPF,GAAcC,IAAazB,EAAkCyB,KAAcX,EAAYY,EAASD,IAAW,CAC9G,IAAIE,EAAYF,EAASf,GACzB,GAAIiB,EAAW,CACXH,EAAcG,IAAcL,EAC5B,KACpB,CAEgBI,EAAQjsB,KAAKgsB,GACbA,EAAWvB,EAAauB,EACxC,CACY,IACQD,IAGA9a,EAAOga,GAAYW,GAGvBA,EAAS1C,GAAiB,CAM1C,CAJY,MAAOlV,GAGH8X,EAAc3C,IAAsB,CACpD,CACA,CACA,CACI,OAAOyC,CACX,CA0B2BO,CAAatpB,KAAMooB,EAAUM,EAAOI,IAzB/D,SAAuBV,EAAUM,EAAOM,GACpC,IAAIK,EAAYX,EAAMN,GAStB,OAPIiB,IAAcL,IAEdK,EAAYzB,EAAac,GAAON,WAEzBiB,IAAcrD,GACrBsC,EAAgB,IAAMF,EAAW,cAAgBpC,GAE9CqD,CACX,CAciFE,CAAcnB,EAAUM,EAAOI,GAEpG,OAAOC,EAASpb,MAAM3N,KAAM0N,UACxC,EAIQ,OADAob,EAAc5C,GAAe,EACtB4C,CACf,CACI,IAAKrB,EAA0BiB,GAAQ,CACnC,IAAIO,EAAgB7a,EAAO6X,GAAoB7X,EAAO6X,IAAqB,CAAC,EACxEuD,EAAcP,EAAc/W,GAAc+W,EAAc/W,IAAc,CAAC,GAEjC,IAAtC+W,EAAc3C,KACd2C,EAAc3C,KAAwBsC,GAE1Cb,EAAa3Z,GAAQ,SAAU3K,GAEvB0kB,EAAoB/Z,EAAQ3K,GAAM,IAAU2K,EAAO3K,KAAUklB,EAAcllB,KAE3E+lB,EAAY/lB,GAAQ2K,EAAO3K,UACpB2K,EAAO3K,KAET+jB,EAAgBkB,EAAOjlB,IAAUilB,EAAMjlB,KAAUilB,EAAMjlB,GAAMyiB,MAC9DwC,EAAMjlB,GAAQolB,EAAwBH,EAAOjlB,IAGjE,GACA,CACA,CAkCA,SAASgmB,EAAYrb,EAAQsb,GACzB,OAAIlC,EAAgBpZ,EAAQ2X,GAEjB3X,EAAO3K,MAAQimB,GAAgBlD,IAEhCpY,GAAU,CAAC,GAAGM,IAAiB,CAAC,GAAGjL,MAAQimB,GAAgBlD,CACzE,CAqDe,SAASmD,EAAaC,EAAUxb,EAAQyb,EAAcC,GAE5DtC,EAAgBoC,EAAU7D,IAC3BuC,EAAgB,4CAGpB,IAAIyB,EAAaH,EAAS7D,IA5F9B,SAAyBgE,EAAYC,GAEjC,GAAIhD,EAAoB,CAIpB,IAFA,IAAIoC,EAAU,GACVa,EAAYrC,EAAaoC,GACtBC,IAAcvC,EAAkCuC,KAAezB,EAAYY,EAASa,IAAY,CACnG,GAAIA,IAAcF,EACd,OAAO,EAIXX,EAAQjsB,KAAK8sB,GACbA,EAAYrC,EAAaqC,EACrC,CACQ,OAAO,CACf,CAEI,OAAO,CACX,EA0ESC,CAAgBH,EAAY3b,IAC7Bka,EAAgB,IAAMmB,EAAYG,GAAY,0BAA4BH,EAAYrb,GAAU,KAEpG,IAAI8D,EAAY,KACZsV,EAAgBuC,EAAY5D,GAE5BjU,EAAY6X,EAAW5D,IAMvBjU,EAAYkU,EAAqBqD,EAAYG,EAAU,KAAO,IAAMrC,EAAStX,EAC7EsX,EAAStX,IACT8Z,EAAW5D,GAAgBjU,GAE/B,IAAIiY,EAAcR,EAAapD,GAC3B6D,IAAgBD,EAAYtD,GAC5BuD,GAAeN,QAAuC5nB,IAA5B4nB,EAAQjD,KAClCuD,IAAgBN,EAAQjD,IAG5B,IAAIwD,EA9SR,SAA2BL,GAEvB,IAAIK,EAAY,CAAC,EASjB,OAPAtC,EAAaiC,GAAY,SAAUvmB,IAE1B4mB,EAAU5mB,IAAS0kB,EAAoB6B,EAAYvmB,GAAM,KAE1D4mB,EAAU5mB,GAAQumB,EAAWvmB,GAEzC,IACW4mB,CACX,CAkSoBC,CAAkBlc,GAE9Bmc,EAhRR,SAAuBR,EAAYC,EAAYK,EAAWD,GACtD,SAASI,EAAepc,EAAQqc,EAAUrC,GACtC,IAAIsC,EAAUD,EAASrC,GACvB,GAAIsC,EAAQxE,IAAgBkE,EAAa,CAErC,IAAInB,EAAgB7a,EAAO6X,IAAqB,CAAC,GACP,IAAtCgD,EAAc3C,KACdoE,GAAWzB,EAAcwB,EAAStE,KAAkB,CAAC,GAAGiC,IAAasC,EAErF,CACQ,OAAO,WAEH,OAAOA,EAAQ/c,MAAMS,EAAQV,UACzC,CACA,CAEI,IAAI6c,EAAY,CAAC,EACjBxC,EAAasC,GAAW,SAAU5mB,GAE9B8mB,EAAU9mB,GAAQ+mB,EAAeR,EAAYK,EAAW5mB,EAChE,IAKI,IAHA,IAAIknB,EAAY/C,EAAamC,GACzBX,EAAU,GAEPuB,IAAcjD,EAAkCiD,KAAenC,EAAYY,EAASuB,IAEvF5C,EAAa4C,GAAW,SAAUlnB,IAKzB8mB,EAAU9mB,IAAS0kB,EAAoBwC,EAAWlnB,GAAOujB,KAE1DuD,EAAU9mB,GAAQ+mB,EAAeR,EAAYW,EAAWlnB,GAExE,IAIQ2lB,EAAQjsB,KAAKwtB,GACbA,EAAY/C,EAAa+C,GAE7B,OAAOJ,CACX,CAoOoBK,CAAcb,EAAY3b,EAAQic,EAAWD,GAG7DP,EAAazb,EAAQmc,GAErB,IAAI3B,IAAoB5B,KAAwBmD,EAAYrD,GACxD8B,GAAmBkB,IACnBlB,IAAoBkB,EAAQhD,IAGhC2B,EAAmBsB,EAAY7X,EAAW9D,EAAQic,GAA+B,IAApBzB,EACjE,CAMAe,EAAapD,GAA0BgB,EAASxX,C,kDC5hBhD,k3CAIA,IAuEI8a,EAAoB,CACtBvZ,OAAQ,MACRC,SAAU,oBACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,6XAE3ByZ,EAAqB,CACvBxZ,OAAQ,MACRC,SAAU,qBACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,+XAO3B0Z,EAAc,CAChBzZ,OAAQ,MACRC,SAAU,aACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,mMAE3B2Z,EAAc,CAChB1Z,OAAQ,MACRC,SAAU,aACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,iMAE3B4Z,EAAe,CACjB3Z,OAAQ,MACRC,SAAU,cACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,kMAE3B6Z,EAAY,CACd5Z,OAAQ,MACRC,SAAU,WACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,kMAwE3B8Z,EAAc,CAChB7Z,OAAQ,MACRC,SAAU,aACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,6PAqH3B+Z,EAAQ,CACV9Z,OAAQ,MACRC,SAAU,MACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,wUAY3Bga,EAAS,CACX/Z,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,0VAoD3Bia,EAAS,CACXha,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,kZAyI3Bka,EAAQ,CACVja,OAAQ,MACRC,SAAU,MACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,uOA6T3Bma,EAAgB,CAClBla,OAAQ,MACRC,SAAU,eACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,yWA2G3Boa,EAAW,CACbna,OAAQ,MACRC,SAAU,SACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,0EAgC3Bqa,EAAU,CACZpa,OAAQ,MACRC,SAAU,QACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,mOAkF3Bsa,EAAQ,CACVra,OAAQ,MACRC,SAAU,MACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,+yBAgH3Bua,EAAe,CACjBta,OAAQ,MACRC,SAAU,cACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,wUAqC3Bwa,EAAS,CACXva,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,2SAyN3Bya,EAAS,CACXxa,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,ggBA6E3B0a,EAAwB,CAC1Bza,OAAQ,MACRC,SAAU,uBACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,qcAsB3B2a,EAA0B,CAC5B1a,OAAQ,MACRC,SAAU,2BACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,gYA2G3B4a,EAAe,CACjB3a,OAAQ,MACRC,SAAU,cACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,mXAiB3B6a,EAAsB,CACxB5a,OAAQ,MACRC,SAAU,sBACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,8gCAiQ3B8a,EAAU,CACZ7a,OAAQ,MACRC,SAAU,QACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,uuBAkjB3B+a,EAAS,CACX9a,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,yTAE3Bgb,EAAe,CACjB/a,OAAQ,MACRC,SAAU,cACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,oZAgM3Bib,EAAS,CACXhb,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,yNAE3Bkb,EAAa,CACfjb,OAAQ,MACRC,SAAU,YACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,0RAkF3Bmb,EAAiB,CACnBlb,OAAQ,MACRC,SAAU,iBACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,yPA+H3Bob,EAAgB,CAClBnb,OAAQ,MACRC,SAAU,eACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,+KAsL3Bqb,EAAe,CACjBpb,OAAQ,MACRC,SAAU,cACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,0NAyD3Bsb,EAAQ,CACVrb,OAAQ,MACRC,SAAU,MACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,yPAwJ3Bub,EAAS,CACXtb,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,oPA2V3Bwb,EAAW,CACbvb,OAAQ,MACRC,SAAU,SACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,8VA0W3Byb,EAAY,CACdxb,OAAQ,MACRC,SAAU,UACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,ukBAY3B0b,EAAW,CACbzb,OAAQ,MACRC,SAAU,SACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,8GAsL3B2b,EAAS,CACX1b,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,wnBA0C3B4b,EAAQ,CACV3b,OAAQ,MACRC,SAAU,MACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,uSA4P3B6b,EAAa,CACf5b,OAAQ,MACRC,SAAU,YACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,4WAqH3B8b,EAAS,CACX7b,OAAQ,MACRC,SAAU,OACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,qQAyD3B+b,EAAa,CACf9b,OAAQ,MACRC,SAAU,YACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,wbAyD3Bgc,EAAU,CACZ/b,OAAQ,MACRC,SAAU,QACVF,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,woB,kBCppJ7BxV,EAAOC,QAAUC,EAAQ,IAARA,E,0FCbJ,SAAS2T,EAAmBzT,GACzC,OCJa,SAA4BA,GACzC,GAAIE,MAAMC,QAAQH,GAAM,OAAO,OAAAqxB,EAAA,GAAiBrxB,EAClD,CDES,CAAkBA,IELZ,SAA0B+H,GACvC,GAAsB,qBAAX1H,QAAmD,MAAzB0H,EAAK1H,OAAOC,WAA2C,MAAtByH,EAAK,cAAuB,OAAO7H,MAAM0T,KAAK7L,EACtH,CFGmC,CAAgB/H,IAAQ,OAAAsB,EAAA,GAA2BtB,IGLvE,WACb,MAAM,IAAIuB,UAAU,uIACtB,CHG8F,EAC9F,C,65BIOI+vB,EAAY,SACZC,EAAc,WACdC,EAAkB,eAClBC,EAAe,YACfC,EAAa,UACbC,EAAc,WACdC,EAAa,UACbC,EAAiB,cACjBC,EAAU,OACVC,EAAY,SACZC,EAAc,WACdC,EAAiB,cACjBC,EAAU,OACVC,EAAa,WACbC,EAAoB,iBACpBC,EAAa,KACbC,EAAqB,KACrBC,GAAe,EACfC,EAAqB,KACrBC,EAAoB,KACxB,SAASC,EAAa/E,EAAUgF,GAChC,SACA,MACA,IAEA,KADA,UACA,CACA,aACA,IACA,SAEA,CAGA,CADA,SACA,CAEA,MACA,IACA,YACA,oBAGA,CADA,SACA,CAGA,CACA,QACA,CAYA,cACA,oBACA,eACA,KAGA,WAEA,OAEA,IACA,CAQA,aACA,2CACA,CAMA,aACA,WACA,OAGA,IACA,CAQA,aACA,+CACA,CAMA,aACA,WACA,SAEA,IACA,CAQA,aACA,iDACA,CAMA,aACA,WACA,UAEA,IACA,CAQA,aACA,6CACA,CAMA,aACA,WACA,QAEA,IACA,CAMA,cACA,SACA,0BACA,KACA,QAEA,CACA,uCACA,SAEA,IACA,CAIA,aACA,4BACA,QAEA,IACA,CAMA,aACA,WACA,CAQA,aACA,oDACA,CAMA,aACA,WACA,WAEA,IACA,CAMA,aACA,WACA,CAMA,aACA,WACA,CAIA,aAEA,UACA,yBACA,aAGA,CAIA,aACA,UACA,+BAGA,QADA,YACA,YACA,oCACA,CACA,QACA,CAIA,cAEA,QADA,iBACA,GACA,cACA,6BACA,CACA,sBAEA,qBACA,cACA,+CACA,CACA,qBACA,6BACA,KACA,UAEA,CACA,WACA,CAIA,cACA,mCACA,MAOA,MANA,qBACA,yEAEA,MACA,oBAEA,GACA,CAaA,aAIA,OAHA,WACA,gCAEA,CACA,CAMA,cACA,SACA,IACA,eACA,mBACA,UACA,mBAIA,CADA,SACA,CAEA,QACA,CACA,aAOA,OANA,WACA,gCACA,MACA,iCAGA,CACA,CAKA,aACA,SACA,IAEA,IADA,IAIA,CADA,SACA,CAEA,QACA,CACA,SAASC,EAAezuB,EAAQqD,GAChC,KACA,0BACA,WACA,WACA,WACA,QAGA,CAEA,QACA,CAKA,eACA,UACA,YAEA,wCAEA,IACA,CAKA,eACA,MACA,MACA,MAEA,2CACA,kDACA,CACA,QACA,C,+BC/Ye,SAASqrB,EAAgB/e,GAItC,OAHA+e,EAAkB7xB,OAAO0G,eAAiB1G,OAAOiD,eAAekW,OAAS,SAAyBrG,GAChG,OAAOA,EAAEnM,WAAa3G,OAAOiD,eAAe6P,EAC9C,EACO+e,EAAgB/e,EACzB,CALA,iC,+BCAA,+CACe,SAASd,EAAgBlR,EAAKC,EAAKZ,GAYhD,OAXAY,EAAM,YAAcA,MACTD,EACTd,OAAOa,eAAeC,EAAKC,EAAK,CAC9BZ,MAAOA,EACPqB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZZ,EAAIC,GAAOZ,EAENW,CACT,C,gCCdA,kHAEA,SAASgxB,EAAUC,GAEjB,OAAOA,aADUC,YAAUD,GAAME,SACIF,aAAgBE,OACv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,CAFA,iC,+BCAA,8CACe,SAASk5C,EAAmB/0C,GAEzC,QAAS6Z,YAAU7Z,GAAWA,EAAQwb,cACtCxb,EAAQg1C,WAAa9iC,OAAO8iC,UAAUC,eACxC,C,iOCKIC,EAA0B,uBAC1BC,EAAiB,UACjBC,EAAe,aACfC,EAAW,EAmBf,SAASC,EAAuBC,EAAgBv1B,EAAQ,EAAxD,GAGA,WACA,KACA,WAEA,IAzBA,SAA4Bw1B,EAAOC,EAAMC,GACzC,SACA,gBACA,SAEA,UACA,CAEA,0BACA,CAgBA,WAEA,OACA,MAuCA,WACA,QAGA,GADA,mBACA,GACA,QACA,cACA,2BACA,IACA,0BAIA,CAFA,SACA,mFACA,CACA,IACA,KAEA,CACA,QACA,EAzDA,KACA,gBACA,QACA,EACA,mBACA,uBACA,EACA,kBACA,QACA,EACA,YACA,UAmFA,qBACA,cACA,MACA,YACA,sBACA,OAEA,wBACA,QAEA,yBACA,EA7FA,mBACA,SACA,EACA,mBACA,QACA,EACA,oBACA,GACA,EACA,QAqFA,YAEA,MACA,mBACA,eACA,GAEA,IAEA,CACA,EA9FA,WAGA,cAEA,IADA,SACA,2BACA,oBAEA,GACA,QACA,OACA,4BACA,QAGA,IAqBA,kBAGA,MACA,QAHA,mBACA,aAEA,GACA,aACA,OACA,OAEA,CACA,MAIA,mBACA,OAEA,0BACA,UAGA,2BAEA,sBACA,WACA,iBACA,OAEA,CACA,IAEA,GACA,OApBA,IAsBA,QACA,CAwBA,QACA,CAQA,oBACA,iBACA,QAgBA,OAFA,OAbA,YACA,gBAGA,OADA,gBACA,CACA,EASA,OARA,cAKA,YAJA,gBACA,iBACA,cAEA,oBACA,EAGA,CACA,CAQA,kBACA,iBACA,aACA,QAeA,OAFA,OAZA,YACA,gBAEA,OADA,kBACA,CACA,EASA,OARA,cAKA,YAJA,gBACA,iBACA,cAEA,kBACA,EAGA,CACA,CAQA,kBACA,iBAEA,EADA,WACA,IAiBA,OAFA,OAdA,YACA,8BACA,qBACA,WAEA,GACA,EASA,OARA,cAKA,YAJA,gBACA,iBACA,cAEA,kBACA,EAGA,CACA,CAQA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AwB,WAAY,CAAEz9G,MAAO,qBAAUy9G,EAAuB5L,qBAEhGqL,GACF6B,IAIEtB,EAA0BzsG,EAA0D,CAEpFqH,OAAOA,EACPqlG,gBAAgBA,EAChB13G,aAAaA,EACb63G,oBAAoBA,EACpBP,mBAAmBA,EACnBzL,mBAAmBA,EACnB7gG,QAAQA,EACR0tG,eAAeA,IAIZjB,EGlUT,ICIMuB,GAAS,SAACjmG,mBCCQkmG,EACtBC,EACAnmG,EACA2T,qBAAkBglF,IAEbyN,6BAAmBpmG,UACfk6F,EAAiB,EAAGp5D,OAAO9gC,QAK9BqmG,EAAmB,kBAAaF,EAAqBnmG,EAAK2T,EAAS0mD,oCAGzEgsC,EAAiBC,WAAa,mBAC5BJ,EAAqBC,EAAsBnmG,OAAU2T,KAAYoL,KAGnEsnF,EAAiB/mG,MAAQ,mBACvB4mG,EAAqBC,EAAsBnmG,OACtC2T,GACHrU,MAAOtZ,MAAMwB,UAAU6U,OAAOsX,EAAQrU,MAAOA,GAAOzH,OAAOuR,aAGxDi9F,EDzBOrmG,CAAqCumG,GAAiBvmG,IDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OAC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,+CACA,2BAGA,CAgBA,gBACA,MACA,KAEA,wBAEA,MACA,aAEA,EADA,KACA,KAGA,IAEA,CAKA,OAJA,IAEA,qBAEA,CACA,CACA,gBACA,MACA,EA9DA,SAAgCkgH,GAChC,wBAIA,GAFA,+CACA,iDACA,mBAEA,aACA,oBACA,SAEA,oBACA,SAEA,MACA,CACA,QACA,CA6CA,OACA,cACA,WAEA,YACA,OACA,qBACA,cAGA,OAMA,OALA,cAGA,QAEA,CACA,IAEA,iBAEA,QACA,EACA,0BACA,SACA,UA/DA,SAA0BD,EAAcjgH,GACxC,+CACA,+BAIA,MACA,CAwDA,OACA,SACA,sBACA,cAOA,IANA,QACA,2BACA,kBAGA,sCACA,gBACA,oBACA,sBACA,IAEA,EAFA,cAEA,MAEA,QACA,eACA,aACA,gDACA,CACA,CACA,GAEA,uCAEA,CACA,oBACA,2BACA,sCAEA,WACA,iCAEA,GACA,2CAGA,qCACA,gBACA,UACA,IACA,CACA,QACA,EACA,kBACA,UAIA,OAHA,gBACA,uBAEA,CACA,EACA,oBACA,SAKA,OAJA,OAEA,gBAEA,CACA,EACA,sBACA,MACA,KACA,SAEA,cACA,YACA,qCACA,GACA,gBAEA,mBAEA,gBACA,YACA,IACA,CACA,QACA,EACA,GAGA,OADA,OACA,CACA,CAIA,cACA,aACA,KACA,IAEA,YADA,OACA,EAIA,CAFA,SACA,gGACA,CACA,CACA,QACA,CACA,SAASmgH,EAAcC,GACvB,SACA,cACA,+BACA,2BAEA,GADA,sBACA,CACA,mBACA,MACA,UAGA,oDAEA,CACA,GACA,CACA,QACA,CACA,SAASC,EAAYC,EAAS/7F,GAC9B,yBACA,OAEA,IACA,CACA,SAASg8F,EAAmB5mH,EAAOgD,GACnC,aAIA,OAHA,6BACA,oCACA,IACA,CACA,CACA,SAAS6jH,EAAgBxgH,GACzB,UACA,MACA,gBACA,QACA,OACA,KAEA,wBACA,CACA,QACA,CACA,SAASygH,EAAgBzgH,EAAM0gH,GAC/B,IACA,aAEA,CACA,cACA,4BAQA,2EAUA,2GAUA,mHAMA,4DAKA,4DAM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A,CACA,CASA,EACA,qBAGA,aACA,0BAIA,MACA,KACA,0CACA,MACA,UAcA,OANA,qCAIA,KAHA,IAKA,CAnBA,CAOA,aACA,IACA,KACA,gCAEA,CAQA,EACA,uBACA,IACA,eACA,cAGA,UAGA,EACA,0DACA,IAEA,mBACA,kBACA,EACA,kBACA,QACA,EACA,6BACA,GACA,EAKA,mBACA,GACA,EACA,qBACA,EAEA,UAEA,wBAGA,cAEA,EACA,cA2CA,C,oBAwCA,CAhNuC,E,2LCTnCC,G,WAAkB,MAClBC,EAAkB,KAClBC,EAAmB,mCACnBC,EAAkB,mBAEtB,SAAS7gH,EAASr2B,EAAOkT,EAAKikI,GAC9B,kCACA,qBAGA,CACA,SAASC,EAAap3I,EAAOkT,EAAKmkI,GAClC,cACA,EAEA,CACA,CACA,SAASC,EAAat3I,IACtB,wBACA,KAGA,IADA,qBACA,UACA,QAEA,QACA,CASA,oBACA,MACA,aACA,mBACA,4BACA,yCACA,8BACA,CACA,CA2CA,cACA,gBACA,CAQA,cACA,gBACA,CAoCA,cACA,MAGA,gBACA,SACA,QAEA,iBAMA,MALA,qBAEA,KAGA,qFACA,CACA,QACA,C,+OCjJIu3I,E,wEADAC,EAAc,KAGlB,IAiCA,aAIA,IAHA,IAEA,EAFA,oEAEA,MACA,YAEA,GACA,MAFA,kBAGA,WACA,WACA,YACA,YACA,YACA,YACA,YAGA,+BACA,4EACA,CAOA,OACA,sBACA,aACA,gBACA,sBACA,mBACA,eACA,aACA,WACA,YACA,YACA,aACA,aACA,cACA,gBACA,eACA,eACA,WACA,cACA,YACA,cACA,YACA,uBACA,oBACA,YACA,SACA,iBACA,QArFA,WACA,UACA,sFACA,EAmFA,QA9EA,WACA,oBACA,gBACA,QAEA,aACA,EAyEA,UACA,gBACA,aACA,kBACA,gBACA,iBAIA,IACA,IACA,IACA,IAYA,gBACA,uBACA,mBAwBA,OAvBA,WACA,KACA,IAGA,2CACA,QACA,gBACA,IACA,2BACA,SACA,GACA,MAEA,sBACA,UAEA,gBACA,UAEA,gBACA,UAEA,CACA,CAKA,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,iGxgBnlCA,UACA,WACA,gBACA,sBACA,aACA,eACA,SACA,YACA,UAOA,cACA,aACA,qCACA,YACA,oBACA,eACA,gBACA,eACA,iBACA,gBACA,aACA,kBACA,iBACA,aACA,wBACA,iBACA,UACA,WACA,aACA,aACA,SACA,aACA,qBACA,cO3CIgnU,EAAW,GACf,gBAEA,YADA,mBACA,gBACA,EAEA,0BACA,CAIA,eACA,iBACA,KAEA,gBACA,cACA,yBACA,yBACA,0BACA,sBAKA,OAJA,mCACA,iBACA,iBACA,kBACA,gCACA,CAWA,sBACA,mEACA,C,4BkgBnCA,cACA,SAKA,OAJA,6BACA,OACA,MACA,IACA,cACA,CCZA,SACA,eACA,mBCAIC,GDEJ,GACA,KACA,aACA,aCL0BtsU,GACtBusU,OAAwBvsU,EAK5B,SAASwsU,IACT,YACA,kBAEA,IACA,CAOA,SAASC,EAA0BC,GACnC,IACA,8BACA,YAEA,sBACA,kEACA,eACA,uBAEA,GADA,SACA,EACA,QAIA,CADA,SACA,CAEA,WACA,CAKA,SAASC,IACT,YACA,oBAEA,IACA,CAIA,aACA,KACA,IACA,CAaA,eAIA,OAHA,iBACA,uBAEA,CACA,CACA,iBACA,UACA,YACA,IACA,mBAKA,CAHA,SACA,KACA,qGACA,CAEA,WACA,CACA,mBACA,UACA,YACA,IAEA,OADA,gBACA,CAKA,CAHA,SACA,KACA,sGACA,CAEA,QACA,CACA,iBACA,UACA,YACA,IAEA,OADA,SACA,CAKA,CAHA,SACA,KACA,6GACA,CAEA,QACA,CACA,eAIA,OAHA,iBACA,yBAEA,CACA,CAUA,iBACA,UACA,YACA,IACA,mBAKA,CAHA,SACA,KACA,uGACA,CAEA,WACA,CACA,mBACA,UACA,YACA,IAEA,OADA,gBACA,CAKA,CAHA,SACA,KACA,wGACA,CAEA,QACA,CACA,iBACA,UACA,YACA,IAEA,OADA,SACA,CAKA,CAHA,SACA,KACA,+GACA,CAEA,QACA,CCjJA,IC1BI,GD0BJ,iCACA,8BACA,kCErBA,6DACA,gBACA,mBACA,iBACA,0CACA,eACA,mBACA,UDXA,mBACA,WACA,UAEA,aAGA,IAFA,QACA,SACA,UACA,IACA,oBAEA,GACA,CACA,QACA,CACA,iBACA,MAUA,OATA,IAEA,uBAEA,SACA,cACA,+FAGA,IACA,CACA,mBAEA,MASA,YAVA,gBAEA,IACA,WACA,kBACA,kBACA,iBACA,0GAGA,IACA,CACA,iBACA,sBACA,CACA,iBACA,MAOA,OANA,GACA,aACA,gBACA,sGAGA,IACA,CACA,iBACA,MACA,MAEA,WACA,aACA,gBACA,yGAEA,CACA,WACA,CACA,iBACA,MACA,SACA,6BACA,iCAEA,IACA,qBAIA,CAFA,SACA,mEACA,CAEA,eACA,YACA,MACA,IACA,GACA,CACA,QACA,CACA,iBACA,MACA,SACA,6BACA,YACA,MACA,IACA,GACA,CACA,QACA,CACA,iBACA,8BACA,CACA,qBACA,MAQA,OAPA,IACA,kBACA,OACA,YACA,gGAGA,IACA,CACA,eACA,aACA,uBACA,EAIA,IACA,oBACA,kBACA,yBACA,uBACA,oBACA,yBACA,6BAEA,+BACA,kBACA,qBACA,kBACA,sBACA,wBACA,yBACA,2BACA,iBACA,oBACA,gBACA,YEjIA,yBACA,MACA,eACA,gBACA,gBACA,iBACA,yDAEA,SACA,QACA,eACA,OAEA,cACA,KACA,6BACA,SACA,YACA,UACA,UACA,aACA,aAEA,GAOA,OALA,gBACA,6BACA,WACA,IAEA,CACA,EACwC,WACxC,aACA,CAUA,WAEA,CAdwC,GAAxC,IC1CI,GAAJ,WAIA,oBACA,qBACA,MACA,OACA,aACA,gBAEA,WACA,QACA,iBACA,aACA,YACA,CAGA,OAFA,yDACA,uBACA,CACA,CApBA,GCAI,GAAJ,WAIA,sBACA,qBACA,MACA,UACA,gBACA,cAEA,WACA,QACA,QACA,aACA,aACA,aACA,IACA,OAEA,CAGA,OAFA,2DACA,yBACA,CACA,CAxBA,GCHIC,GACJ,WAIA,qBACA,OACA,OACA,QACA,QACA,MACA,MACA,UAKA,WACA,ECdI,GAAJ,WAIA,8BACA,qBACA,MACA,UACA,cAEA,WACA,QACA,aACA,kBACA,kCACA,kCACA,iBACA,UACA,qCACA,cACA,aACA,YACA,CAGA,OAFA,0DACA,wBACA,CACA,CA1BA,GCAI,GAAJ,WAIA,0BACA,qBACA,MACA,OACA,MACA,WACA,aACA,eACA,MAEA,WACA,QACA,aACA,cACA,iBACA,WACA,WAEA,aACA,YACA,CAGA,OAFA,4DACA,0BACA,CACA,CA5BA,GCDI,GAAJ,WAIA,0BACA,qBACA,MACA,OACA,MACA,WACA,YACA,iBACA,cACA,mBACA,gBACA,aACA,gBAEA,WACA,QACA,cACA,iBACA,aACA,aACA,IACA,gCACA,UACA,kCACA,wBACA,UACA,4BAEA,CAGA,OAFA,uEACA,qCACA,CACA,CApCA,GCEIC,GAAW,cACXC,GAAW,QACXC,GAAW,QACXC,GAAkB,eAClBC,GAAc,WACdC,GAAa,UACbC,GAAiB,cACrB,SAASC,GAAWlyU,EAAOmyU,GAC3B,QAiBA,OAhBA,qBACA,eACA,cACA,iBAEA,EADA,kBACA,OAGA,OAKA,mCAGA,KACA,CACA,SAASC,GAAeC,EAAUC,GAClC,QAmBA,OAlBA,IACA,qBACA,mBAGA,qBAEA,YAEA,aAEA,mEAIA,iEACA,YAEA,KACA,CAuBA,SAASC,GAAgB5xC,GACzB,8DACA,CACA,SAAS6xC,GAAiBC,GAC1B,YACA,iBAEA,EADA,mBACA,MAGA,MAGA,iBACA,OACA,MACA,MAEA,CAiBA,SAASC,GAAsBC,GAC/B,WACA,KACA,IAGA,SAEA,iBAEA,oBAEA,qBAEA,gCACA,2BAEA,SACA,SAEA,aACA,aAEA,+BAEA,EAzCA,SAAwB10T,GAGxB,IAFA,SACA,aACA,gBACA,WACA,SACA,cACA,KAEA,SACA,CACA,OACA,MACA,MAEA,CA0BA,YAEA,0BAEA,wBAEA,kBACA,YAEA,CACA,uBACA,qBACA,IACA,SAEA,mBAEA,IACA,QAEA,CAMA,CAJA,SAGA,OACA,CAEA,WACA,OACA,SAEA,CA4DA,SAAS20T,GAAcN,GAEvB,SACA,QACA,wBAEA,IACA,IACA,EADA,wBACA,yBACA,mBAGA,CADA,SACA,CAIA,QACA,CAKA,eACA,KACA,IACA,oBACA,YACA,WASA,OARA,cACA,QAGA,KADA,UAGA,YAEA,0BACA,QAEA,CACA,CAGA,CADA,SACA,CAIA,gBACA,CACA,IAAI,GAAJ,WAIA,wBACA,qBACA,MACA,aACA,gBACA,aACA,gBAEA,WACA,SAjOA,SAA8BtyU,GAC9B,IACA,kBACA,mDAIA,CADA,SACA,CAEA,QACA,CAwNA,KACA,IACA,MAEA,qBACA,aACA,aACA,IACA,QAEA,IACA,UAIA,cACA,UACA,UACA,OACA,WAEA,OACA,WAEA,OACA,WAGA,oBACA,WAGA,CA2DA,OA1DA,gDACA,MACA,cACA,aACA,WACA,QACA,eACA,iBACA,oBACA,eACA,OACA,2BACA,aACA,CACA,EACA,wCACA,YACA,mDAEA,OADA,0DAEA,EACA,mCACA,MACA,6GACA,sBACA,2DACA,EACA,UACA,YAEA,KACA,kBACA,eACA,iBACA,iBACA,OACA,aACA,CACA,EAIA,8CACA,MACA,OACA,aACA,KACA,QACA,YACA,UACA,aACA,IAGA,EACA,6DACA,2BACA,iBACA,CACA,CA1GA,GA4GI,GAAJ,WACA,kBACA,qBACA,KACA,UACA,WACA,UACA,eACA,QACA,eAEA,WACA,GAvVA,SAAqCA,GACrC,IACA,kBACA,wCAIA,CADA,SACA,CAEA,QACA,CA6UA,IAiBA,UACA,UACA,YACA,cACA,cArBA,CACA,QACA,WACA,iBACA,eAEA,qBACA,6BACA,mBACA,KA/NA,SAAqBw4B,GACrB,MACA,QACA,cACA,KACA,QACA,IAYA,GAXA,2BACA,aACA,qBACA,oBACA,QACA,SACA,CACA,IAIA,EADA,MAOA,IALA,QACA,SACA,IACA,IACA,IACA,MAKA,IADA,GAFA,QACA,SAVA,MAYA,CAEA,YACA,cACA,KACA,CAEA,IACA,IACA,IACA,GACA,CAEA,CACA,QACA,CAmLA,IACA,WA9OA,SAA2Bq6S,GAC3B,SAWA,OAVA,IACA,MACA,+BACA,SACA,IAGA,aAGA,CACA,CAiOA,KACA,8DACA,IACA,gBAEA,CAQA,CAyBA,OAxBA,mCACA,MACA,OACA,wBACA,wDAWA,OAVA,GACA,QACA,kBACA,cACA,aACA,kBACA,cAEA,aACA,CAEA,EACA,oCACA,4BACA,kDACA,KAEA,OADA,uDAEA,EACA,CACA,CA7DA,GA+DI,GAAJ,WACA,gBACA,qBACA,QACA,SACA,WACA,WACA,QAEA,WAIA,GAHA,OAGA,qBACA,QACA,OACA,QACA,oBACA,QACA,OACA,uBACA,aACA,6BACA,uBACA,uBAEA,MAEA,UACA,UACA,UACA,UACA,UACA,OAEA,2BACA,6BACA,6BAEA,iBACA,qCACA,mCACA,CAkBA,OAjBA,kCACA,oBACA,EACA,mCACA,WACA,OACA,WACA,YACA,cACA,cACA,UAEA,EAGA,+FACA,cACA,CACA,CA7DA,G,iDC/bA,eACA,WACA,sBACA,mBAEA,CACA,oBACA,mBACA,0BACA,kBAEA,CACA,QACA,CCbA,OfmCA,YACA,SAKA,OAJA,6BACA,UACA,YACA,IACA,cACA,Ce1CA,EACA,2CACA,oCACA,8CACA,iCACA,oCACA,kCACA,mCACA,yCACA,sDCRI,GAAJ,kBACIC,GAAiB,EAGjBC,GAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,MAClD,eACA,SACA,KACA,OAgBA,OAfA,iBAIA,OAEA,8BAJA,kBAMA,WAEA,GACA,OACA,KAEA,KACA,CACA,CACA,eACA,MACA,QAIA,OAHA,IACA,UAEA,CACA,CASA,iBACA,SACA,sBAEA,CACA,CAEA,iBACA,kBACA,MACA,6DACA,iDACA,sBAEA,CACA,QACA,CACA,iBACA,WACA,MACA,8DACA,mDACA,WACA,YACA,sBACA,YAEA,uBAGA,2BAFA,MAKA,IACA,CAEA,CACA,QACA,CCxEA,IAAIC,GAAqB,CACzB,MACA,iDACA,+CAEA,eACA,iCACA,CAeA,KACA,KACA,KACA,KAEA,KACA,KACA,IACA,KAIA,KACA,IACA,IACA,IACA,IACA,IAGA,IACA,IACA,KACA,IArCA,IAgDA,IACA,8BAQA,4CACA,sCACA,SAEA,WACA,wDACA,mBACA,SAIA,sBAMA,IALA,yCAGA,yBAEA,uCACA,SAEA,IAEA,EAFA,gCACA,OAEA,2BACA,iGACA,cACA,KACA,GACA,SAGA,4CACA,gBACA,SAEA,oBAEA,GADA,8FACA,QACA,QAEA,CAGA,gBACA,EAIA,kCACA,MACA,6CACA,iCACA,QAEA,CACA,EAIA,yCACA,KAEA,IADA,gBACA,gBACA,mBACA,sBACA,WAEA,CAEA,GA+BA,cAEA,oBACA,uBACA,uCAEA,OACA,QAEA,CACA,oBACA,CACA,iBACA,WAIA,OAHA,+CACA,OAEA,CACA,CAcA,iBACA,YACA,OACA,mBACA,WACA,EACA,oBACA,gBACA,MACA,EACA,sBACA,gBACA,EACA,uBACA,mBACA,kBACA,YAEA,EACA,qBACA,iBACA,EACA,sBACA,kBACA,kBACA,aAEA,EACA,yBACA,mBACA,EACA,0BACA,sBACA,cACA,EAEA,CC/OA,IAAI,GAAJ,WAIA,yCACA,kBACA,qBACA,KACA,MACA,OACA,aACA,WACA,UACA,OACA,SACA,OACA,aACA,eACA,OACA,QACA,QACA,MACA,MACA,SACA,iBACA,mBACA,cACA,sBAEA,WACA,QACA,OACA,UACA,YACA,kBACA,eACA,MD0GA,kBACA,cACA,cACA,YAEA,GADA,UACA,EACA,eACA,iCACA,oBACA,SAEA,OACA,mBACA,MAEA,SAGA,MAEA,IACA,IAEA,OACA,SACA,OACA,OAEA,CCtIA,UACA,uBACA,wBACA,IACA,8CAEA,gBACA,aACA,YACA,CAGA,OAFA,oEACA,kCACA,CACA,CAjDA,G,mCCAIC,GAAoB,WACpBC,GAAU,CACd,6BAGA,SAASC,GAASt0U,EAAKwD,GACvB,KACA,wBACA,UADA,KAMA,CAEA,SAAS+wU,GAAa1/S,EAAO2/S,EAAaC,EAAQC,EAAShxU,GAC3D,YACA,oBACA,aACA,WACA,MAEA,iBAEA,OADA,aAEA,EACA,IACA,iBAmBA,CAjBA,SACA,YACA,IAEA,eACA,IACA,QACA,kBASA,CANA,SACA,CACC,QAGD,OACA,CACA,CACA,CACA,GAEA,CAoDA,SAASixU,GAAUxiU,EAAQ3K,EAAMotU,GACjC,WASA,OARA,IACA,iBACA,IAEA,IACA,4BAGA,CACA,CAyBA,SAASC,GAAsBC,EAAO3oT,EAAU3oB,EAAIoyK,GACpD,eACA,OASA,MAjGA,SAA6Bm/J,GAE7B,kBACA,MAGA,YACA,MACA,UACA,UACA,OANA,KAOA,WACA,MAWA,eACA,WACA,KACA,UACA,EAdA,GACA,KACA,WAEA,gBAIA,OAHA,kBACA,UACA,IACA,CACA,CANA,2BAaA,cAEA,UACA,KACA,IACA,eA9BA,KA8BA,EAQA,CANA,SAKA,MAHA,QACA,cAEA,CACA,CAIA,OADA,cACA,MACA,CACA,CAiDA,CAPA,GACA,IACA,IACA,IACA,OAIA,QACA,MACA,CACA,OAEA,OACA,OACA,cAGA,cACA,sBACA,YAEA,OADA,eACA,CAEA,GACA,GAKA,OAFA,MACA,aACA,CACA,CAQA,qBAEA,QADA,cACA,SACA,gBACA,MACA,WACA,mBACA,kBAEA,CACA,CACA,WACA,CA8BA,qBACA,YACA,mBACA,KACA,qBAEA,CACA,WACA,C,c5hBpOA,cACA,8BACA,4BACA,8BACA,6CACA,wBACA,0BACA,kCACA,6BACA,gBACA,gCAEA,UACA,cACA,kBACA,aACA,WACA,mBACA,4BACA,0BACA,qCACA,sCACA,UACA,2BACA,eACA,WACA,cACA,cACA,gBACA,kBACA,aACA,yBACA,6BACA,cACA,YACA,kCACA,0BACA,qBACA,2BACA,kCACA,sBACA,mBACA,kBACA,kBACA,iBACA,gBACA,wB6hB9CI,GAAJ,WACA,oBACA,gCACA,IAGA,EAHA,OACA,KACA,KAKA,cACA,GACA,UAEA,CAPA,IACA,YAkCA,oBACA,aACA,wCACA,oBACA,uBACA,CACA,YACA,wCACA,oBACA,oBACA,CAIA,YAKA,OAJA,WACA,WAEA,sMAGA,IACA,EAWA,EAZA,KAGA,cACA,MACA,kBACA,WACA,WAMA,gBACA,qBACA,UAEA,cACA,WAEA,IACA,MAEA,SAGA,WACA,MACA,MAGA,IA/EA,EAgFA,IACA,MAjFA,EAoFA,WACA,SACA,IACA,YACA,KACA,OACA,OACA,OAEA,SACA,cAOA,IACA,mBACA,YAEA,IACA,WACA,QAVA,QACA,WAYA,MACA,qBAhCA,MAmCA,KACA,IACA,MArCA,IAsCA,YAMA,CAFA,SACA,+GACA,CACA,QACA,EA5HA,UACA,IACA,0BACA,iBACA,KACA,KACA,2BACA,IAKA,KAHA,SAKA,IACA,YACA,iBACA,QAEA,GAEA,KAEA,QAsGA,EACA,yBACA,MACA,iBACA,OACA,iBAEA,KACA,2BACA,MACA,CAEA,GACA,CACA,CACA,GACA,C,oBAkBA,CA/KA,GCHIC,GAAuB,KACvBC,GAAgB,CAAC,YAAa,gBAAiB,cAAe,wBAClE,SAASC,KACT,oBACA,oBACA,CAKA,SAASC,KACT,oBACA,eACA,UACA,uBACA,SACA,SACA,SACA,SACA,SACA,SACA,cACA,CACA,SAASC,KACT,YACA,qBAEA,IACA,CACA,SAASC,KACT,OAxBA,WACA,oBACA,oEACA,CAqBA,GACA,mCAEA,IACA,CAIA,SAASC,KAET,IADA,SACA,2BACA,kBAEA,IAEA,GAFA,mBAEA,UACA,KACA,KACA,yBACA,yCAGA,KAEA,SAIA,oBACA,oBACA,SAIA,QACA,CAIA,IAAI,GAAJ,WACA,cACA,WACA,iBACA,gCACA,kBACA,aAqBA,WACA,OACA,IACA,IACA,IACA,IACA,KACA,QACA,GACA,QAMA,8CACA,2BACA,kBACA,4BAGA,kBACA,kBACA,2BACA,kBACA,2BAEA,MACA,8GAEA,iBAGA,0DAGA,oGAGA,eAEA,uBACA,sBACA,mBACA,wBACA,qBACA,cAfA,wIAkBA,EACA,SACA,SACA,SACA,QACA,GACA,C,oBAmCA,CArHA,GClEI,GAAJ,WAMA,gBACA,0BACA,gCACA,oBACA,IAEA,MAeA,cACA,WACA,IACA,EAkCA,WACA,WACA,IACA,SAEA,oBAEA,UACA,oBAEA,0BACA,sBAEA,QAEA,CAKA,CAHA,SACA,+DACA,MACA,CACA,QACA,CAxDA,GAcA,cACA,IACA,SACA,eACA,4FAEA,kBACA,6BACA,SACA,CAKA,CAHA,SAEA,sDACA,CACA,CA5BA,KAKA,CAHA,SACA,yDACA,MACA,CACA,QACA,CA1BA,MAEA,GACA,uCAKA,CAFA,SACA,iGACA,CACA,EAmEA,gDACA,oEACA,GACA,C,oBAUA,CArGA,GAuGI,GACJ,cACA,uBACA,gBACA,cACA,EC9GI,GACJ,cACA,WACA,KACA,oBACA,2BACA,6GAEA,cACA,EACA,yBACA,WACA,YACA,2FAEA,CACA,IACA,QADA,UAEA,mBACA,QACA,KACA,WACA,CACA,ECjBIC,GAAW,QACf,SAASC,GAAerjU,EAAQsjU,GAChC,uBACA,kBAEA,CAYA,IAAIC,GAAkB,IACtB,SAASC,GAAoBx0U,EAAOq3I,GAKpC,OAJA,QACA,KACA,MAEA,CACA,CACA,SAASo9L,GAAkB38S,GAqB3B,OApBA,IACA,MAGA,+CACA,sDACA,eACA,eACA,eACA,gBACA,sCACA,WAEA,eACA,eACA,eACA,gBACA,+BACA,eACA,uDACA,CACA,CACA,SAAS48S,GAAoBC,GAG7B,qBACA,MACA,KtBHA,SACA,UsBQA,CACA,IAAI,GAAJ,YAEA,aACA,IAIA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAjBA,qBACA,gBACA,eACA,uBAmBA,IAEA,EACA,EACA,EAwjBA,OAvjBA,+BACA,iBAmhBA,sBACA,gCACA,CACA,aACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAKA,EAEA,sBACA,eACA,OACA,MACA,CA9iBA,IACA,0BACA,0BACA,EACA,iCACA,kBACA,EACA,2BACA,IACA,oCACA,YAIA,CAFA,SACA,oGACA,CACA,EAKA,8BACA,IACA,UAIA,CAFA,SACA,yGACA,CACA,EAOA,iCACA,IACA,oBAIA,CAFA,SACA,wGACA,CACA,EAOA,2BACA,IACA,oCACA,YAIA,CAFA,SACA,oGACA,CACA,EAYA,4BACA,IACA,oCACA,YAIA,CAFA,SACA,sGACA,CACA,EAOA,oBACA,IACA,YACA,iFACA,cACA,mBAKA,CAFA,SACA,2GACA,CACA,EAOA,sBACA,oBACA,IACA,gDAEA,sCACA,aAEA,CACA,EAMA,sBACA,sCACA,YACA,EAMA,yCACA,YACA,IACA,SACA,UAIA,CAFA,SACA,sHACA,CACA,EAOA,6BACA,IACA,wBACA,oBACA,gBACA,CACA,UAIA,CAFA,SACA,2GACA,CACA,EASA,kCACA,IACA,wBACA,oBACA,gBACA,CACA,wBACA,oBACA,cACA,CACA,gBACA,cACA,UAKA,CAFA,SACA,2GACA,CACA,EAOA,sBAGA,yBAEA,mBAGA,iCAEA,QACA,IACA,KADA,oFACA,2BACA,YACA,EAUA,+BACA,mBACA,aAEA,IACA,UAIA,CAFA,SACA,4GACA,CACA,EAMA,kBACA,eACA,WACA,IACA,OACA,oBACA,IACA,QAEA,CACA,wCAEA,2DACA,GACA,WACA,MACA,oBACA,sBACA,eAEA,qDAsJA,cACA,oCACA,YACA,CAxJA,iMAGA,QACA,SAEA,kDAOA,CAJA,SACA,iCACA,qFACA,wDACA,CACA,EACA,kBACA,SAEA,oBAGA,IACA,MAEA,SACA,EACA,+BACA,uBAGA,gBACA,kCAEA,sBACA,IACA,4EACA,IACA,2BACA,QACA,IACA,QAEA,MAmDA,YACA,iCACA,eAEA,QACA,+BACA,OACA,6BAEA,6BACA,WACA,IAEA,IAEA,QACA,CAnEA,IACA,MACA,gBACA,0BACA,yCAyEA,gBACA,6BACA,eACA,qBACA,UACA,MACA,MACA,eACA,EACA,CAlFA,WAgEA,cACA,eAkBA,WACA,UACA,iDACA,cACA,2BACA,iBACA,KACA,wBACA,uCACA,QAIA,CACA,QACA,EACA,SACA,IACA,CACA,CApCA,EACA,CAlEA,OACA,gCACA,OACA,oBACA,IACA,MAEA,IACA,MAEA,mBACA,kDACA,GAEA,mCACA,2BAEA,iBACA,MAEA,mBACA,OACA,OACA,MACA,aACA,gBAEA,UACA,EACA,gBA6EA,YACA,oBACA,kBACA,QACA,oCAEA,kBACA,KACA,0BACA,gBACA,8BAEA,IACA,IACA,OA+FA,gBACA,aACA,QAEA,+BACA,KACA,kBACA,gBACA,aA3lBA,SAAoB3wU,GACpB,gBACA,eACA,0CACA,QAEA,cACA,CAEA,YACA,CAilBA,4BAEA,IACA,IACA,KACA,qCAEA,CA5GA,OACA,CA7FA,IA8FA,YACA,oBACA,kBAKA,GAJA,aAIA,qBACA,oBACA,4EAyBA,kBACA,gBACA,aACA,GACA,4BAEA,CACA,aASA,GAPA,GACA,IACA,gBAGA,eAEA,GACA,MArCA,WACA,WACA,2BACA,yBAEA,OAEA,0BACA,MACA,uBACA,IACA,uBAEA,CACA,CACA,QACA,CAqBA,GACA,MACA,6BACA,kBACA,gBACA,2BAGA,wBACA,CACA,uBAEA,yCACA,kCACA,CACA,CACA,IACA,oBACA,KACA,eACA,IACA,wBACA,6BAEA,IACA,IACA,uBACA,KACA,eACA,IACA,2BACA,6BAEA,IACA,IACA,iCACA,uCACA,KAEA,CAhFA,SAEA,CACA,CA1GA,IAOA,CAJA,SAGA,MADA,qBACA,CACA,CAxDA,CAyDA,EACA,4BACA,mBAEA,iCACA,GACA,EA6NA,yDACA,oEACA,8DACA,wDACA,IACA,CACA,CAgJA,OAruBA,iBAmuBA,mBACA,sBACA,CACA,CAvuBA,CAuuBE8yI,GAAF,GC5yBA,SAAS89L,GAAYC,GACrB,kBACA,mBACA,UACA,CACA,CACA,IAAIC,GAAiBF,GAAY,eAC7BG,GAAYH,GAAY,UACxBI,GAAcJ,GAAY,YAC1BK,GAAeL,GAAY,aAC3BM,GAAaN,GAAY,WACzBO,GAAUP,GAAY,QACtBQ,GAAWR,GAAY,SACvBS,GAAcT,GAAY,YAC1B,GAAJ,YAEA,aACA,yBACA,CACA,OAJA,iBAIA,CACA,CANA,CAME,OAAF,IAAE,CAAF,CACA,6BACA,6BACA,+BACA,kCACA,6BACA,kBACA,kBACA,8BACA,0BACA,wBACA,sCACA,4BACA,oCACA,4BACA,kBACA,gCACA,sCACA,8BACA,8CACA,sBACA,oCACA,0BACA,4BACA,0CACA,oBACA,8BACA,gCACA,wBACA,qBACA,yBACA,iCACA,6BACA,+CACA,mDACA,mBACA,6BACA,yBACA,wDACA,8BACA,0BACA,gBACA,kCACA,gCACA,+DACA,mEACA,qBACA,qBACA,2BACA,qCACA,mCACA,6BACA,yCACA,gCACA,oCACA,wCACA,8BACA,+BChFA,IACA,eACA,mBACA,iBACA,aACA,aACA,WACA,iBACA,cAEA,UCLI,GAIJ,gBACA,WACA,OACA,QACA,iBACA,UACA,iBACA,SACA,6BACA,kBACA,OACA,OACA,OACA,sBACA,6BACA,EACA,OACA,OAEA,EC3BIr8M,GAIJ,cAIA,qBACA,WACA,YAEA,gBACA,eACA,ExhBTI,GAAJ,WbEA,UACA,gBACA,UACA,UACA,aACA,YACA,eACA,kBACA,cACA,kBACA,cACA,YACA,aACA,WACA,UACA,2BACA,WACA,mBACA,gBACA,eACA,gBACA,qBACA,qBACA,gBACA,yBACA,iBACA,aACA,2BACA,yBACA,aACA,mBACA,aACA,gCACA,wBACA,wBACA,iBACA,mBACA,gBACA,0BACA,sBACA,cACA,gBACA,sBACA,0BACA,cACA,uBACA,gBACA,mBACA,mBACA,qBACA,sBACA,sBACA,uBACA,yCACA,sBACA,sBsiB1DI+8M,GAAc,WACdC,GAAc,WACdC,GAAgB,aAChBC,GAAU,OACd,SAASC,GAAY1kU,EAAQ8xC,EAAO9iD,GACpC,6BACA,CAqFA,SAAS21U,GAA6BvoS,EAAM+M,EAAYy7R,GACxD,gBACA,6BACA,eACA,OAEA,eACA,OAEA,gBACA,0BAEA,GAEA,CACA,SAASC,GAA2C17R,EAAY27R,GAChE,gBACA,6BACA,SACA,GAEA,CAEA,SAASC,GAAgBvpR,EAAQwpR,EAAcC,EAAe7oS,GAC9D,oBACA,0BACA,uBACA,qCAEA,cACA,8BAMA,OALA,6BAhHA,SAAiCof,EAAQjS,EAAMkkC,GAE/C,sBACA,kBACA,kBACA,SACA,IACA,iCACA,iCAEA,YACA,GACA,2BAEA,eACA,IACA,kCACA,2BACA,uBACA,6BACA,oBAEA,gBACA,MACA,sCACA,2CACA,iCACA,sBACA,kBACA,kBACA,wBACA,oCACA,8BACA,yCACA,CACA,WACA,GACA,wBAGA,cACA,IACA,sCACA,mCACA,4BAmBA,IAFA,SAEA,oBACA,WACA,6BACA,MACA,IACA,aACA,CAEA,6BACA,MACA,IACA,uCACA,2BAEA,2DAEA,oBACA,CAkCA,QAEA,gBACA,cACA,CACA,SAASy3P,GAAoB1pR,EAAQypR,GACrC,oBACA,4DAEA,CACA,QACA,kBAoBA,mBACA,QACA,SACA,KACA,iBACA,wBAEA,gBACA,gBACA,iBAGA,OACA,cAIA,cACA,gBACA,QAEA,gBACA,kBACA,mBACA,uBACA,CCxLA,SAASE,GAAenlU,EAAQg8F,GAChC,2BACA,CCCA,ICLI,GDKA,GAAJ,WACA,gBACA,SACA,KACA,qBACA,QACA,EACA,sBAEA,OADA,GAEA,EACA,gCACA,kBACA,8BAEA,IACA,0EACA,MAIA,QACA,EACA,iBACA,YACA,EACA,kBAEA,IADA,YACA,gBACA,YAKA,OAHA,UACA,MAEA,CACA,EACA,iBACA,KACA,IACA,EACA,sBACA,iBACA,EACA,kBACA,kBACA,QACA,aACA,oBAGA,IACA,CACA,GACA,C,oBAwBA,CA7EA,GAiFI,GAAJ,YAEA,gBACA,6BASA,OARA,+BACA,kBACA,OACA,EACA,kBACA,CAEA,IACA,CACA,C,OAZA,iB,aAoBA,CArBA,CAqBE,IAKE,GAAJ,YAEA,gBACA,6BACA,KA6FA,OA5FA,+BACA,eACA,WACA,sBA4CA,gBACA,SAMA,OALA,2BACA,uCACA,QAEA,IACA,CACA,CACA,cACA,QACA,IACA,iCACA,cACA,MACA,6BAKA,GAJA,iBAEA,0BAEA,kBACA,QAEA,CAIA,CAFA,SACA,qFACA,CACA,QACA,CACA,gBACA,QACA,IACA,iCACA,kBACA,SAOA,CALA,SAGA,qBACA,wGACA,CACA,CArFA,cACA,aAEA,YACA,WACA,kBACA,eAEA,IACA,+DACA,OAIA,SACA,kBACA,EACA,iBACA,QACA,kBACA,YACA,IACA,EACA,kBACA,+BACA,eACA,0CACA,eACA,YAGA,sEACA,aAEA,WAEA,EACA,kBACA,eACA,SACA,UACA,CA6CA,IACA,CACA,CAiBA,OAlHA,iBA8GA,yBACA,kCAEA,sBACA,CACA,CApHA,CAoHE,IEjOE,GAAJ,WACA,cACA,gCAcA,gBACA,6BACA,KACA,MAEA,OADA,0FACA,EAEA,QAEA,OADA,uFACA,EAEA,sBAEA,sBACA,uBAEA,oBACA,uBAEA,cACA,uBAEA,kBACA,aAEA,CACA,2GACA,IAEA,qBACA,GAKA,CAHA,SAEA,oFACA,CACA,CACA,QACA,CAmCA,OAlCA,QACA,4CACA,+BACA,2BACA,MACA,gBACA,iCACA,aAIA,OACA,kBAgBA,KAZA,EAHA,EACA,EAEA,UAIA,UAKA,QAIA,OAEA,OAvBA,4HAwBA,WACA,KACA,CACA,CACA,gBACA,MACA,KACA,kBAGA,CACA,KACA,yBACA,IACA,IADA,KACA,aACA,QACA,CACA,MATA,yHAWA,QACA,CACA,kBACA,MAyCA,OAxCA,IACA,KACA,6BACA,qBACA,MACA,iBAEA,SACA,YAEA,MAIA,aAHA,sDAMA,gBACA,cACA,sBAEA,YACA,gBAEA,CACA,oBACA,SACA,WAGA,MAEA,MAGA,gDACA,6BAEA,KAEA,CACA,CAjJA,wBACA,kBACA,IACA,2BAKA,CAHA,SAEA,oFACA,CACA,CAyIA,GACA,C,oBASA,CAlKA,GCEI,GAAJ,WACA,aACA,CAwBA,OAvBA,yCAEA,YADA,oCAEA,EACA,oCACA,UACA,SAEA,WAZuB,GAavB,cAIA,IADA,WACA,gBACA,2BAGA,KAEA,kBACA,EAEA,2BACA,CACA,CA3BA,GCAI,GACJ,WACA,IACA,SACA,SAFA,KAGA,gBAkBA,OAhBA,uBACA,oCAEA,iCACA,qBAEA,4BACA,yCAEA,sDACA,6CAIA,iBAGA,CACA,ECxBI,GAAJ,WACA,gBAEA,8BACA,4BACA,cACA,wLACA,OAEA,WACA,kCACA,CAiBA,OAbA,oCACA,eAEA,sCAGA,qBAIA,qCAEA,EACA,CACA,CA7BA,GJKIopO,GAAiC,KACrC,SAAS,GAAT,GACA,IACA,qBAGA,CADA,SACA,CAEA,WACA,CACA,SAASC,KACT,MACA,EAGA,UACA,uCAEA,yBACA,8BACA,gCACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,6BACA,mBACA,2BACA,0CACA,CACA,CACA,IAAIC,KAAuB,GAA3B,IACA,gBACA,gBH0OA,gBACA,QACA,oBACA,sBACA,gBACA,gBACA,cACA,gBACA,QAEA,wBACA,mBACA,uBACA,EGtPA,gBHoKA,gBAGA,MAFA,QAGA,YACA,gBACA,oBACA,uBAIA,oBACA,yBACA,mBACA,YANA,mBACA,WAOA,IAEA,EAFA,UAGA,4BACA,mBAEA,cACA,QACA,QACA,YACA,YAcA,GAZA,wBACA,mBAGA,0BACA,uBAGA,4BACA,kCAGA,oBACA,YACA,6BACA,MACA,GACA,CACA,cACA,gBACA,QAEA,4BACA,mBACA,uBACA,EGxNA,gBHyNA,gBACA,QACA,YACA,QACA,eACA,YACA,YACA,cACA,gBACA,QAEA,iCACA,mBACA,uBACA,EGtOA,gBHuIA,gBACA,QAEA,oBACA,gBACA,cACA,gBACA,QAEA,YACA,kCACA,mBACA,uBACA,EGnJA,gBHoJA,gBACA,QACA,YACA,YACA,YACA,cACA,gBACA,QAEA,uEACA,mBACA,uBACA,EG/JA,gBHyFA,gBACA,QACA,oBACA,gBACA,cACA,gBACA,QAEA,YACA,kBAEA,OADA,mDACA,KAEA,uCACA,iGACA,mBACA,uBACA,EGzGA,IACI,GAAJ,YAEA,aACA,IAQA,EACA,EAEA,EACA,EACA,EACA,EACA,EAfA,qBACA,gBACA,gBAIA,qBAUA,IACA,EACA,EACA,EACA,EAJA,IAiyBA,OA5xBA,+BA0UA,wBACA,WAOA,GANA,WACA,SACA,UACA,mBAGA,uBAGA,iCACA,KAEA,YADA,YAIA,mBACA,KACA,4CACA,4CAGA,UAEA,MACA,qBAEA,iBAEA,IADA,IAEA,+JACA,OAKA,KACA,SACA,IACA,QAEA,gBACA,WAGA,aAIA,IACA,WAGA,CACA,cAEA,kBAKA,wBACA,kBACA,iCACA,GACA,GAIA,CACA,gBACA,EAEA,QAIA,MAEA,CACA,cACA,oBACA,QACA,cACA,mBAGA,kDAEA,oBAMA,OALA,IACA,SAEA,uBAEA,CACA,CAQA,gBACA,6BAEA,MAGA,IADA,SACA,iBACA,WACA,QAEA,QAEA,CACA,UACA,WACA,oGAEA,CAEA,CAMA,gBACA,yBACA,cACA,IACA,QAIA,CAFA,SAEA,CAEA,mBACA,yCAEA,OACA,mBAEA,wCACA,aACA,IACA,0EACA,8CAEA,uBACA,UACA,gBACA,CACA,gBACA,mBAEA,IADA,YACA,gBACA,YAEA,QACA,QAEA,cAEA,MAIA,WACA,gGAEA,CACA,CAMA,gBACA,OACA,CAMA,gBACA,MACA,cACA,mBACA,0CACA,cACA,QACA,KACA,KAEA,OACA,sBAEA,wCACA,gBACA,IACA,WACA,cACA,UACA,SAEA,OAEA,GACA,IACA,eAGA,KACA,MAEA,uBACA,IAEA,QAIA,CAFA,SAEA,CAEA,iBACA,IACA,2BACA,IACA,KACA,KAEA,IACA,KAMA,KAIA,2BACA,wCACA,IALA,sBAQA,uBACA,IACA,KACA,KAEA,IACA,KACA,mBAEA,GAMA,CAJA,SACA,GACA,uBAEA,CACA,QAEA,KACA,sBAEA,CAKA,cACA,IACA,cACA,6BACA,+CACA,+CACA,QAEA,CAMA,CAJA,SACA,uEACA,YAEA,CACA,WACA,CAKA,gBAEA,QADA,aACA,cAGA,YACA,SACA,IACA,gCACA,WACA,QACA,EASA,YACA,IACA,EADA,KAEA,QACA,QAEA,CACA,0BAEA,kCACA,KACA,8BACA,CAEA,0BAEA,GACA,CAxBA,IACA,GAVA,CAWA,CA0BA,aACA,WACA,sCACA,0BACA,yBACA,OACA,gBACA,KACA,CACA,CACA,aACA,gBACA,OACA,MACA,CAKA,cACA,gBACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,CACA,gBACA,SACA,yDAEA,CACA,CAWA,gBACA,YACA,gBACA,qBACA,8CACA,8CAGA,6CACA,oCAIA,OAHA,mIAEA,QAGA,2CACA,iBAEA,eACA,UACA,QACA,CACA,gBACA,SACA,qCAEA,CACA,CAkCA,aACA,WACA,WACA,cACA,eACA,KACA,OACA,IACA,OACA,KACA,KACA,OACA,OACA,IACA,IACA,OACA,OACA,MACA,CAzxBA,IACA,mBACA,IACA,IACA,EACA,oBACA,IACA,KACA,OAEA,wCACA,kBAEA,IAEA,EACA,wBAEA,QADA,eACA,GAEA,IACA,IACA,kBAIA,CAFA,SACA,qHACA,CACA,CACA,EACA,2BACA,MACA,gEASA,eARA,IACA,aAIA,CAFA,SACA,0JACA,CAMA,EACA,0BACA,MACA,EACA,+BACA,mBACA,0DAEA,sBACA,qBACA,eACA,mBACA,IACA,OACA,EACA,WACA,IACA,cACA,wEACA,EFtIA,YACA,oBACA,gBACA,KACA,KACA,kDACA,IAIA,GAHA,mBACA,MAEA,GAEA,gBACA,YACA,OACA,KAGA,CACA,GAEA,yBACA,QAOA,CAHA,SAEA,IACA,CACA,cACA,SAOA,OANA,IACA,iCAEA,8BAGA,CACA,CACA,aACA,IACA,CACA,aACA,IACA,CAyBA,OACA,SAzBA,WACA,SAOA,OANA,EACA,IAEA,yBACA,SAEA,CACA,EAiBA,iCACA,OAjBA,WACA,oBACA,SAEA,GADA,QACA,GAEA,gBACA,yBACA,OAEA,CACA,IACA,CACA,EAMA,CE2DA,IAEA,WACA,6BACA,oBACA,2BAKA,OAJA,uBAEA,OAEA,CACA,CACA,IACA,4BACA,gCACA,gCAirBA,YACA,iCACA,KACA,SAIA,OADA,WADA,kEAEA,WACA,CAxrBA,KACA,2DAEA,2GACA,qCACA,6BACA,IAEA,YACA,QACA,uBACA,KAEA,yBACA,MAEA,mBACA,KAGA,QACA,yBAEA,KAEA,WAGA,GAFA,yBAEA,EAEA,cAEA,GAEA,uBACA,GAEA,uBACA,EAGA,CAEA,EACA,iCAEA,IA0MA,EA1MA,GADA,mBACA,MACA,IAEA,eAEA,OAGA,MAEA,YADA,iDAIA,sBAEA,YADA,0EAQA,GALA,QAEA,oBAGA,MAEA,YADA,iDAIA,GA+KA,EA/KA,GAgLA,yBA7KA,YADA,6FAIA,oBAEA,0BAGA,sBACA,+BACA,MAEA,YADA,+DAGA,SAkBA,GAhBA,mBACA,mCACA,IACA,eACA,KACA,yDAOA,CAJA,SAGA,0IACA,CACA,WACA,WAEA,EACA,OAGA,qBAEA,QACA,SACA,mBACA,kBAGA,SAEA,GAIA,CAFA,SACA,6IACA,CAEA,kBACA,EAIA,sBACA,kBACA,oDAEA,EAMA,sBAEA,QADA,eACA,EACA,IACA,YAEA,eAgBA,YAhBA,CACA,cACA,oBA0gBA,cACA,MATA,WACA,qBACA,aACA,mBAGA,kCACA,CAEA,GACA,YACA,IACA,UAIA,CAFA,SACA,wGACA,CAEA,CAnhBA,SAEA,EACA,cAGA,UAEA,EAEA,QACA,CAIA,GAQA,CANA,SAEA,sBACA,SACA,kIAEA,CAEA,EACA,4BACA,kBACA,WACA,GACA,EAIA,sBACA,kEACA,gBACA,EAIA,oBAKA,IAJA,SACA,KAGA,MADA,mBACA,gBACA,WACA,yBACA,gBACA,SAIA,QAEA,CACA,SACA,eAEA,SACA,0EAEA,UACA,KACA,wDACA,yBACA,yDAEA,EAIA,oBACA,gBACA,EAIA,2BACA,YACA,4BAIA,CACA,WACA,4CACA,YACA,WAGA,aAEA,MAZA,IACA,UAYA,CAqdA,IACA,CACA,CA+FA,OAn5BA,iBAqzBA,sCACA,MAQA,OAHA,EAJA,2BAIA,EAHA,yCAKA,oBACA,MACA,EAoFA,CACA,CAr5BA,CAq5BEx/L,GAAF,GKx8BIy/L,GAAoB,IACpBC,GAA6B,IACjC,eACA,MACA,SAEA,eACA,+BACA,eACA,aACA,gBACA,OACA,MACA,CACA,QACA,OACA,wBAEA,qBAEA,mCACA,8CACA,CAEA,aACA,CACA,QACA,CC1BA,GACA,UACA,cACA,UACA,QACA,aCPA,WACA,aACA,CACA,8BAEA,MAOA,YARA,cAGA,EADA,2CACA,WAGA,KAEA,kBACA,CAEA,CAfA,GF6BA,I,kBG1BA,OACIC,GAA2B,kCAC/B,SAASC,GAAiBC,EAAcjoQ,EAAOnhB,GAC/C,+BACA,wBACA,sBACA,IACA,2BACA,YACA,uBAEA,IACA,SACA,qBACA,kCAGA,C,uBCdI,GAAJ,YAEA,aACA,IAIA,EACA,EALA,qBAqDA,aACA,IACA,IACA,CACA,OAxDA,0CACA,eAIA,IACA,+BACA,sCACA,OACA,OACA,MAaA,OAXA,WACA,CACA,kBACA,6BACA,eAEA,OADA,cACA,CAEA,GACA,EAGA,EACA,sBAGA,IAFA,SACA,UACA,aACA,WACA,KACA,IACA,8BACA,KACA,KACA,CAMA,CAJA,SAGA,kJACA,CAEA,CACA,GACA,YAEA,EACA,oBACA,GACA,CACA,IAKA,CACA,C,OA5DA,iB,aA0EA,CA3EA,CA2EEupF,GAAF,G,UClEI8/L,GAAqB,yCACrBC,GAAyB,uBACzBC,GAAuB,4BACvBC,GAAuB,yBAEvBC,GAAoB,CAExB,uBAOA,SAASC,GAAmB1pR,EAAM2pR,GAClC,kBACA,CAqCA,SAASC,GAAiBC,EAAWz+N,GACrC,SAOA,OANA,2BACA,SAEA,OADA,MACA,CAEA,IACA,CACA,CAWA,IAAI,GAAJ,WACA,aAEA,MACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAIA,IACA,gCAgQA,aACA,KAEA,wBACA,UACA,mBACA,YACA,SACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,KACA,OACA,gCACA,iBACA,MACA,CACA,aACA,4BACA,CAEA,cAEA,MAlXA,SAA6BnsD,EAAQ6qR,EAAiBC,GACtD,MAEA,KAGA,KAwBA,OAtBA,4BAEA,uCACA,gBAEA,cACA,UACA,OACA,kBAKA,OAJA,4EAQA,SAEA,UAEA,KACA,GACA,QAEA,QACA,CACA,CA+UA,eACA,UACA,OAEA,YAGA,GADA,cFxNA,gBACA,SAKA,GAJA,GAEA,+CAEA,GAEA,SACA,2BACA,YACA,UAEA,IACA,SACA,CACA,QACA,CEuMA,SACA,GAKA,wBACA,OACA,cAGA,KADA,qBAEA,aAEA,cACA,MAEA,EFpZA,cACA,aACA,wCACA,CACA,oBACA,oBACA,aAEA,MADA,IAEA,OACA,OAEA,CACA,KACA,2BAEA,uBACA,cACA,aACA,WAEA,IACA,MAEA,GAEA,IAEA,GACA,CA+CA,SACA,GACA,qCACA,YACA,6BACA,KACA,2BACA,oBACA,yCAEA,GACA,EACA,yBACA,QACA,EACA,+BACA,wBACA,UACA,eACA,UACA,GACA,EACA,OApEA,cACA,UACA,UAOA,OALA,mBACA,UACA,eACA,UACA,KACA,CACA,EA2DA,iBACA,qBACA,uBACA,kBACA,GACA,QACA,EACA,kBACA,qBACA,uBACA,oBACA,GACA,QACA,EACA,SAxEA,cACA,UACA,SACA,YAQA,OANA,mBACA,UACA,eACA,WACA,IACA,KACA,CACA,EA6DA,WA5DA,YACA,WAmBA,OAlBA,cACA,2BAEA,wBACA,iCACA,eAGA,OAFA,KAEA,CAEA,IACA,GAEA,QAGA,IAEA,CACA,EAwCA,wBAEA,QACA,KACA,OAEA,aACA,IACA,WACA,IACA,gBACA,QAEA,QACA,OAEA,CAgCA,OA3CA,SAYA,qBACA,uBACA,YACA,IACA,SAEA,sBACA,KACA,GACA,OACA,IAIA,WACA,yBACA,OACA,GACA,MAGA,IAIA,CACA,GACA,eACA,KACA,GACA,KACA,CACA,EACA,sBACA,GACA,GAEA,QACA,CE0OA,MAGA,WACA,WAEA,yBAEA,eACA,oBAEA,kDACA,GA8JA,YACA,0BACA,wCACA,UAEA,CAlKA,GAEA,CACA,cACA,MACA,OACA,OA4CA,OA3CA,kCACA,6BAEA,OADA,KACA,CAEA,KACA,OAEA,mBAEA,KACA,GACA,WAEA,kBACA,wBACA,EACA,uBACA,sBACA,wBACA,EACA,uBACA,WACA,cACA,UACA,OACA,WAEA,QACA,GACA,mBACA,GAEA,GACA,UACA,YAGA,OACA,GACA,EA7BA,EA8BA,GAEA,CACA,CACA,aACA,OAEA,uBAEA,sBACA,WAEA,mCACA,CACA,QACA,CACA,kBACA,iBACA,0BACA,oBACA,oBACA,SAEA,KACA,6BACA,QAIA,KAHA,UAKA,IACA,IAEA,SACA,IACA,6BACA,SACA,2BACA,QAIA,KAHA,UAKA,IACA,UACA,IACA,KAEA,OACA,IACA,UACA,MAEA,KAEA,CACA,aACA,+BACA,IACA,2BACA,MACA,UACA,uCACA,4BACA,6BACA,wBACA,6BACA,GACA,UACA,IACA,UAEA,CACA,oBACA,SACA,qBAEA,UACA,EACA,CAkCA,cACA,cACA,EAEA,sBAGA,cAEA,CA7eA,IACA,6BAEA,0BACA,GACA,gBAGA,WACA,6DAEA,QACA,UACA,sBACA,kDAEA,IAEA,QAibA,WACA,oCACA,WAEA,WACA,QAEA,gBACA,kBACA,WAEA,CA3bA,GA4bA,WACA,oCACA,OAEA,QAEA,GAEA,sBAEA,CArcA,GAucA,uBACA,sBArcA,IACA,WAEA,8BAEA,MACA,sDACA,yBACA,QACA,gBACA,qCAEA,KACA,gBACA,EACA,qCACA,SAMA,OALA,GACA,2BACA,gBACA,IAEA,cACA,EACA,oBAEA,uBAEA,uCAEA,oBACA,aAEA,aAIA,UAEA,EACA,UACA,mBAOA,OANA,IAEA,EA1GA,WACA,MACA,2BACA,oBACA,sBACA,sBACA,wBACA,wBACA,GACA,CAiGA,GAEA,SAEA,CACA,EAOA,oBACA,GACA,UAEA,EAKA,oBACA,GACA,UAEA,EACA,0BAIA,OAHA,IACA,2BAEA,CACA,EACA,2BACA,GACA,EACA,mBACA,WACA,8BACA,2BACA,iBACA,iBAEA,CAEA,2BACA,EACA,yBACA,GACA,EACA,sBACA,cACA,EACA,0BACA,iBACA,QACA,KACA,2BACA,YACA,GACA,CACA,EAIA,+BACA,UACA,2CAUA,OATA,SACA,OAEA,GACA,iBAEA,0BACA,GACA,KAEA,EAIA,mBACA,IACA,iBACA,IACA,IAEA,EAEA,kEACA,yBACA,WACA,cACA,GAEA,gBAGA,GAEA,gBAEA,WACA,YAEA,QACA,mBACA,GACA,sBAKA,cACA,kBACA,KAEA,WAEA,UAEA,UACA,CAbA,oBACA,IACA,OACA,MAWA,YACA,KAEA,EACA,UACA,8BACA,MAGA,OAFA,cACA,MAGA,iBACA,SAGA,OAFA,cACA,6CAGA,OACA,WAEA,cACA,WACA,YAEA,KACA,QACA,CACA,MACA,iBAKA,IAJA,CACA,SACA,cAEA,YACA,GAKA,YACA,aACA,KALA,QAOA,GACA,MAEA,GAEA,EACA,0BACA,QACA,EACA,UACA,0BAIA,OAHA,IACA,kBAEA,CACA,EACA,0BACA,SACA,EAEA,yDAiPA,GACA,C,oBAkKA,CA9qBA,GCtFA,SAASC,GAAchoR,EAAWlpD,EAAMmrQ,EAAS59O,GACjD,2BACA,WACA,KACA,6CAGA,IACA,IAGA,CADA,SACA,CAIA,GACA,CAIA,IAAI,GAAJ,WACA,cACA,kBACA,gCACA,gCACA,oBACA,oBACA,EAKA,oBAEA,IADA,6BACA,MACA,uBACA,wBAEA,EAKA,oBACA,gCACA,UACA,GACA,EAOA,sBACA,gCACA,YACA,GACA,EAMA,sBACA,+BACA,YACA,GACA,EACA,oBACA,KAEA,cACA,gCACA,QACA,8CAGA,UAEA,IAGA,CACA,GACA,C,oBAwCA,CAzGA,GCfI,GAAJ,YAEA,aACA,yBA8BA,OA7BA,+BAsBA,cACA,gBACA,GACA,cAEA,CA1BA,0BACA,uCACA,EACA,oBACA,+EACA,WACA,KAEA,uCAOA,YACA,uBACA,KACA,uCAEA,CATA,IACA,UACA,wCACA,CAaA,IACA,CACA,C,OAjCA,iB,aAyCA,CA1CA,CA0CE,IxiB9CE,GAAJ,WACI,GAAJ,abCA,gBACA,UACA,YACA,aACA,YACA,gBACA,aACA,aACA,aACA,YACA,UACA,+BACA,iCACA,oBACA,aACA,oBACA,WACA,sBACA,iCACA,4BACA,eACA,iBACA,iCACA,+BACA,4BACA,yBACA,kCACA,4CACA,uBACA,yBACA,0BACA,YACA,gBACA,eACA,cACA,cACA,qBACA,eACA,gBACA,mBACA,YACA,qBACA,yBACA,kBACA,0BACA,qBACA,cACA,2BACA,mBACA,2BACA,cACA,yBACA,UACA,gBACA,4BACA,wBACA,uBACA,mBsjB1DA,SAAS4jT,GAAkBC,EAAej+T,EAAOC,GACjD,QACA,OACA,OAIA,OAHA,OACA,WAEA,CACA,CAEA,SAASi+T,GAAiBlmU,EAAOnL,EAAMoxU,EAAej+T,EAAOC,GAC7D,QACA,YAIA,OAHA,IACA,gBAEA,CACA,CAEA,SAASk+T,GAAcnmU,EAAOnL,EAAMrG,GACpC,iBACA,IACA,WACA,eACA,KACA,KAEA,QACA,CAyGA,IAAI,GACJ,WACA,WACA,SACA,0BACA,SACA,SAEA,QACA,EAII,GAAJ,WACA,oBACA,MACA,OACA,IAIA,WACA,eACA,0BACA,WACA,iCACA,wBACA,WACA,QACA,eACA,WACA,gBACA,WACA,WACA,WACA,2BACA,WACA,4BACA,eACA,4BACA,kBACA,QACA,QACA,oDAEA,MADA,IACA,MACA,YACA,oBACA,cACA,GAGA,KAEA,6BACA,4BACA,2BACA,EACA,yBACA,uCACA,EACA,sBACA,MAGA,GADA,qFACA,QACA,YAEA,WACA,uBACA,iBAEA,oBACA,SACA,WACA,iBACA,kCACA,sBACA,eACA,yBACA,GACA,QAgBA,GAfA,QACA,UAEA,QAEA,eACA,sBA/LA,SAA2B43U,EAAUC,GAqBrC,YACA,YACA,IACA,SACA,UACA,QACA,iBACA,YACA,aACA,YACA,aACA,cACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,iBACA,oBACA,oBACA,iBACA,MAEA,iBAEA,iBAEA,iBAEA,iBAEA,iBAEA,gCAEA,6BAEA,YACA,IACA,gBAEA,cACA,uBACA,WACA,MACA,SACA,6BACA,8BACA,WACA,8BACA,yCACA,OACA,eAEA,oBAEA,QAGA,IACA,MACA,IACA,YACA,CACA,gBACA,gBACA,eACA,MAEA,QACA,mCAGA,IACA,QAEA,CA4FA,MACA,GACA,sCACA,aAGA,GACA,UACA,MAEA,YASA,GARA,IACA,wBAEA,OACA,iCACA,yBAGA,MACA,eACA,aACA,qBACA,gEAEA,aACA,kEAEA,MACA,YACA,yBAGA,CACA,CACA,QACA,EACA,iBACA,MACA,OACA,QACA,sBAEA,OADA,MACA,qBACA,UACA,iBACA,GACA,qBACA,YAEA,CACA,QACA,CACA,GACA,C,oBAkBA,CAtJA,GCjJIC,GAAsB,YACtBC,GAAa,UACbC,GAAc,WACdC,GAAY,QACZC,GAAe,mCACfC,GAAe,wCACfC,GAAgBD,GAAe,oBAC/BE,GAAiBF,GAAe,iBAChCG,GAA2B,gHAC3BC,GAA+B,iGAC/BC,GAAqC,2CAErCC,GAAa,EAkDjB,SAASC,GAAiCr9B,GAC1C,SACA,IACA,sBACA,4BAIA,CADA,SACA,CAEA,QACA,CAEA,SAASs9B,GAAuBC,EAAqBC,EAAO1tT,EAASgvB,EAAY2+R,GACjF,8BACA,CAEA,SAASC,GAAsBH,EAAqBC,EAAO1tT,EAASgvB,EAAY2+R,GAChF,8BACA,CAEA,SAASE,GAAyBJ,EAAqBK,EAAiB9tT,GAExE,mBACA,UACA,iCACA,8BAEA,CACA,CACA,SAAS+tT,GAASl5U,EAAOuT,GACzB,YACA,cAEA,CACA,CACA,SAAS4lU,GAAY/rP,EAAW1H,EAAIp4D,GACpC,OACA,KACA,MAGA,OADA,UACA,CACA,kBACA,6BACA,eAEA,OADA,eACA,CAEA,GACA,EAEA,CACA,SAAS8rT,GAA4B7rR,EAAM6/B,EAAWuzM,EAASx1Q,GAC/D,SAWA,OAVA,6BACA,KACA,wBACA,KAKA,CAFA,SACA,+GACA,CACA,IACA,CACA,CAuBA,IAAIkuT,GAAY,eAChB,gBACA,iBACA,sBACA,iBACA,yBAEIC,GAA4B,CAChC,uHAEA,SAAS,KACT,MA2BA,OA1BA,MACA,QACA,SACA,SACA,aACA,+BACA,2BACA,sCACA,kCACA,0CACA,aACA,2BACA,SACA,SACA,SACA,SACA,8BACA,SACA,iBACA,gBACA,YACA,oBAEA,aACA,qBACA,CAEA,CACA,SAASC,KACT,WAIA,OAHA,2BACA,WACA,IACA,CACA,CACA,IAAI,GAAJ,YAEA,aACA,IAGA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAzBA,qBAuyBA,OAtyBA,0BACA,eAwBA,+BACA,iBAuHA,aACA,oBACA,KACA,KACA,0BACA,qBACA,KACA,KACA,IACA,OACA,KACA,KACA,OACA,KACA,IACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,IACA,KACA,IACA,CAsCA,cACA,SASA,OARA,qBACA,yCACA,qBAEA,OADA,MACA,CAEA,IAEA,CACA,CAuFA,kBACA,E3BxYA,gBACA,SACA,mBAEA,IACA,C2BmYA,QACA,CAsEA,kBACA,SACA,iDAYA,GAVA,2BACA,QACA,iBACA,iBAEA,IACA,YAEA,IAEA,EACA,SAEA,gBACA,YAkCA,QAjCA,sBACA,MAEA,QAEA,oBAGA,eAIA,iBAEA,qCACA,eALA,0BAQA,cACA,MAEA,EAEA,OACA,QAKA,OACA,MAGA,CACA,CAIA,gBACA,SACA,IAKA,OAJA,iBACA,+BAGA,GAEA,CACA,CACA,aACA,WAQA,OAPA,2BACA,0BAGA,yBACA,wBAEA,CACA,CAqJA,gBACA,gBACA,oBACA,2BACA,KACA,iBACA,UACA,4BACA,eACA,WAEA,CACA,CACA,CACA,oBACA,YACA,gBACA,8BACA,QACA,QACA,KACA,aACA,IACA,SACA,IAGA,IAFA,WACA,iBACA,oBACA,WACA,MACA,4BACA,sBACA,oCACA,UAGA,wCAEA,QACA,KACA,CACA,mBAEA,KAEA,CACA,CACA,EACA,GACA,OACA,OACA,aACA,8BAEA,oBAEA,iBAEA,KAMA,eAKA,CAFA,SACA,IACA,CACA,CAjDA,EAkDA,CAqCA,cACA,SACA,IACA,iBAEA,oBADA,oBACA,EAGA,MAHA,MASA,CAFA,SACA,qFACA,CACA,QACA,CACA,0BAIA,kBACA,YACA,+BACA,IACA,4BAEA,4BACA,CAVA,IAWA,WACA,QACA,mBACA,IACA,EADA,qBAEA,IACA,IACA,qCAKA,CAFA,SACA,YACA,CACA,WACA,QACA,mDAEA,cACA,qBACA,MAEA,WACA,sBACA,4BAGA,gBACA,YACA,IACA,CAeA,wBACA,MACA,KACA,MACA,IASA,WARA,GACA,SAEA,MACA,kBACA,uBACA,uBACA,GACA,gBAEA,GACA,YAEA,CAzwBA,IACA,+BACA,oBACA,sBACA,yEA4IA,YACA,iCAEA,OACA,WACA,6BACA,kCACA,IACA,YAUA,GATA,QACA,QACA,QACA,QACA,QACA,oDACA,QACA,eACA,eACA,GACA,oCAEA,EADA,QACA,4BAGA,QAEA,CACA,UACA,SACA,CAxKA,KA7MA,SAAiCX,GACjC,SACA,kBACA,2BACA,oBACA,sBACA,sBACA,oBACA,CACA,oBAIA,GAHA,SACA,MAEA,EAEA,KACA,oBACA,OAEA,gCACA,2BAQA,CANA,SAEA,KACA,kFACA,0BAEA,CAEA,QACA,CAocA,YAEA,yBACA,KACA,sBACA,OACA,YACA,SACA,kBACA,6BA0IA,kBACA,MACA,MACA,6BACA,8BACA,2EACA,iBACA,QACA,QACA,4BACA,SACA,UACA,QACA,OACA,CAtJA,UAuJA,YACA,2EACA,MACA,IACA,2BA6BA,YACA,YAGA,gBACA,YACA,+BACA,IACA,4BAEA,4BACA,CATA,WACA,YASA,iCACA,IACA,iCACA,MACA,OACA,mBAEA,SACA,MA6DA,YACA,MACA,IACA,cACA,cAEA,IADA,kBACA,CACA,iCACA,gBACA,CAQA,CALA,SACA,mBACA,UACA,2BACA,GACA,CACA,CA/EA,IACA,sBACA,MAnCA,YACA,IACA,qBACA,sBAEA,YAIA,CADA,SACA,CAEA,WACA,CAuBA,IACA,iBACA,GACA,MACA,cACA,MAGA,sCACA,KACA,2BACA,oBACA,YACA,eACA,OACA,OAEA,IACA,OACA,CACA,CACA,QACA,IACA,SACA,IACA,IACA,0BAKA,CAFA,SACA,YACA,CACA,WACA,QACA,mDAEA,cACA,qBACA,MAEA,QACA,sBACA,4BAYA,CATA,QAGA,IACA,UAGA,CADA,SACA,CAEA,CACA,gBACA,SACA,GACA,CA5GA,GAYA,CATA,SACA,qBAEA,gCACA,0DACA,UACA,cACA,GAEA,CACA,KACA,CAvKA,IAEA,CACA,EACA,+BAGA,yBACA,KACA,kBACA,OACA,YACA,QACA,kCACA,WACA,WACA,yBACA,4BAEA,CACA,EACA,uBAGA,0BACA,KACA,gBACA,OACA,YACA,QACA,kCACA,QACA,4BAEA,CACA,EACA,gCAGA,qCACA,KACA,oBACA,UACA,YACA,aACA,eAEA,CACA,EACA,2CAEA,MA1JA,WACA,MA1ZA,WACA,oBACA,UACA,wBACA,8BACA,mBACA,KAEA,KACA,CAiZA,GACA,MACA,OAEA,oBACA,aACA,KAyDA,GAOA,WACA,KACA,oBAEA,WACA,MApEA,WACA,KAEA,oBACA,MACA,WACA,eAEA,QACA,cACA,EAsbA,cACA,MACA,MACA,6BACA,8BACA,2EACA,iBACA,WACA,QACA,qBACA,iBAGA,QAEA,YACA,SACA,QAEA,0BACA,SAEA,QACA,SACA,MACA,0DACA,uBACA,OACA,OAEA,GACA,CAGA,OAFA,QACA,QACA,CACA,CAzdA,MACA,mBACA,OACA,WAEA,QACA,CACA,EACA,kBACA,OACA,mBACA,IAEA,gCAoBA,OAnBA,kCACA,MACA,OACA,yBAEA,SACA,MAigBA,YACA,YACA,IACA,uBACA,gBAOA,CALA,SACA,YACA,6BACA,0BAEA,CAEA,CA9gBA,IACA,GACA,SACA,SACA,iCACA,OACA,OAEA,IACA,OACA,CACA,QACA,IACA,CACA,uBAEA,MADA,uDACA,CACA,IAEA,CACA,EAEA,sDAEA,MAiBA,IAGA,iBAEA,CA/QA,GAuKA,WACA,0BACA,IACA,eAEA,CA3KA,GAEA,EACA,yBACA,GACA,EACA,oCACA,mBACA,EACA,wBAEA,8BAEA,GAzHA,SAAqCrpR,EAAWhC,EAAMqqR,EAAUv8B,EAAKrzR,EAAOs4C,GAC5E,MAEA,GADA,MACA,GACA,cACA,MACA,QACA,UACA,SACA,gBACA,eACA,mBACA,oBACA,kBACA,GACA,qBACA,YACA,YACA,YACA,WACA,CACA,CAmGA,kBACA,GACA,wBACA,IACA,MAKA,0DACA,MACA,0BACA,eACA,IACA,eAEA,CAQA,IAPA,uBAEA,qBACA,IACA,uBAGA,GACA,YACA,iBACA,KAEA,gDACA,eACA,IACA,eAEA,CACA,OACA,CACA,QACA,CACA,MACA,wBACA,MACA,sBACA,eACA,IACA,eAEA,CACA,MAOA,IAPA,uBAEA,qBACA,IACA,uBAGA,GACA,QACA,iBACA,KAEA,4CACA,eACA,IACA,eAEA,CACA,CACA,QACA,CAEA,EACA,sBACA,gBAIA,WACA,WACA,iDACA,WAEA,qBACA,gBAEA,oDACA,cACA,MACA,OACA,wMAEA,CACA,EACA,oCACA,kBACA,EACA,uCACA,kBACA,CAqpBA,IACA,CACA,CAiDA,OA31BA,iBA8yBA,2CACA,qBACA,EA4BA,iDACA,WACA,EAEA,oCASA,sBACA,oBACA,CACA,CA71BA,CA61BA,MC1iCIk5Q,GACJ,WACA,ECFIC,GAIJ,WAEA,kBAGA,0BACA,EzjBHA,oBACA,YACA,qBACA,eACA,iBACA,oBACA,yBACA,6BACA,wBACA,2BACA,sBACA,gCACA,0BACA,0BACA,eACA,kBACA,kBACA,gBACA,0BACA,uBACA,cACA,cACA,YACA,sBACA,qBACA,yBACA,sBACA,YACA,qBACA,iBACA,kBACA,UACA,qBACA,wB0jBvCIC,GAAU,SACV,GAIJ,YACA,gEACA,ECRIC,GACJ,WACA,ECEIC,GAAkB,aAClBC,GACJ,WACA,EAII,GAAJ,WACA,gBACA,IACA,EACA,EACA,iBACA,kBACA,cALA,MAKA,YACA,IACA,MAEA,qBACA,4CAEA,qBACA,wCAEA,QAEA,gCACA,eACA,yCAwEA,gBACA,SACA,4BACA,eACA,YACA,IACA,eACA,WACA,eACA,yDAEA,eACA,qDAEA,OAEA,UACA,QACA,QACA,KAKA,CAFA,SACA,mHACA,CAEA,QACA,CAYA,gBACA,YACA,QACA,YACA,UAGA,cACA,aACA,IAEA,EADA,IACA,MAGA,MAEA,yBAIA,0CACA,GACA,CApIA,0BACA,aACA,iBAGA,oBACA,KACA,QACA,OACA,GAqCA,cACA,SACA,aACA,2BACA,aAEA,CAKA,gBACA,IACA,SAEA,CACA,gBACA,CAtDA,KAEA,qBACA,YACA,qBACA,UACA,UAGA,GADA,GADA,aACA,MACA,GACA,CAEA,EA8EA,YACA,gBACA,6BACA,0CACA,YACA,WAEA,MACA,kGAEA,CAtFA,MAIA,gCACA,MAGA,EAMA,oBACA,IA+FA,MA/FA,QA+FA,EA9FA,KA8FA,EA9FA,MA8FA,EA9FA,MAkGA,0BAjGA,CAmGA,GACA,CAeA,OAHA,wBACA,mBACA,2BACA,CACA,CAlLA,GCTI,GACJ,kBACA,WACA,4BACA,aACA,qBACA,mBACA,cAEA,cACA,ECRA,SAASC,GAAmBp0P,GAI5B,8BACA,GACA,sBAIA,CACA,IAAI,GAAJ,WACA,gBAIA,kBAIA,wBACA,IAEA,EAFA,iBACA,kBAEA,gCACA,QACA,+CACA,wCAEA,iBACA,MACA,SACA,qBACA,UACA,UAEA,aAEA,CACA,aACA,YAGA,QAFA,2BACA,iBAEA,CACA,cACA,4BAIA,OAHA,2BACA,SACA,KAEA,CACA,cAKA,kBADA,QAEA,CACA,UACA,SAEA,EADA,QACA,YAGA,uDACA,OACA,CAGA,2BAGA,mBACA,MAEA,OADA,gBACA,aACA,OACA,YAEA,gBACA,WAEA,CACA,8CAIA,QAHA,eAEA,iBAEA,mLACA,OAFA,CAMA,QACA,YACA,IACA,QACA,kCAEA,GAGA,yBAXA,CAaA,EAKA,2CACA,WACA,WACA,YACA,EACA,kBAEA,iBAGA,EADA,EADA,QAEA,WAEA,CACA,GACA,CA6BA,OAHA,sBACA,2BACA,mCACA,CACA,CA/IA,GCFIq0P,GAAS,MACTC,GAAU,OACd,SAASC,GAAajpU,EAAQ3K,GAC9B,2CACA,IAEA,CACA,ICVI6zU,GDUA,GAAJ,WACA,kBACA,WACA,WACA,mCACA,iCACA,gCAGA,GAFA,qBACA,qBACA,eACA,kBACA,gBACA,kBACA,mBACA,IAEA,EAFA,SACA,SAEA,IACA,iBACA,gBACA,eAEA,sBACA,gBACA,CACA,iBACA,gBACA,OAEA,wBACA,WAEA,CAEA,sBACA,gCACA,CACA,QACA,EACA,oBACA,6DACA,EACA,oBACA,gCACA,EACA,oBACA,oBACA,MAEA,wBACA,+CACA,8CACA,CACA,EACA,oBACA,eACA,MAEA,kDACA,kCACA,6BACA,mCACA,8CACA,CACA,EACA,oBACA,iBACA,MACA,wBACA,0DACA,sDACA,sDACA,mDACA,8CAEA,CACA,EACA,oBACA,iBACA,GACA,wDAEA,EACA,oBACA,YACA,MACA,kFACA,2CACA,qCACA,4CACA,CACA,EACA,gCACA,YACA,GACA,0CAEA,EACA,oBACA,aACA,MACA,2BAEA,0CAEA,gDACA,6BACA,iCACA,CACA,EACA,wBACA,YACA,IACA,mBACA,iBACA,gBACA,eACA,gBACA,kBAEA,CACA,GACA,C,oBAgCA,CA1JA,GE+HA,GA3IA,YAEA,aACA,IAGA,EACA,EACA,EALA,qBAkGA,OAjGA,eACA,gBAIA,+BAkDA,aACA,OACA,OACA,MACA,CArDA,IACA,+BACA,sBAoDA,YACA,mBACA,SACA,yBACA,uBACA,QACA,6BACA,4CACA,IACA,YACA,wBACA,sBACA,iBACA,2BACA,sBACA,6BACA,EAEA,cACA,CAtEA,GACA,EAKA,iCACA,uBAGA,CACA,kBAEA,0BACA,wCAEA,oBACA,WAEA,+CACA,YAGA,aAKA,GAJA,WACA,iBA8CA,cAEA,yBACA,wBACA,gBACA,WACA,WACA,WACA,WACA,WACA,WACA,uBACA,WACA,WACA,cACA,CA3DA,MACA,UACA,SACA,oDACA,4BACA,CACA,kBACA,CACA,EACA,4BACA,qBACA,WACA,YACA,GACA,kBAGA,GACA,CA0CA,IACA,CACA,CAmCA,OAxIA,iBAsGA,8BACA,MACA,EACA,OAmBA,OAlBA,GACA,0CAEA,yBACA,2CACA,4CACA,+CACA,2BACA,2BACA,oDACA,6BACA,2BACA,2BACA,2BACA,2BACA,4BACA,2BACA,CAEA,EAWA,CACA,CA1IA,CA0IEpjM,GAAF,GpjB7IIqjM,GAA8B,2BAC9BC,GAAS,QAEb,aACA,kBACA,oBACA,mBACA,WACA,qBACA,oBACA,6BAEA,sBACA,eACA,kBACA,cACA,cACA,eACA,iBACA,kBACA,uBACA,YACA,cbpBA,8BACA,qBACA,iBAMA,2BAQA,gCACA,0BAMA,YACA,aACA,UACA,aACA,WACA,sBACA,wBACA,iBACA,mCACA,6BACA,mBACA,iCACA,agkB7BIC,GAAiC,CACrC,oFAuDI,GAAJ,WACA,cACA,IAEA,EACA,EACA,EACA,EACA,EACA,EACA,EARA,OASA,gCAiPA,wBACA,OACA,OACA,OACA,OACA,OAnPA,uBACA,gBACA,eACA,gBACA,UACA,gBACA,sBACA,mBACA,iCACA,CACA,aACA,SACA,SACA,SACA,SACA,SACA,kCACA,UACA,gGAEA,QACA,QAiNA,aACA,wCAhNA,uBACA,cACA,6DACA,iCACA,2BACA,QACA,GACA,GACA,UACA,EACA,uBACA,cACA,iCACA,2BACA,MACA,QAGA,QAEA,GACA,GACA,EACA,sBA+CA,YA9CA,cAyBA,gDACA,qDAEA,4EACA,SACA,SACA,SACA,SACA,aAEA,0BACA,YACA,YACA,0BArCA,YACA,MACA,SACA,iBACA,MAEA,IACA,UAEA,wBACA,kCAGA,6BACA,iBACA,gBACA,gBACA,wBACA,OAEA,GACA,CACA,CAiBA,QAEA,eACA,QACA,QACA,IACA,CACA,EACA,kBAGA,6BAEA,gCACA,GACA,EACA,wBAEA,IACA,+BAGA,IADA,2BACA,cAEA,EADA,mBAEA,CACA,4BACA,aACA,CAaA,CAXA,SAEA,4BACA,YAQA,CACA,EACA,kBAEA,iCACA,iBAWA,GAHA,UAGA,yBACA,qBACA,MACA,eACA,iCACA,8BAEA,CACA,CACA,EACA,KACA,4CACA,IACA,kCAEA,2BAGA,sBACA,MAGA,sBACA,MAIA,kBACA,2FAGA,6BAEA,mBAEA,CACA,EACA,uBACA,QACA,EACA,yBACA,SAEA,IACA,qBACA,sBAEA,yBACA,EACA,qBACA,GACA,GACA,GACA,2BACA,GACA,WACA,GACA,GACA,GACA,GACA,GACA,KAEA,eA2BA,WACA,QACA,GA7BA,CACA,GACA,wBACA,6BAEA,iBACA,GACA,GACA,0BACA,GACA,YACA,GACA,cACA,gBAEA,0BACA,YACA,oBACA,IACA,GACA,IAkBA,GACA,CA8PA,OAJA,iDACA,WACA,EAEA,CAOA,CAzgBA,IA4gBA,WACA,WAEA,GACA,2BACA,8BAEA,IAGA,mCACA,IACA,QAUA,CADA,SACA,CAEA,KACA,IACA,sBACA,KAEA,IADA,SACA,mBACA,qBACA,eACA,0BACA,oBACA,YAEA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","file":"static/js/2.cb58beeb.chunk.js","sourcesContent":["'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 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","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN0 = \"updateSnippetDefinitions\"; // Count: 4\r\nexport var _DYN_LOAD_APP_INSIGHTS = \"loadAppInsights\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 4\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 3\r\nexport var _DYN_DISABLE_EXCEPTION_TR2 = \"disableExceptionTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_EMIT_LINE_DELIMITED_3 = \"emitLineDelimitedJson\"; // Count: 2\r\nexport var _DYN_DIAGNOSTIC_LOG_INTER4 = \"diagnosticLogInterval\"; // Count: 6\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI5 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_DISABLE_AJAX_TRACKIN6 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL8 = \"isBeaconApiDisabled\"; // Count: 2\r\nexport var _DYN_DISABLE_CORRELATION_9 = \"disableCorrelationHeaders\"; // Count: 2\r\nexport var _DYN_CORRELATION_HEADER_E10 = \"correlationHeaderExcludedDomains\"; // Count: 2\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF11 = \"disableFlushOnBeforeUnload\"; // Count: 4\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL12 = \"disableFlushOnUnload\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA13 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_IS_COOKIE_USE_DISABL14 = \"isCookieUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_STORAGE_USE_DISAB15 = \"isStorageUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC16 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_ENABLE_CORS_CORRELAT17 = \"enableCorsCorrelation\"; // Count: 2\r\nexport var _DYN_CONFIG = \"config\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 3\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_APP_INSIGHTS = \"appInsights\"; // Count: 3\r\nexport var _DYN_DISABLE_IKEY_DEPRECA18 = \"disableIkeyDeprecationMessage\"; // Count: 2\r\nexport var _DYN_GET_TRANSMISSION_CON19 = \"getTransmissionControls\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF20 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}","export 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}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  _regeneratorRuntime = function _regeneratorRuntime() {\n    return exports;\n  };\n  var exports = {},\n    Op = Object.prototype,\n    hasOwn = Op.hasOwnProperty,\n    defineProperty = Object.defineProperty || function (obj, key, desc) {\n      obj[key] = desc.value;\n    },\n    $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n    iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n    asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n    toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n  function define(obj, key, value) {\n    return Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), obj[key];\n  }\n  try {\n    define({}, \"\");\n  } catch (err) {\n    define = function define(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n      generator = Object.create(protoGenerator.prototype),\n      context = new Context(tryLocsList || []);\n    return defineProperty(generator, \"_invoke\", {\n      value: makeInvokeMethod(innerFn, self, context)\n    }), generator;\n  }\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n  exports.wrap = wrap;\n  var ContinueSentinel = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n  var getProto = Object.getPrototypeOf,\n    NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function (method) {\n      define(prototype, method, function (arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (\"throw\" !== record.type) {\n        var result = record.arg,\n          value = result.value;\n        return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n          invoke(\"next\", value, resolve, reject);\n        }, function (err) {\n          invoke(\"throw\", err, resolve, reject);\n        }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n          result.value = unwrapped, resolve(result);\n        }, function (error) {\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n      reject(record.arg);\n    }\n    var previousPromise;\n    defineProperty(this, \"_invoke\", {\n      value: function value(method, arg) {\n        function callInvokeWithMethodAndArg() {\n          return new PromiseImpl(function (resolve, reject) {\n            invoke(method, arg, resolve, reject);\n          });\n        }\n        return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = \"suspendedStart\";\n    return function (method, arg) {\n      if (\"executing\" === state) throw new Error(\"Generator is already running\");\n      if (\"completed\" === state) {\n        if (\"throw\" === method) throw arg;\n        return doneResult();\n      }\n      for (context.method = method, context.arg = arg;;) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n        if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n          if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n          context.dispatchException(context.arg);\n        } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n        state = \"executing\";\n        var record = tryCatch(innerFn, self, context);\n        if (\"normal\" === record.type) {\n          if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n          return {\n            value: record.arg,\n            done: context.done\n          };\n        }\n        \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method,\n      method = delegate.iterator[methodName];\n    if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n    var record = tryCatch(method, delegate.iterator, context.arg);\n    if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n    var info = record.arg;\n    return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n  }\n  function pushTryEntry(locs) {\n    var entry = {\n      tryLoc: locs[0]\n    };\n    1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n  }\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\", delete record.arg, entry.completion = record;\n  }\n  function Context(tryLocsList) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) return iteratorMethod.call(iterable);\n      if (\"function\" == typeof iterable.next) return iterable;\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n          next = function next() {\n            for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n            return next.value = undefined, next.done = !0, next;\n          };\n        return next.next = next;\n      }\n    }\n    return {\n      next: doneResult\n    };\n  }\n  function doneResult() {\n    return {\n      value: undefined,\n      done: !0\n    };\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n    var ctor = \"function\" == typeof genFun && genFun.constructor;\n    return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n  }, exports.mark = function (genFun) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n  }, exports.awrap = function (arg) {\n    return {\n      __await: arg\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    void 0 === PromiseImpl && (PromiseImpl = Promise);\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n    return this;\n  }), define(Gp, \"toString\", function () {\n    return \"[object Generator]\";\n  }), exports.keys = function (val) {\n    var object = Object(val),\n      keys = [];\n    for (var key in object) keys.push(key);\n    return keys.reverse(), function next() {\n      for (; keys.length;) {\n        var key = keys.pop();\n        if (key in object) return next.value = key, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, exports.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var rootRecord = this.tryEntries[0].completion;\n      if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) throw exception;\n      var context = this;\n      function handle(loc, caught) {\n        return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n      }\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i],\n          record = entry.completion;\n        if (\"root\" === entry.tryLoc) return handle(\"end\");\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n            hasFinally = hasOwn.call(entry, \"finallyLoc\");\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n          } else {\n            if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n      finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n      var record = finallyEntry ? finallyEntry.completion : {};\n      return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (\"throw\" === record.type) throw record.arg;\n      return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (\"throw\" === record.type) {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      return this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n    }\n  }, exports;\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    DSTS: \"dstsv2\",\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    NOT_APPLICABLE: \"N/A\",\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    REGIONAL_AUTH_NON_MSI_QUERY_STRING: \"allowestsrnonmsi=true\",\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    SHR_NONCE_VALIDITY: 240,\n    INVALID_INSTANCE: \"invalid_instance\",\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    X_MS_REQUEST_ID = \"x-ms-request-id\",\n    X_MS_HTTP_VERSION= \"x-ms-httpver\"\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\", // Legacy active-account cache key, use new key instead\n    ACTIVE_ACCOUNT_FILTERS = \"active-account-filters\" // new cache entry for active_account for a more robust version for browser\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    NO_SESSION: \"no_session\"\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    HARDCODED_VALUES= \"hardcoded_values\",\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\nexport const ONE_DAY_IN_MS = 86400000;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n    if (defaultValue === void 0) { defaultValue = false; }\r\n    if (str === undefined || str === null) {\r\n        return defaultValue;\r\n    }\r\n    return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n    if (isNaN(totalms) || totalms < 0) {\r\n        totalms = 0;\r\n    }\r\n    totalms = Math.round(totalms);\r\n    var ms = strEmpty + totalms % 1000;\r\n    var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n    var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n    var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n    var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n    ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n    sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n    min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n    hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n    return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n    var extension = null;\r\n    arrForEach(extensions, function (value) {\r\n        if (value.identifier === identifier) {\r\n            extension = value;\r\n            return -1;\r\n        }\r\n    });\r\n    return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n    return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\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    DEFAULT_POLL_INTERVAL_MS: 30,\n    /**\n     * Msal-browser SKU\n     */\n    MSAL_SKU: \"msal.js.browser\",\n};\n\nexport const NativeConstants = {\n    CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\n    PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\n    MATS_TELEMETRY: \"MATS\"\n};\n\nexport enum NativeExtensionMethod {\n    HandshakeRequest = \"Handshake\",\n    HandshakeResponse = \"HandshakeResponse\",\n    GetToken = \"GetToken\",\n    Response = \"Response\"\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    NATIVE_REQUEST = \"request.native\",\n    REDIRECT_CONTEXT = \"request.redirect.context\"\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\nexport enum CacheLookupPolicy {\n    /*\n     * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired\n     * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token\n     * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens.\n     */\n    Default = 0, // 0 is falsy, is equivalent to not passing in a CacheLookupPolicy\n    /*\n     * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or\n     * refresh tokens.\n     */\n    AccessToken = 1,\n    /*\n     * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or\n     * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it\n     * will not be renewed and acquireTokenSilent will fail.\n     */\n    AccessTokenAndRefreshToken = 2,\n    /*\n     * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to\n     * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be\n     * renewed and acquireTokenSilent will fail.\n     */\n    RefreshToken = 3,\n    /*\n     * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the\n     * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to\n     * setting \"forceRefresh: true\".\n     */\n    RefreshTokenAndNetwork = 4,\n    /*\n     * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will\n     * always fail if 3rd party cookies are blocked by the browser.\n     */\n    Skip = 5,\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n      args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n      _next(undefined);\n    });\n  };\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","import toPropertyKey from \"./toPropertyKey.js\";\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, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\n//# sourceMappingURL=InternalConstants.js.map","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _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 _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\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 _nonIterableSpread() {\n  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}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n  var _classes;\n\n  var beat = props.beat,\n      fade = props.fade,\n      beatFade = props.beatFade,\n      bounce = props.bounce,\n      shake = props.shake,\n      flash = props.flash,\n      spin = props.spin,\n      spinPulse = props.spinPulse,\n      spinReverse = props.spinReverse,\n      pulse = props.pulse,\n      fixedWidth = props.fixedWidth,\n      inverse = props.inverse,\n      border = props.border,\n      listItem = props.listItem,\n      flip = props.flip,\n      size = props.size,\n      rotation = props.rotation,\n      pull = props.pull; // map of CSS class names to properties\n\n  var classes = (_classes = {\n    'fa-beat': beat,\n    'fa-fade': fade,\n    'fa-beat-fade': beatFade,\n    'fa-bounce': bounce,\n    'fa-shake': shake,\n    'fa-flash': flash,\n    'fa-spin': spin,\n    'fa-spin-reverse': spinReverse,\n    'fa-spin-pulse': spinPulse,\n    'fa-pulse': pulse,\n    'fa-fw': fixedWidth,\n    'fa-inverse': inverse,\n    'fa-border': border,\n    'fa-li': listItem,\n    'fa-flip': flip === true,\n    'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n    'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n  }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n  // return an array of the keys where the value for the key is not null\n\n  return Object.keys(classes).map(function (key) {\n    return classes[key] ? key : null;\n  }).filter(function (key) {\n    return key;\n  });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n  obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n  return obj === obj;\n}\n\nfunction camelize(string) {\n  if (_isNumerical(string)) {\n    return string;\n  } // eslint-disable-next-line no-useless-escape\n\n\n  string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n    return chr ? chr.toUpperCase() : '';\n  }); // Ensure 1st char is always lowercase\n\n  return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded$1 = [\"style\"];\n\nfunction capitalize(val) {\n  return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n  return style.split(';').map(function (s) {\n    return s.trim();\n  }).filter(function (s) {\n    return s;\n  }).reduce(function (acc, pair) {\n    var i = pair.indexOf(':');\n    var prop = camelize(pair.slice(0, i));\n    var value = pair.slice(i + 1).trim();\n    prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n    return acc;\n  }, {});\n}\n\nfunction convert(createElement, element) {\n  var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (typeof element === 'string') {\n    return element;\n  }\n\n  var children = (element.children || []).map(function (child) {\n    return convert(createElement, child);\n  });\n  /* eslint-disable dot-notation */\n\n  var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n    var val = element.attributes[key];\n\n    switch (key) {\n      case 'class':\n        acc.attrs['className'] = val;\n        delete element.attributes['class'];\n        break;\n\n      case 'style':\n        acc.attrs['style'] = styleToObject(val);\n        break;\n\n      default:\n        if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n          acc.attrs[key.toLowerCase()] = val;\n        } else {\n          acc.attrs[camelize(key)] = val;\n        }\n\n    }\n\n    return acc;\n  }, {\n    attrs: {}\n  });\n\n  var _extraProps$style = extraProps.style,\n      existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n      remaining = _objectWithoutProperties(extraProps, _excluded$1);\n\n  mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n  /* eslint-enable */\n\n  return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n  PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n  if (!PRODUCTION && console && typeof console.error === 'function') {\n    var _console;\n\n    (_console = console).error.apply(_console, arguments);\n  }\n}\n\nfunction normalizeIconArgs(icon) {\n  // this has everything that it needs to be rendered which means it was probably imported\n  // directly from an icon svg package\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n    return icon;\n  }\n\n  if (parse.icon) {\n    return parse.icon(icon);\n  } // if the icon is null, there's nothing to do\n\n\n  if (icon === null) {\n    return null;\n  } // if the icon is an object and has a prefix and an icon name, return it\n\n\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n    return icon;\n  } // if it's an array with length of two\n\n\n  if (Array.isArray(icon) && icon.length === 2) {\n    // use the first item as prefix, second as icon name\n    return {\n      prefix: icon[0],\n      iconName: icon[1]\n    };\n  } // if it's a string, use it as the icon name\n\n\n  if (typeof icon === 'string') {\n    return {\n      prefix: 'fas',\n      iconName: icon\n    };\n  }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n  // if the value is a non-empty array\n  // or it's not an array but it is truthy\n  // then create the object with the key and the value\n  // if not, return an empty array\n  return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar _excluded = [\"forwardedRef\"];\nfunction FontAwesomeIcon(_ref) {\n  var forwardedRef = _ref.forwardedRef,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var iconArgs = props.icon,\n      maskArgs = props.mask,\n      symbol = props.symbol,\n      className = props.className,\n      title = props.title,\n      titleId = props.titleId,\n      maskId = props.maskId;\n  var iconLookup = normalizeIconArgs(iconArgs);\n  var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n  var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n  var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n  var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n    symbol: symbol,\n    title: title,\n    titleId: titleId,\n    maskId: maskId\n  }));\n\n  if (!renderedIcon) {\n    log('Could not find icon', iconLookup);\n    return null;\n  }\n\n  var abstract = renderedIcon.abstract;\n  var extraProps = {\n    ref: forwardedRef\n  };\n  Object.keys(props).forEach(function (key) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n      extraProps[key] = props[key];\n    }\n  });\n  return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n  beat: PropTypes.bool,\n  border: PropTypes.bool,\n  beatFade: PropTypes.bool,\n  bounce: PropTypes.bool,\n  className: PropTypes.string,\n  fade: PropTypes.bool,\n  flash: PropTypes.bool,\n  mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  maskId: PropTypes.string,\n  fixedWidth: PropTypes.bool,\n  inverse: PropTypes.bool,\n  flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n  icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  listItem: PropTypes.bool,\n  pull: PropTypes.oneOf(['right', 'left']),\n  pulse: PropTypes.bool,\n  rotation: PropTypes.oneOf([0, 90, 180, 270]),\n  shake: PropTypes.bool,\n  size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n  spin: PropTypes.bool,\n  spinPulse: PropTypes.bool,\n  spinReverse: PropTypes.bool,\n  symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  title: PropTypes.string,\n  titleId: PropTypes.string,\n  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n  border: false,\n  className: '',\n  mask: null,\n  maskId: null,\n  fixedWidth: false,\n  inverse: false,\n  flip: false,\n  icon: null,\n  listItem: false,\n  pull: null,\n  pulse: false,\n  rotation: null,\n  size: null,\n  spin: false,\n  spinPulse: false,\n  spinReverse: false,\n  beat: false,\n  fade: false,\n  beatFade: false,\n  bounce: false,\n  shake: false,\n  symbol: false,\n  title: '',\n  titleId: null,\n  transform: null,\n  swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","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];","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\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    authTimeNotFoundError: {\n        code: \"auth_time_not_found\",\n        desc: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\n            \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\n            \" See https://aka.ms/msaljs/optional-claims for more information.\"\n    },\n    maxAgeTranspiredError: {\n        code: \"max_age_transpired\",\n        desc: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\"\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 max_age was provided in the request, but auth_time is not in the token claims\n     * @param missingNonce\n     */\n    static createAuthTimeNotFoundError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.authTimeNotFoundError.code,\n            ClientAuthErrorMessage.authTimeNotFoundError.desc);\n    }\n\n    /**\n     * Creates an error thrown when too much time has elapsed since the last end-user authentication\n     */\n    static createMaxAgeTranspiredError(): ClientAuthError {\n        return new ClientAuthError(ClientAuthErrorMessage.maxAgeTranspiredError.code,\n            ClientAuthErrorMessage.maxAgeTranspiredError.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","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport const strShimFunction = \"function\";\r\nexport const strShimObject = \"object\";\r\nexport const strShimUndefined = \"undefined\";\r\nexport const strShimPrototype = \"prototype\";\r\nexport const strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport const strDefault = \"default\";\r\n\r\nexport const ObjClass = Object;\r\nexport const ObjProto = ObjClass[strShimPrototype];\r\nexport const ObjAssign = ObjClass[\"assign\"];\r\nexport const ObjCreate = ObjClass[\"create\"];\r\nexport const ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport const ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}","export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (!it) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      var F = function F() {};\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var normalCompletion = true,\n    didErr = false,\n    err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\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","/*\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\nexport enum EventType {\n    INITIALIZE_START = \"msal:initializeStart\",\n    INITIALIZE_END = \"msal:initializeEnd\",\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 { 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    postRequestFailed: {\n        code: \"post_request_failed\",\n        desc: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\"\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     * Creates an error for post request failures.\n     * @param errDesc \n     * @returns \n     */\n    static createPostRequestFailed(errDesc: string): AuthError {\n        return new AuthError(AuthErrorMessage.postRequestFailed.code, `${AuthErrorMessage.postRequestFailed.desc}: ${errDesc}`);\n    }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\n;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n    var result;\r\n    if (typeof globalThis !== UNDEFINED) {\r\n        result = globalThis;\r\n    }\r\n    if (!result && typeof self !== UNDEFINED) {\r\n        result = self;\r\n    }\r\n    if (!result && typeof window !== UNDEFINED) {\r\n        result = window;\r\n    }\r\n    if (!result && typeof global !== UNDEFINED) {\r\n        result = global;\r\n    }\r\n    return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n    o: (_a = {},\r\n        _a[strSetInstFuncs] = true,\r\n        _a[strUseBaseInst] = true,\r\n        _a),\r\n    n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n    return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n    return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n    return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n    var newProto;\r\n    if (target) {\r\n        // This method doesn't exist in older browsers (e.g. IE8)\r\n        if (_objGetPrototypeOf) {\r\n            return _objGetPrototypeOf(target);\r\n        }\r\n        var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n        // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n        newProto = target[DynProtoBaseProto] || curProto;\r\n        if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n            // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n            // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n            delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n            newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n            target[DynProtoCurrent] = curProto;\r\n        }\r\n    }\r\n    return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n    var props = [];\r\n    if (_objGetOwnProps) {\r\n        props = _objGetOwnProps(target);\r\n    }\r\n    else {\r\n        for (var name_1 in target) {\r\n            if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n                props.push(name_1);\r\n            }\r\n        }\r\n    }\r\n    if (props && props.length > 0) {\r\n        for (var lp = 0; lp < props.length; lp++) {\r\n            func(props[lp]);\r\n        }\r\n    }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n    return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n    throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n    // Get the base proto\r\n    var instFuncs = {};\r\n    // Save any existing instance functions\r\n    _forEachProp(thisTarget, function (name) {\r\n        // Don't include any dynamic prototype instances - as we only want the real functions\r\n        if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n            // Create an instance callback for passing the base function to the caller\r\n            instFuncs[name] = thisTarget[name];\r\n        }\r\n    });\r\n    return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value  The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n    for (var lp = values.length - 1; lp >= 0; lp--) {\r\n        if (values[lp] === value) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n    function _instFuncProxy(target, funcHost, funcName) {\r\n        var theFunc = funcHost[funcName];\r\n        if (theFunc[DynProxyTag] && useBaseInst) {\r\n            // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n            var instFuncTable = target[DynInstFuncTable] || {};\r\n            if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n                theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n            }\r\n        }\r\n        return function () {\r\n            // eslint-disable-next-line prefer-rest-params\r\n            return theFunc.apply(target, arguments);\r\n        };\r\n    }\r\n    // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n    var baseFuncs = {};\r\n    _forEachProp(instFuncs, function (name) {\r\n        // Create an instance callback for passing the base function to the caller\r\n        baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n    });\r\n    // Get the base prototype functions\r\n    var baseProto = _getObjProto(classProto);\r\n    var visited = [];\r\n    // Don't include base object functions for Object, Array or Function\r\n    while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n        // look for prototype functions\r\n        _forEachProp(baseProto, function (name) {\r\n            // Don't include any dynamic prototype instances - as we only want the real functions\r\n            // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n            // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n            // the Object prototype methods while bypassing the check\r\n            if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n                // Create an instance callback for passing the base function to the caller\r\n                baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n            }\r\n        });\r\n        // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n        // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n        // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n        visited.push(baseProto);\r\n        baseProto = _getObjProto(baseProto);\r\n    }\r\n    return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n    var instFunc = null;\r\n    // We need to check whether the class name is defined directly on this prototype otherwise\r\n    // it will walk the proto chain and return any parent proto classname.\r\n    if (target && _hasOwnProperty(proto, DynClassName)) {\r\n        var instFuncTable = target[DynInstFuncTable] || {};\r\n        instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n        if (!instFunc) {\r\n            // Avoid stack overflow from recursive calling the same function\r\n            _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n        }\r\n        // We have the instance function, lets check it we can speed up further calls\r\n        // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n        if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n            // If the instance already has an instance function we can't replace it\r\n            var canAddInst = !_hasOwnProperty(target, funcName);\r\n            // Get current prototype\r\n            var objProto = _getObjProto(target);\r\n            var visited = [];\r\n            // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n            // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n            while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n                var protoFunc = objProto[funcName];\r\n                if (protoFunc) {\r\n                    canAddInst = (protoFunc === currentDynProtoProxy);\r\n                    break;\r\n                }\r\n                // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n                visited.push(objProto);\r\n                objProto = _getObjProto(objProto);\r\n            }\r\n            try {\r\n                if (canAddInst) {\r\n                    // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n                    // so it's safe to directly assign for any subsequent calls (for better performance)\r\n                    target[funcName] = instFunc;\r\n                }\r\n                // Block further attempts to set the instance function for any\r\n                instFunc[DynInstChkTag] = 1;\r\n            }\r\n            catch (e) {\r\n                // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n                // And set a flag so we don't try again for any function\r\n                instFuncTable[DynAllowInstChkTag] = false;\r\n            }\r\n        }\r\n    }\r\n    return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n    var protoFunc = proto[funcName];\r\n    // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n    if (protoFunc === currentDynProtoProxy) {\r\n        // It is so lookup the base prototype\r\n        protoFunc = _getObjProto(proto)[funcName];\r\n    }\r\n    if (typeof protoFunc !== strFunction) {\r\n        _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n    }\r\n    return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n    function _createDynamicPrototype(proto, funcName) {\r\n        var dynProtoProxy = function () {\r\n            // Use the instance or prototype function\r\n            var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n            // eslint-disable-next-line prefer-rest-params\r\n            return instFunc.apply(this, arguments);\r\n        };\r\n        // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n        // via which can dynamically replace the prototype function reference)\r\n        dynProtoProxy[DynProxyTag] = 1;\r\n        return dynProtoProxy;\r\n    }\r\n    if (!_isObjectOrArrayPrototype(proto)) {\r\n        var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n        var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n        // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n        if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n            instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n        }\r\n        _forEachProp(target, function (name) {\r\n            // Only add overridden functions\r\n            if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n                // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n                instFuncs_1[name] = target[name];\r\n                delete target[name];\r\n                // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n                if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n                    proto[name] = _createDynamicPrototype(proto, name);\r\n                }\r\n            }\r\n        });\r\n    }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n    // This method doesn't existing in older browsers (e.g. IE8)\r\n    if (_objGetPrototypeOf) {\r\n        // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n        var visited = [];\r\n        var thisProto = _getObjProto(thisTarget);\r\n        while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n            if (thisProto === classProto) {\r\n                return true;\r\n            }\r\n            // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n            // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n            visited.push(thisProto);\r\n            thisProto = _getObjProto(thisProto);\r\n        }\r\n        return false;\r\n    }\r\n    // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n    return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n    if (_hasOwnProperty(target, Prototype)) {\r\n        // Look like a prototype\r\n        return target.name || unknownValue || UnknownValue;\r\n    }\r\n    return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n *     constructor() {\r\n *         dynamicProto(ExampleClass, this, (_self, base) => {\r\n *             // This will define a function that will be converted to a prototype function\r\n *             _self.newFunc = () => {\r\n *                 // Access any \"this\" instance property\r\n *                 if (_self.someProperty) {\r\n *                     ...\r\n *                 }\r\n *             }\r\n *             // This will define a function that will be converted to a prototype function\r\n *             _self.myFunction = () => {\r\n *                 // Access any \"this\" instance property\r\n *                 if (_self.someProperty) {\r\n *                     // Call the base version of the function that we are overriding\r\n *                     base.myFunction();\r\n *                 }\r\n *                 ...\r\n *             }\r\n *             _self.initialize = () => {\r\n *                 ...\r\n *             }\r\n *             // Warnings: While the following will work as _self is simply a reference to\r\n *             // this, if anyone overrides myFunction() the overridden will be called first\r\n *             // as the normal JavaScript method resolution will occur and the defined\r\n *             // _self.initialize() function is actually gets removed from the instance and\r\n *             // a proxy prototype version is created to reference the created method.\r\n *             _self.initialize();\r\n *         });\r\n *     }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n    // Make sure that the passed theClass argument looks correct\r\n    if (!_hasOwnProperty(theClass, Prototype)) {\r\n        _throwTypeError(\"theClass is an invalid class definition.\");\r\n    }\r\n    // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n    var classProto = theClass[Prototype];\r\n    if (!_checkPrototype(classProto, target)) {\r\n        _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n    }\r\n    var className = null;\r\n    if (_hasOwnProperty(classProto, DynClassName)) {\r\n        // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n        className = classProto[DynClassName];\r\n    }\r\n    else {\r\n        // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n        // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n        // function table lookup.\r\n        className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n        _gblInst.n++;\r\n        classProto[DynClassName] = className;\r\n    }\r\n    var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n    var useBaseInst = !!perfOptions[strUseBaseInst];\r\n    if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n        useBaseInst = !!options[strUseBaseInst];\r\n    }\r\n    // Get the current instance functions\r\n    var instFuncs = _getInstanceFuncs(target);\r\n    // Get all of the functions for any base instance (before they are potentially overridden)\r\n    var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n    // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n    // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n    delegateFunc(target, baseFuncs);\r\n    // Don't allow setting instance functions for older IE instances\r\n    var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n    if (setInstanceFunc && options) {\r\n        setInstanceFunc = !!options[strSetInstFuncs];\r\n    }\r\n    // Populate the Prototype for any overridden instance functions\r\n    _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\r\n//# sourceMappingURL=DynamicProto.js.map","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n  prefix: 'fas',\n  iconName: 'ad',\n  icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n  prefix: 'fas',\n  iconName: 'address-book',\n  icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n  prefix: 'fas',\n  iconName: 'address-card',\n  icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n  prefix: 'fas',\n  iconName: 'adjust',\n  icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n  prefix: 'fas',\n  iconName: 'air-freshener',\n  icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n  prefix: 'fas',\n  iconName: 'align-center',\n  icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n  prefix: 'fas',\n  iconName: 'align-justify',\n  icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n  prefix: 'fas',\n  iconName: 'align-left',\n  icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n  prefix: 'fas',\n  iconName: 'align-right',\n  icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n  prefix: 'fas',\n  iconName: 'allergies',\n  icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n  prefix: 'fas',\n  iconName: 'ambulance',\n  icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n  prefix: 'fas',\n  iconName: 'american-sign-language-interpreting',\n  icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n  prefix: 'fas',\n  iconName: 'anchor',\n  icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n  prefix: 'fas',\n  iconName: 'angle-double-down',\n  icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-double-left',\n  icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n  prefix: 'fas',\n  iconName: 'angle-double-right',\n  icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n  prefix: 'fas',\n  iconName: 'angle-double-up',\n  icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n  prefix: 'fas',\n  iconName: 'angle-down',\n  icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-left',\n  icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n  prefix: 'fas',\n  iconName: 'angle-right',\n  icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n  prefix: 'fas',\n  iconName: 'angle-up',\n  icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n  prefix: 'fas',\n  iconName: 'angry',\n  icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n  prefix: 'fas',\n  iconName: 'ankh',\n  icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n  prefix: 'fas',\n  iconName: 'apple-alt',\n  icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n  prefix: 'fas',\n  iconName: 'archive',\n  icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n  prefix: 'fas',\n  iconName: 'archway',\n  icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-down',\n  icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-left',\n  icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-right',\n  icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-up',\n  icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-down',\n  icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-left',\n  icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-right',\n  icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-up',\n  icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n  prefix: 'fas',\n  iconName: 'arrow-down',\n  icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-left',\n  icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n  prefix: 'fas',\n  iconName: 'arrow-right',\n  icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n  prefix: 'fas',\n  iconName: 'arrow-up',\n  icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'arrows-alt',\n  icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-h',\n  icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-v',\n  icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n  prefix: 'fas',\n  iconName: 'assistive-listening-systems',\n  icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n  prefix: 'fas',\n  iconName: 'asterisk',\n  icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n  prefix: 'fas',\n  iconName: 'at',\n  icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n  prefix: 'fas',\n  iconName: 'atlas',\n  icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n  prefix: 'fas',\n  iconName: 'atom',\n  icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n  prefix: 'fas',\n  iconName: 'audio-description',\n  icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n  prefix: 'fas',\n  iconName: 'award',\n  icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n  prefix: 'fas',\n  iconName: 'baby',\n  icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n  prefix: 'fas',\n  iconName: 'baby-carriage',\n  icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n  prefix: 'fas',\n  iconName: 'backspace',\n  icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n  prefix: 'fas',\n  iconName: 'backward',\n  icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n  prefix: 'fas',\n  iconName: 'bacon',\n  icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n  prefix: 'fas',\n  iconName: 'bacteria',\n  icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n  prefix: 'fas',\n  iconName: 'bacterium',\n  icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n  prefix: 'fas',\n  iconName: 'bahai',\n  icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n  prefix: 'fas',\n  iconName: 'balance-scale',\n  icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n  prefix: 'fas',\n  iconName: 'balance-scale-left',\n  icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n  prefix: 'fas',\n  iconName: 'balance-scale-right',\n  icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n  prefix: 'fas',\n  iconName: 'ban',\n  icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n  prefix: 'fas',\n  iconName: 'band-aid',\n  icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n  prefix: 'fas',\n  iconName: 'barcode',\n  icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n  prefix: 'fas',\n  iconName: 'bars',\n  icon: [448, 512, [], \"f0c9\", \"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};\nvar faBaseballBall = {\n  prefix: 'fas',\n  iconName: 'baseball-ball',\n  icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n  prefix: 'fas',\n  iconName: 'basketball-ball',\n  icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n  prefix: 'fas',\n  iconName: 'bath',\n  icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n  prefix: 'fas',\n  iconName: 'battery-empty',\n  icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n  prefix: 'fas',\n  iconName: 'battery-full',\n  icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n  prefix: 'fas',\n  iconName: 'battery-half',\n  icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n  prefix: 'fas',\n  iconName: 'battery-quarter',\n  icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'battery-three-quarters',\n  icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n  prefix: 'fas',\n  iconName: 'bed',\n  icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n  prefix: 'fas',\n  iconName: 'beer',\n  icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n  prefix: 'fas',\n  iconName: 'bell',\n  icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n  prefix: 'fas',\n  iconName: 'bell-slash',\n  icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n  prefix: 'fas',\n  iconName: 'bezier-curve',\n  icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n  prefix: 'fas',\n  iconName: 'bible',\n  icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n  prefix: 'fas',\n  iconName: 'bicycle',\n  icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n  prefix: 'fas',\n  iconName: 'biking',\n  icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n  prefix: 'fas',\n  iconName: 'binoculars',\n  icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n  prefix: 'fas',\n  iconName: 'biohazard',\n  icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n  prefix: 'fas',\n  iconName: 'birthday-cake',\n  icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n  prefix: 'fas',\n  iconName: 'blender',\n  icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n  prefix: 'fas',\n  iconName: 'blender-phone',\n  icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n  prefix: 'fas',\n  iconName: 'blind',\n  icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n  prefix: 'fas',\n  iconName: 'blog',\n  icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n  prefix: 'fas',\n  iconName: 'bold',\n  icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n  prefix: 'fas',\n  iconName: 'bolt',\n  icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n  prefix: 'fas',\n  iconName: 'bomb',\n  icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n  prefix: 'fas',\n  iconName: 'bone',\n  icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n  prefix: 'fas',\n  iconName: 'bong',\n  icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n  prefix: 'fas',\n  iconName: 'book',\n  icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n  prefix: 'fas',\n  iconName: 'book-dead',\n  icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n  prefix: 'fas',\n  iconName: 'book-medical',\n  icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n  prefix: 'fas',\n  iconName: 'book-open',\n  icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n  prefix: 'fas',\n  iconName: 'book-reader',\n  icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n  prefix: 'fas',\n  iconName: 'bookmark',\n  icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n  prefix: 'fas',\n  iconName: 'border-all',\n  icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n  prefix: 'fas',\n  iconName: 'border-none',\n  icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n  prefix: 'fas',\n  iconName: 'border-style',\n  icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n  prefix: 'fas',\n  iconName: 'bowling-ball',\n  icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n  prefix: 'fas',\n  iconName: 'box',\n  icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n  prefix: 'fas',\n  iconName: 'box-open',\n  icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n  prefix: 'fas',\n  iconName: 'box-tissue',\n  icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n  prefix: 'fas',\n  iconName: 'boxes',\n  icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n  prefix: 'fas',\n  iconName: 'braille',\n  icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n  prefix: 'fas',\n  iconName: 'brain',\n  icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n  prefix: 'fas',\n  iconName: 'bread-slice',\n  icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n  prefix: 'fas',\n  iconName: 'briefcase',\n  icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n  prefix: 'fas',\n  iconName: 'briefcase-medical',\n  icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n  prefix: 'fas',\n  iconName: 'broadcast-tower',\n  icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n  prefix: 'fas',\n  iconName: 'broom',\n  icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n  prefix: 'fas',\n  iconName: 'brush',\n  icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n  prefix: 'fas',\n  iconName: 'bug',\n  icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n  prefix: 'fas',\n  iconName: 'building',\n  icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n  prefix: 'fas',\n  iconName: 'bullhorn',\n  icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n  prefix: 'fas',\n  iconName: 'bullseye',\n  icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n  prefix: 'fas',\n  iconName: 'burn',\n  icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n  prefix: 'fas',\n  iconName: 'bus',\n  icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n  prefix: 'fas',\n  iconName: 'bus-alt',\n  icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n  prefix: 'fas',\n  iconName: 'business-time',\n  icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n  prefix: 'fas',\n  iconName: 'calculator',\n  icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n  prefix: 'fas',\n  iconName: 'calendar',\n  icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n  prefix: 'fas',\n  iconName: 'calendar-alt',\n  icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n  prefix: 'fas',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n  prefix: 'fas',\n  iconName: 'calendar-day',\n  icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n  prefix: 'fas',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n  prefix: 'fas',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n  prefix: 'fas',\n  iconName: 'calendar-times',\n  icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n  prefix: 'fas',\n  iconName: 'calendar-week',\n  icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n  prefix: 'fas',\n  iconName: 'camera',\n  icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n  prefix: 'fas',\n  iconName: 'camera-retro',\n  icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n  prefix: 'fas',\n  iconName: 'campground',\n  icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n  prefix: 'fas',\n  iconName: 'candy-cane',\n  icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n  prefix: 'fas',\n  iconName: 'cannabis',\n  icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n  prefix: 'fas',\n  iconName: 'capsules',\n  icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n  prefix: 'fas',\n  iconName: 'car',\n  icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n  prefix: 'fas',\n  iconName: 'car-alt',\n  icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n  prefix: 'fas',\n  iconName: 'car-battery',\n  icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n  prefix: 'fas',\n  iconName: 'car-crash',\n  icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n  prefix: 'fas',\n  iconName: 'car-side',\n  icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n  prefix: 'fas',\n  iconName: 'caravan',\n  icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n  prefix: 'fas',\n  iconName: 'caret-down',\n  icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n  prefix: 'fas',\n  iconName: 'caret-left',\n  icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n  prefix: 'fas',\n  iconName: 'caret-right',\n  icon: [192, 512, [], \"f0da\", \"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};\nvar faCaretSquareDown = {\n  prefix: 'fas',\n  iconName: 'caret-square-down',\n  icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n  prefix: 'fas',\n  iconName: 'caret-square-left',\n  icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n  prefix: 'fas',\n  iconName: 'caret-square-right',\n  icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n  prefix: 'fas',\n  iconName: 'caret-square-up',\n  icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n  prefix: 'fas',\n  iconName: 'caret-up',\n  icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n  prefix: 'fas',\n  iconName: 'carrot',\n  icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n  prefix: 'fas',\n  iconName: 'cart-arrow-down',\n  icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n  prefix: 'fas',\n  iconName: 'cart-plus',\n  icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n  prefix: 'fas',\n  iconName: 'cash-register',\n  icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n  prefix: 'fas',\n  iconName: 'cat',\n  icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n  prefix: 'fas',\n  iconName: 'certificate',\n  icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n  prefix: 'fas',\n  iconName: 'chair',\n  icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n  prefix: 'fas',\n  iconName: 'chalkboard',\n  icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n  prefix: 'fas',\n  iconName: 'chalkboard-teacher',\n  icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n  prefix: 'fas',\n  iconName: 'charging-station',\n  icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n  prefix: 'fas',\n  iconName: 'chart-area',\n  icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n  prefix: 'fas',\n  iconName: 'chart-bar',\n  icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n  prefix: 'fas',\n  iconName: 'chart-line',\n  icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n  prefix: 'fas',\n  iconName: 'chart-pie',\n  icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n  prefix: 'fas',\n  iconName: 'check',\n  icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n  prefix: 'fas',\n  iconName: 'check-circle',\n  icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n  prefix: 'fas',\n  iconName: 'check-double',\n  icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n  prefix: 'fas',\n  iconName: 'check-square',\n  icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n  prefix: 'fas',\n  iconName: 'cheese',\n  icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n  prefix: 'fas',\n  iconName: 'chess',\n  icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n  prefix: 'fas',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n  prefix: 'fas',\n  iconName: 'chess-board',\n  icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n  prefix: 'fas',\n  iconName: 'chess-king',\n  icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n  prefix: 'fas',\n  iconName: 'chess-knight',\n  icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n  prefix: 'fas',\n  iconName: 'chess-pawn',\n  icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n  prefix: 'fas',\n  iconName: 'chess-queen',\n  icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n  prefix: 'fas',\n  iconName: 'chess-rook',\n  icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-down',\n  icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-left',\n  icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-right',\n  icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-up',\n  icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n  prefix: 'fas',\n  iconName: 'chevron-down',\n  icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-left',\n  icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n  prefix: 'fas',\n  iconName: 'chevron-right',\n  icon: [320, 512, [], \"f054\", \"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};\nvar faChevronUp = {\n  prefix: 'fas',\n  iconName: 'chevron-up',\n  icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n  prefix: 'fas',\n  iconName: 'child',\n  icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n  prefix: 'fas',\n  iconName: 'church',\n  icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n  prefix: 'fas',\n  iconName: 'circle',\n  icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n  prefix: 'fas',\n  iconName: 'circle-notch',\n  icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n  prefix: 'fas',\n  iconName: 'city',\n  icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n  prefix: 'fas',\n  iconName: 'clinic-medical',\n  icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n  prefix: 'fas',\n  iconName: 'clipboard',\n  icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n  prefix: 'fas',\n  iconName: 'clipboard-check',\n  icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n  prefix: 'fas',\n  iconName: 'clipboard-list',\n  icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n  prefix: 'fas',\n  iconName: 'clock',\n  icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n  prefix: 'fas',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"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};\nvar faClosedCaptioning = {\n  prefix: 'fas',\n  iconName: 'closed-captioning',\n  icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n  prefix: 'fas',\n  iconName: 'cloud',\n  icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-download-alt',\n  icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n  prefix: 'fas',\n  iconName: 'cloud-meatball',\n  icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n  prefix: 'fas',\n  iconName: 'cloud-moon',\n  icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n  prefix: 'fas',\n  iconName: 'cloud-moon-rain',\n  icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n  prefix: 'fas',\n  iconName: 'cloud-rain',\n  icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-heavy',\n  icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n  prefix: 'fas',\n  iconName: 'cloud-sun',\n  icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n  prefix: 'fas',\n  iconName: 'cloud-sun-rain',\n  icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-upload-alt',\n  icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n  prefix: 'fas',\n  iconName: 'cocktail',\n  icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n  prefix: 'fas',\n  iconName: 'code',\n  icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n  prefix: 'fas',\n  iconName: 'code-branch',\n  icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n  prefix: 'fas',\n  iconName: 'coffee',\n  icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n  prefix: 'fas',\n  iconName: 'cog',\n  icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n  prefix: 'fas',\n  iconName: 'cogs',\n  icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n  prefix: 'fas',\n  iconName: 'coins',\n  icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n  prefix: 'fas',\n  iconName: 'columns',\n  icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n  prefix: 'fas',\n  iconName: 'comment',\n  icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n  prefix: 'fas',\n  iconName: 'comment-alt',\n  icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n  prefix: 'fas',\n  iconName: 'comment-dollar',\n  icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n  prefix: 'fas',\n  iconName: 'comment-dots',\n  icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n  prefix: 'fas',\n  iconName: 'comment-medical',\n  icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n  prefix: 'fas',\n  iconName: 'comment-slash',\n  icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n  prefix: 'fas',\n  iconName: 'comments',\n  icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n  prefix: 'fas',\n  iconName: 'comments-dollar',\n  icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n  prefix: 'fas',\n  iconName: 'compact-disc',\n  icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n  prefix: 'fas',\n  iconName: 'compass',\n  icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n  prefix: 'fas',\n  iconName: 'compress',\n  icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n  prefix: 'fas',\n  iconName: 'compress-alt',\n  icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'compress-arrows-alt',\n  icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n  prefix: 'fas',\n  iconName: 'concierge-bell',\n  icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n  prefix: 'fas',\n  iconName: 'cookie',\n  icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n  prefix: 'fas',\n  iconName: 'cookie-bite',\n  icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n  prefix: 'fas',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n  prefix: 'fas',\n  iconName: 'copyright',\n  icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n  prefix: 'fas',\n  iconName: 'couch',\n  icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n  prefix: 'fas',\n  iconName: 'credit-card',\n  icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n  prefix: 'fas',\n  iconName: 'crop',\n  icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n  prefix: 'fas',\n  iconName: 'crop-alt',\n  icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n  prefix: 'fas',\n  iconName: 'cross',\n  icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n  prefix: 'fas',\n  iconName: 'crosshairs',\n  icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n  prefix: 'fas',\n  iconName: 'crow',\n  icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n  prefix: 'fas',\n  iconName: 'crown',\n  icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n  prefix: 'fas',\n  iconName: 'crutch',\n  icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n  prefix: 'fas',\n  iconName: 'cube',\n  icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n  prefix: 'fas',\n  iconName: 'cubes',\n  icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n  prefix: 'fas',\n  iconName: 'cut',\n  icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n  prefix: 'fas',\n  iconName: 'database',\n  icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n  prefix: 'fas',\n  iconName: 'deaf',\n  icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n  prefix: 'fas',\n  iconName: 'democrat',\n  icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n  prefix: 'fas',\n  iconName: 'desktop',\n  icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n  prefix: 'fas',\n  iconName: 'dharmachakra',\n  icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n  prefix: 'fas',\n  iconName: 'diagnoses',\n  icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n  prefix: 'fas',\n  iconName: 'dice',\n  icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n  prefix: 'fas',\n  iconName: 'dice-d20',\n  icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n  prefix: 'fas',\n  iconName: 'dice-d6',\n  icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n  prefix: 'fas',\n  iconName: 'dice-five',\n  icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n  prefix: 'fas',\n  iconName: 'dice-four',\n  icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n  prefix: 'fas',\n  iconName: 'dice-one',\n  icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n  prefix: 'fas',\n  iconName: 'dice-six',\n  icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n  prefix: 'fas',\n  iconName: 'dice-three',\n  icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n  prefix: 'fas',\n  iconName: 'dice-two',\n  icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n  prefix: 'fas',\n  iconName: 'digital-tachograph',\n  icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n  prefix: 'fas',\n  iconName: 'directions',\n  icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n  prefix: 'fas',\n  iconName: 'disease',\n  icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n  prefix: 'fas',\n  iconName: 'divide',\n  icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n  prefix: 'fas',\n  iconName: 'dizzy',\n  icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n  prefix: 'fas',\n  iconName: 'dna',\n  icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n  prefix: 'fas',\n  iconName: 'dog',\n  icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n  prefix: 'fas',\n  iconName: 'dollar-sign',\n  icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n  prefix: 'fas',\n  iconName: 'dolly',\n  icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n  prefix: 'fas',\n  iconName: 'dolly-flatbed',\n  icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n  prefix: 'fas',\n  iconName: 'donate',\n  icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n  prefix: 'fas',\n  iconName: 'door-closed',\n  icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n  prefix: 'fas',\n  iconName: 'door-open',\n  icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n  prefix: 'fas',\n  iconName: 'dot-circle',\n  icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n  prefix: 'fas',\n  iconName: 'dove',\n  icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n  prefix: 'fas',\n  iconName: 'download',\n  icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n  prefix: 'fas',\n  iconName: 'drafting-compass',\n  icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n  prefix: 'fas',\n  iconName: 'dragon',\n  icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n  prefix: 'fas',\n  iconName: 'draw-polygon',\n  icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n  prefix: 'fas',\n  iconName: 'drum',\n  icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n  prefix: 'fas',\n  iconName: 'drum-steelpan',\n  icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n  prefix: 'fas',\n  iconName: 'drumstick-bite',\n  icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n  prefix: 'fas',\n  iconName: 'dumbbell',\n  icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n  prefix: 'fas',\n  iconName: 'dumpster',\n  icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n  prefix: 'fas',\n  iconName: 'dumpster-fire',\n  icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n  prefix: 'fas',\n  iconName: 'dungeon',\n  icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n  prefix: 'fas',\n  iconName: 'edit',\n  icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n  prefix: 'fas',\n  iconName: 'egg',\n  icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n  prefix: 'fas',\n  iconName: 'eject',\n  icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n  prefix: 'fas',\n  iconName: 'ellipsis-h',\n  icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n  prefix: 'fas',\n  iconName: 'ellipsis-v',\n  icon: [192, 512, [], \"f142\", \"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};\nvar faEnvelope = {\n  prefix: 'fas',\n  iconName: 'envelope',\n  icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n  prefix: 'fas',\n  iconName: 'envelope-open',\n  icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n  prefix: 'fas',\n  iconName: 'envelope-open-text',\n  icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n  prefix: 'fas',\n  iconName: 'envelope-square',\n  icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n  prefix: 'fas',\n  iconName: 'equals',\n  icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n  prefix: 'fas',\n  iconName: 'eraser',\n  icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n  prefix: 'fas',\n  iconName: 'ethernet',\n  icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n  prefix: 'fas',\n  iconName: 'euro-sign',\n  icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n  prefix: 'fas',\n  iconName: 'exchange-alt',\n  icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n  prefix: 'fas',\n  iconName: 'exclamation',\n  icon: [192, 512, [], \"f12a\", \"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};\nvar faExclamationCircle = {\n  prefix: 'fas',\n  iconName: 'exclamation-circle',\n  icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-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};\nvar faExclamationTriangle = {\n  prefix: 'fas',\n  iconName: 'exclamation-triangle',\n  icon: [576, 512, [], \"f071\", \"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};\nvar faExpand = {\n  prefix: 'fas',\n  iconName: 'expand',\n  icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n  prefix: 'fas',\n  iconName: 'expand-alt',\n  icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'expand-arrows-alt',\n  icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-alt',\n  icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-square-alt',\n  icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n  prefix: 'fas',\n  iconName: 'eye',\n  icon: [576, 512, [], \"f06e\", \"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 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 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 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n  prefix: 'fas',\n  iconName: 'eye-dropper',\n  icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n  prefix: 'fas',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"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 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 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 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 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 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 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 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n  prefix: 'fas',\n  iconName: 'fan',\n  icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n  prefix: 'fas',\n  iconName: 'fast-backward',\n  icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n  prefix: 'fas',\n  iconName: 'fast-forward',\n  icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n  prefix: 'fas',\n  iconName: 'faucet',\n  icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n  prefix: 'fas',\n  iconName: 'fax',\n  icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n  prefix: 'fas',\n  iconName: 'feather',\n  icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n  prefix: 'fas',\n  iconName: 'feather-alt',\n  icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n  prefix: 'fas',\n  iconName: 'female',\n  icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n  prefix: 'fas',\n  iconName: 'fighter-jet',\n  icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n  prefix: 'fas',\n  iconName: 'file',\n  icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n  prefix: 'fas',\n  iconName: 'file-alt',\n  icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n  prefix: 'fas',\n  iconName: 'file-archive',\n  icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n  prefix: 'fas',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n  prefix: 'fas',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n  prefix: 'fas',\n  iconName: 'file-contract',\n  icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n  prefix: 'fas',\n  iconName: 'file-csv',\n  icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n  prefix: 'fas',\n  iconName: 'file-download',\n  icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n  prefix: 'fas',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n  prefix: 'fas',\n  iconName: 'file-export',\n  icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n  prefix: 'fas',\n  iconName: 'file-image',\n  icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n  prefix: 'fas',\n  iconName: 'file-import',\n  icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n  prefix: 'fas',\n  iconName: 'file-invoice',\n  icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n  prefix: 'fas',\n  iconName: 'file-invoice-dollar',\n  icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n  prefix: 'fas',\n  iconName: 'file-medical',\n  icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n  prefix: 'fas',\n  iconName: 'file-medical-alt',\n  icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n  prefix: 'fas',\n  iconName: 'file-pdf',\n  icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n  prefix: 'fas',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n  prefix: 'fas',\n  iconName: 'file-prescription',\n  icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n  prefix: 'fas',\n  iconName: 'file-signature',\n  icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n  prefix: 'fas',\n  iconName: 'file-upload',\n  icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n  prefix: 'fas',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n  prefix: 'fas',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n  prefix: 'fas',\n  iconName: 'fill',\n  icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n  prefix: 'fas',\n  iconName: 'fill-drip',\n  icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n  prefix: 'fas',\n  iconName: 'film',\n  icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n  prefix: 'fas',\n  iconName: 'filter',\n  icon: [512, 512, [], \"f0b0\", \"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};\nvar faFingerprint = {\n  prefix: 'fas',\n  iconName: 'fingerprint',\n  icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n  prefix: 'fas',\n  iconName: 'fire',\n  icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n  prefix: 'fas',\n  iconName: 'fire-alt',\n  icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n  prefix: 'fas',\n  iconName: 'fire-extinguisher',\n  icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n  prefix: 'fas',\n  iconName: 'first-aid',\n  icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n  prefix: 'fas',\n  iconName: 'fish',\n  icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n  prefix: 'fas',\n  iconName: 'fist-raised',\n  icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n  prefix: 'fas',\n  iconName: 'flag',\n  icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n  prefix: 'fas',\n  iconName: 'flag-checkered',\n  icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n  prefix: 'fas',\n  iconName: 'flag-usa',\n  icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n  prefix: 'fas',\n  iconName: 'flask',\n  icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n  prefix: 'fas',\n  iconName: 'flushed',\n  icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n  prefix: 'fas',\n  iconName: 'folder',\n  icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n  prefix: 'fas',\n  iconName: 'folder-minus',\n  icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n  prefix: 'fas',\n  iconName: 'folder-open',\n  icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n  prefix: 'fas',\n  iconName: 'folder-plus',\n  icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n  prefix: 'fas',\n  iconName: 'font',\n  icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n  prefix: 'fas',\n  iconName: 'font-awesome-logo-full',\n  icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n  prefix: 'fas',\n  iconName: 'football-ball',\n  icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n  prefix: 'fas',\n  iconName: 'forward',\n  icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n  prefix: 'fas',\n  iconName: 'frog',\n  icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n  prefix: 'fas',\n  iconName: 'frown',\n  icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n  prefix: 'fas',\n  iconName: 'frown-open',\n  icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n  prefix: 'fas',\n  iconName: 'funnel-dollar',\n  icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n  prefix: 'fas',\n  iconName: 'futbol',\n  icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n  prefix: 'fas',\n  iconName: 'gamepad',\n  icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n  prefix: 'fas',\n  iconName: 'gas-pump',\n  icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n  prefix: 'fas',\n  iconName: 'gavel',\n  icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n  prefix: 'fas',\n  iconName: 'gem',\n  icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n  prefix: 'fas',\n  iconName: 'genderless',\n  icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n  prefix: 'fas',\n  iconName: 'ghost',\n  icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n  prefix: 'fas',\n  iconName: 'gift',\n  icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n  prefix: 'fas',\n  iconName: 'gifts',\n  icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n  prefix: 'fas',\n  iconName: 'glass-cheers',\n  icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n  prefix: 'fas',\n  iconName: 'glass-martini',\n  icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n  prefix: 'fas',\n  iconName: 'glass-martini-alt',\n  icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n  prefix: 'fas',\n  iconName: 'glass-whiskey',\n  icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n  prefix: 'fas',\n  iconName: 'glasses',\n  icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n  prefix: 'fas',\n  iconName: 'globe',\n  icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n  prefix: 'fas',\n  iconName: 'globe-africa',\n  icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n  prefix: 'fas',\n  iconName: 'globe-americas',\n  icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n  prefix: 'fas',\n  iconName: 'globe-asia',\n  icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n  prefix: 'fas',\n  iconName: 'globe-europe',\n  icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n  prefix: 'fas',\n  iconName: 'golf-ball',\n  icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n  prefix: 'fas',\n  iconName: 'gopuram',\n  icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n  prefix: 'fas',\n  iconName: 'graduation-cap',\n  icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n  prefix: 'fas',\n  iconName: 'greater-than',\n  icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n  prefix: 'fas',\n  iconName: 'greater-than-equal',\n  icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n  prefix: 'fas',\n  iconName: 'grimace',\n  icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n  prefix: 'fas',\n  iconName: 'grin',\n  icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n  prefix: 'fas',\n  iconName: 'grin-alt',\n  icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n  prefix: 'fas',\n  iconName: 'grin-beam',\n  icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n  prefix: 'fas',\n  iconName: 'grin-beam-sweat',\n  icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n  prefix: 'fas',\n  iconName: 'grin-hearts',\n  icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n  prefix: 'fas',\n  iconName: 'grin-squint',\n  icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n  prefix: 'fas',\n  iconName: 'grin-squint-tears',\n  icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n  prefix: 'fas',\n  iconName: 'grin-stars',\n  icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n  prefix: 'fas',\n  iconName: 'grin-tears',\n  icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n  prefix: 'fas',\n  iconName: 'grin-tongue',\n  icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-squint',\n  icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-wink',\n  icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n  prefix: 'fas',\n  iconName: 'grin-wink',\n  icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n  prefix: 'fas',\n  iconName: 'grip-horizontal',\n  icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n  prefix: 'fas',\n  iconName: 'grip-lines',\n  icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n  prefix: 'fas',\n  iconName: 'grip-lines-vertical',\n  icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n  prefix: 'fas',\n  iconName: 'grip-vertical',\n  icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n  prefix: 'fas',\n  iconName: 'guitar',\n  icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n  prefix: 'fas',\n  iconName: 'h-square',\n  icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n  prefix: 'fas',\n  iconName: 'hamburger',\n  icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n  prefix: 'fas',\n  iconName: 'hammer',\n  icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n  prefix: 'fas',\n  iconName: 'hamsa',\n  icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n  prefix: 'fas',\n  iconName: 'hand-holding',\n  icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n  prefix: 'fas',\n  iconName: 'hand-holding-heart',\n  icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n  prefix: 'fas',\n  iconName: 'hand-holding-medical',\n  icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n  prefix: 'fas',\n  iconName: 'hand-holding-usd',\n  icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n  prefix: 'fas',\n  iconName: 'hand-holding-water',\n  icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n  prefix: 'fas',\n  iconName: 'hand-lizard',\n  icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n  prefix: 'fas',\n  iconName: 'hand-middle-finger',\n  icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n  prefix: 'fas',\n  iconName: 'hand-paper',\n  icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n  prefix: 'fas',\n  iconName: 'hand-peace',\n  icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n  prefix: 'fas',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n  prefix: 'fas',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n  prefix: 'fas',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n  prefix: 'fas',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n  prefix: 'fas',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n  prefix: 'fas',\n  iconName: 'hand-rock',\n  icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n  prefix: 'fas',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n  prefix: 'fas',\n  iconName: 'hand-sparkles',\n  icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n  prefix: 'fas',\n  iconName: 'hand-spock',\n  icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n  prefix: 'fas',\n  iconName: 'hands',\n  icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n  prefix: 'fas',\n  iconName: 'hands-helping',\n  icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n  prefix: 'fas',\n  iconName: 'hands-wash',\n  icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n  prefix: 'fas',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-alt-slash',\n  icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-slash',\n  icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n  prefix: 'fas',\n  iconName: 'hanukiah',\n  icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n  prefix: 'fas',\n  iconName: 'hard-hat',\n  icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n  prefix: 'fas',\n  iconName: 'hashtag',\n  icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy',\n  icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy-side',\n  icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n  prefix: 'fas',\n  iconName: 'hat-wizard',\n  icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n  prefix: 'fas',\n  iconName: 'hdd',\n  icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n  prefix: 'fas',\n  iconName: 'head-side-cough',\n  icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n  prefix: 'fas',\n  iconName: 'head-side-cough-slash',\n  icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n  prefix: 'fas',\n  iconName: 'head-side-mask',\n  icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n  prefix: 'fas',\n  iconName: 'head-side-virus',\n  icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n  prefix: 'fas',\n  iconName: 'heading',\n  icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n  prefix: 'fas',\n  iconName: 'headphones',\n  icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n  prefix: 'fas',\n  iconName: 'headphones-alt',\n  icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n  prefix: 'fas',\n  iconName: 'headset',\n  icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n  prefix: 'fas',\n  iconName: 'heart',\n  icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n  prefix: 'fas',\n  iconName: 'heart-broken',\n  icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n  prefix: 'fas',\n  iconName: 'heartbeat',\n  icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n  prefix: 'fas',\n  iconName: 'helicopter',\n  icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n  prefix: 'fas',\n  iconName: 'highlighter',\n  icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n  prefix: 'fas',\n  iconName: 'hiking',\n  icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n  prefix: 'fas',\n  iconName: 'hippo',\n  icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n  prefix: 'fas',\n  iconName: 'history',\n  icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n  prefix: 'fas',\n  iconName: 'hockey-puck',\n  icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n  prefix: 'fas',\n  iconName: 'holly-berry',\n  icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n  prefix: 'fas',\n  iconName: 'home',\n  icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n  prefix: 'fas',\n  iconName: 'hospital',\n  icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n  prefix: 'fas',\n  iconName: 'hospital-alt',\n  icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n  prefix: 'fas',\n  iconName: 'hospital-symbol',\n  icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n  prefix: 'fas',\n  iconName: 'hospital-user',\n  icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n  prefix: 'fas',\n  iconName: 'hot-tub',\n  icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n  prefix: 'fas',\n  iconName: 'hotdog',\n  icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n  prefix: 'fas',\n  iconName: 'hotel',\n  icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n  prefix: 'fas',\n  iconName: 'hourglass',\n  icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n  prefix: 'fas',\n  iconName: 'hourglass-end',\n  icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n  prefix: 'fas',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n  prefix: 'fas',\n  iconName: 'hourglass-start',\n  icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n  prefix: 'fas',\n  iconName: 'house-damage',\n  icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n  prefix: 'fas',\n  iconName: 'house-user',\n  icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n  prefix: 'fas',\n  iconName: 'hryvnia',\n  icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n  prefix: 'fas',\n  iconName: 'i-cursor',\n  icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n  prefix: 'fas',\n  iconName: 'ice-cream',\n  icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n  prefix: 'fas',\n  iconName: 'icicles',\n  icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n  prefix: 'fas',\n  iconName: 'icons',\n  icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n  prefix: 'fas',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n  prefix: 'fas',\n  iconName: 'id-card',\n  icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n  prefix: 'fas',\n  iconName: 'id-card-alt',\n  icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n  prefix: 'fas',\n  iconName: 'igloo',\n  icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n  prefix: 'fas',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n  prefix: 'fas',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n  prefix: 'fas',\n  iconName: 'inbox',\n  icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n  prefix: 'fas',\n  iconName: 'indent',\n  icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n  prefix: 'fas',\n  iconName: 'industry',\n  icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n  prefix: 'fas',\n  iconName: 'infinity',\n  icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n  prefix: 'fas',\n  iconName: 'info',\n  icon: [192, 512, [], \"f129\", \"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};\nvar faInfoCircle = {\n  prefix: 'fas',\n  iconName: 'info-circle',\n  icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n  prefix: 'fas',\n  iconName: 'italic',\n  icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n  prefix: 'fas',\n  iconName: 'jedi',\n  icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n  prefix: 'fas',\n  iconName: 'joint',\n  icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n  prefix: 'fas',\n  iconName: 'journal-whills',\n  icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n  prefix: 'fas',\n  iconName: 'kaaba',\n  icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n  prefix: 'fas',\n  iconName: 'key',\n  icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n  prefix: 'fas',\n  iconName: 'keyboard',\n  icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n  prefix: 'fas',\n  iconName: 'khanda',\n  icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n  prefix: 'fas',\n  iconName: 'kiss',\n  icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n  prefix: 'fas',\n  iconName: 'kiss-beam',\n  icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n  prefix: 'fas',\n  iconName: 'kiss-wink-heart',\n  icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n  prefix: 'fas',\n  iconName: 'kiwi-bird',\n  icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n  prefix: 'fas',\n  iconName: 'landmark',\n  icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n  prefix: 'fas',\n  iconName: 'language',\n  icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n  prefix: 'fas',\n  iconName: 'laptop',\n  icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n  prefix: 'fas',\n  iconName: 'laptop-code',\n  icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n  prefix: 'fas',\n  iconName: 'laptop-house',\n  icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n  prefix: 'fas',\n  iconName: 'laptop-medical',\n  icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n  prefix: 'fas',\n  iconName: 'laugh',\n  icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n  prefix: 'fas',\n  iconName: 'laugh-beam',\n  icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n  prefix: 'fas',\n  iconName: 'laugh-squint',\n  icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n  prefix: 'fas',\n  iconName: 'laugh-wink',\n  icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n  prefix: 'fas',\n  iconName: 'layer-group',\n  icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n  prefix: 'fas',\n  iconName: 'leaf',\n  icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n  prefix: 'fas',\n  iconName: 'lemon',\n  icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n  prefix: 'fas',\n  iconName: 'less-than',\n  icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n  prefix: 'fas',\n  iconName: 'less-than-equal',\n  icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n  prefix: 'fas',\n  iconName: 'level-down-alt',\n  icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n  prefix: 'fas',\n  iconName: 'level-up-alt',\n  icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n  prefix: 'fas',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n  prefix: 'fas',\n  iconName: 'lightbulb',\n  icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n  prefix: 'fas',\n  iconName: 'link',\n  icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n  prefix: 'fas',\n  iconName: 'lira-sign',\n  icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n  prefix: 'fas',\n  iconName: 'list',\n  icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n  prefix: 'fas',\n  iconName: 'list-alt',\n  icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n  prefix: 'fas',\n  iconName: 'list-ol',\n  icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n  prefix: 'fas',\n  iconName: 'list-ul',\n  icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n  prefix: 'fas',\n  iconName: 'location-arrow',\n  icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n  prefix: 'fas',\n  iconName: 'lock',\n  icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n  prefix: 'fas',\n  iconName: 'lock-open',\n  icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-down',\n  icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-left',\n  icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-right',\n  icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-up',\n  icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n  prefix: 'fas',\n  iconName: 'low-vision',\n  icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n  prefix: 'fas',\n  iconName: 'luggage-cart',\n  icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n  prefix: 'fas',\n  iconName: 'lungs',\n  icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n  prefix: 'fas',\n  iconName: 'lungs-virus',\n  icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n  prefix: 'fas',\n  iconName: 'magic',\n  icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n  prefix: 'fas',\n  iconName: 'magnet',\n  icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n  prefix: 'fas',\n  iconName: 'mail-bulk',\n  icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n  prefix: 'fas',\n  iconName: 'male',\n  icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n  prefix: 'fas',\n  iconName: 'map',\n  icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n  prefix: 'fas',\n  iconName: 'map-marked',\n  icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n  prefix: 'fas',\n  iconName: 'map-marked-alt',\n  icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n  prefix: 'fas',\n  iconName: 'map-marker',\n  icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n  prefix: 'fas',\n  iconName: 'map-marker-alt',\n  icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n  prefix: 'fas',\n  iconName: 'map-pin',\n  icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n  prefix: 'fas',\n  iconName: 'map-signs',\n  icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n  prefix: 'fas',\n  iconName: 'marker',\n  icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n  prefix: 'fas',\n  iconName: 'mars',\n  icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n  prefix: 'fas',\n  iconName: 'mars-double',\n  icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n  prefix: 'fas',\n  iconName: 'mars-stroke',\n  icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-h',\n  icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-v',\n  icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n  prefix: 'fas',\n  iconName: 'mask',\n  icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n  prefix: 'fas',\n  iconName: 'medal',\n  icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n  prefix: 'fas',\n  iconName: 'medkit',\n  icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n  prefix: 'fas',\n  iconName: 'meh',\n  icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n  prefix: 'fas',\n  iconName: 'meh-blank',\n  icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n  prefix: 'fas',\n  iconName: 'meh-rolling-eyes',\n  icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n  prefix: 'fas',\n  iconName: 'memory',\n  icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n  prefix: 'fas',\n  iconName: 'menorah',\n  icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n  prefix: 'fas',\n  iconName: 'mercury',\n  icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n  prefix: 'fas',\n  iconName: 'meteor',\n  icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n  prefix: 'fas',\n  iconName: 'microchip',\n  icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n  prefix: 'fas',\n  iconName: 'microphone',\n  icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n  prefix: 'fas',\n  iconName: 'microphone-alt',\n  icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-alt-slash',\n  icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-slash',\n  icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n  prefix: 'fas',\n  iconName: 'microscope',\n  icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n  prefix: 'fas',\n  iconName: 'minus',\n  icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n  prefix: 'fas',\n  iconName: 'minus-circle',\n  icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n  prefix: 'fas',\n  iconName: 'minus-square',\n  icon: [448, 512, [], \"f146\", \"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-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n  prefix: 'fas',\n  iconName: 'mitten',\n  icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n  prefix: 'fas',\n  iconName: 'mobile',\n  icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n  prefix: 'fas',\n  iconName: 'mobile-alt',\n  icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n  prefix: 'fas',\n  iconName: 'money-bill',\n  icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-alt',\n  icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave',\n  icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave-alt',\n  icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n  prefix: 'fas',\n  iconName: 'money-check',\n  icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n  prefix: 'fas',\n  iconName: 'money-check-alt',\n  icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n  prefix: 'fas',\n  iconName: 'monument',\n  icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n  prefix: 'fas',\n  iconName: 'moon',\n  icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n  prefix: 'fas',\n  iconName: 'mortar-pestle',\n  icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n  prefix: 'fas',\n  iconName: 'mosque',\n  icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n  prefix: 'fas',\n  iconName: 'motorcycle',\n  icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n  prefix: 'fas',\n  iconName: 'mountain',\n  icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n  prefix: 'fas',\n  iconName: 'mouse',\n  icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n  prefix: 'fas',\n  iconName: 'mouse-pointer',\n  icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n  prefix: 'fas',\n  iconName: 'mug-hot',\n  icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n  prefix: 'fas',\n  iconName: 'music',\n  icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n  prefix: 'fas',\n  iconName: 'network-wired',\n  icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n  prefix: 'fas',\n  iconName: 'neuter',\n  icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n  prefix: 'fas',\n  iconName: 'newspaper',\n  icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n  prefix: 'fas',\n  iconName: 'not-equal',\n  icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n  prefix: 'fas',\n  iconName: 'notes-medical',\n  icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n  prefix: 'fas',\n  iconName: 'object-group',\n  icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n  prefix: 'fas',\n  iconName: 'object-ungroup',\n  icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n  prefix: 'fas',\n  iconName: 'oil-can',\n  icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n  prefix: 'fas',\n  iconName: 'om',\n  icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n  prefix: 'fas',\n  iconName: 'otter',\n  icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n  prefix: 'fas',\n  iconName: 'outdent',\n  icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n  prefix: 'fas',\n  iconName: 'pager',\n  icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n  prefix: 'fas',\n  iconName: 'paint-brush',\n  icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n  prefix: 'fas',\n  iconName: 'paint-roller',\n  icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n  prefix: 'fas',\n  iconName: 'palette',\n  icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n  prefix: 'fas',\n  iconName: 'pallet',\n  icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n  prefix: 'fas',\n  iconName: 'paper-plane',\n  icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n  prefix: 'fas',\n  iconName: 'paperclip',\n  icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n  prefix: 'fas',\n  iconName: 'parachute-box',\n  icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n  prefix: 'fas',\n  iconName: 'paragraph',\n  icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n  prefix: 'fas',\n  iconName: 'parking',\n  icon: [448, 512, [], \"f540\", \"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-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n  prefix: 'fas',\n  iconName: 'passport',\n  icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n  prefix: 'fas',\n  iconName: 'pastafarianism',\n  icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n  prefix: 'fas',\n  iconName: 'paste',\n  icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n  prefix: 'fas',\n  iconName: 'pause',\n  icon: [448, 512, [], \"f04c\", \"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};\nvar faPauseCircle = {\n  prefix: 'fas',\n  iconName: 'pause-circle',\n  icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n  prefix: 'fas',\n  iconName: 'paw',\n  icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n  prefix: 'fas',\n  iconName: 'peace',\n  icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n  prefix: 'fas',\n  iconName: 'pen',\n  icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n  prefix: 'fas',\n  iconName: 'pen-alt',\n  icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n  prefix: 'fas',\n  iconName: 'pen-fancy',\n  icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n  prefix: 'fas',\n  iconName: 'pen-nib',\n  icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n  prefix: 'fas',\n  iconName: 'pen-square',\n  icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n  prefix: 'fas',\n  iconName: 'pencil-alt',\n  icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n  prefix: 'fas',\n  iconName: 'pencil-ruler',\n  icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n  prefix: 'fas',\n  iconName: 'people-arrows',\n  icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n  prefix: 'fas',\n  iconName: 'people-carry',\n  icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n  prefix: 'fas',\n  iconName: 'pepper-hot',\n  icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n  prefix: 'fas',\n  iconName: 'percent',\n  icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n  prefix: 'fas',\n  iconName: 'percentage',\n  icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n  prefix: 'fas',\n  iconName: 'person-booth',\n  icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n  prefix: 'fas',\n  iconName: 'phone',\n  icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n  prefix: 'fas',\n  iconName: 'phone-alt',\n  icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n  prefix: 'fas',\n  iconName: 'phone-slash',\n  icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n  prefix: 'fas',\n  iconName: 'phone-square',\n  icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n  prefix: 'fas',\n  iconName: 'phone-square-alt',\n  icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n  prefix: 'fas',\n  iconName: 'phone-volume',\n  icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n  prefix: 'fas',\n  iconName: 'photo-video',\n  icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n  prefix: 'fas',\n  iconName: 'piggy-bank',\n  icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n  prefix: 'fas',\n  iconName: 'pills',\n  icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n  prefix: 'fas',\n  iconName: 'pizza-slice',\n  icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n  prefix: 'fas',\n  iconName: 'place-of-worship',\n  icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n  prefix: 'fas',\n  iconName: 'plane',\n  icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n  prefix: 'fas',\n  iconName: 'plane-arrival',\n  icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n  prefix: 'fas',\n  iconName: 'plane-departure',\n  icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n  prefix: 'fas',\n  iconName: 'plane-slash',\n  icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n  prefix: 'fas',\n  iconName: 'play',\n  icon: [448, 512, [], \"f04b\", \"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};\nvar faPlayCircle = {\n  prefix: 'fas',\n  iconName: 'play-circle',\n  icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n  prefix: 'fas',\n  iconName: 'plug',\n  icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n  prefix: 'fas',\n  iconName: 'plus',\n  icon: [448, 512, [], \"f067\", \"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};\nvar faPlusCircle = {\n  prefix: 'fas',\n  iconName: 'plus-circle',\n  icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n  prefix: 'fas',\n  iconName: 'plus-square',\n  icon: [448, 512, [], \"f0fe\", \"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-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n  prefix: 'fas',\n  iconName: 'podcast',\n  icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n  prefix: 'fas',\n  iconName: 'poll',\n  icon: [448, 512, [], \"f681\", \"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-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n  prefix: 'fas',\n  iconName: 'poll-h',\n  icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n  prefix: 'fas',\n  iconName: 'poo',\n  icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n  prefix: 'fas',\n  iconName: 'poo-storm',\n  icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n  prefix: 'fas',\n  iconName: 'poop',\n  icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n  prefix: 'fas',\n  iconName: 'portrait',\n  icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n  prefix: 'fas',\n  iconName: 'pound-sign',\n  icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n  prefix: 'fas',\n  iconName: 'power-off',\n  icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n  prefix: 'fas',\n  iconName: 'pray',\n  icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n  prefix: 'fas',\n  iconName: 'praying-hands',\n  icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n  prefix: 'fas',\n  iconName: 'prescription',\n  icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle',\n  icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle-alt',\n  icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n  prefix: 'fas',\n  iconName: 'print',\n  icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n  prefix: 'fas',\n  iconName: 'procedures',\n  icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n  prefix: 'fas',\n  iconName: 'project-diagram',\n  icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n  prefix: 'fas',\n  iconName: 'pump-medical',\n  icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n  prefix: 'fas',\n  iconName: 'pump-soap',\n  icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n  prefix: 'fas',\n  iconName: 'puzzle-piece',\n  icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n  prefix: 'fas',\n  iconName: 'qrcode',\n  icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n  prefix: 'fas',\n  iconName: 'question',\n  icon: [384, 512, [], \"f128\", \"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};\nvar faQuestionCircle = {\n  prefix: 'fas',\n  iconName: 'question-circle',\n  icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n  prefix: 'fas',\n  iconName: 'quidditch',\n  icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'quote-left',\n  icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n  prefix: 'fas',\n  iconName: 'quote-right',\n  icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n  prefix: 'fas',\n  iconName: 'quran',\n  icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n  prefix: 'fas',\n  iconName: 'radiation',\n  icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n  prefix: 'fas',\n  iconName: 'radiation-alt',\n  icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n  prefix: 'fas',\n  iconName: 'rainbow',\n  icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n  prefix: 'fas',\n  iconName: 'random',\n  icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n  prefix: 'fas',\n  iconName: 'receipt',\n  icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n  prefix: 'fas',\n  iconName: 'record-vinyl',\n  icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n  prefix: 'fas',\n  iconName: 'recycle',\n  icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n  prefix: 'fas',\n  iconName: 'redo',\n  icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n  prefix: 'fas',\n  iconName: 'redo-alt',\n  icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n  prefix: 'fas',\n  iconName: 'registered',\n  icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n  prefix: 'fas',\n  iconName: 'remove-format',\n  icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n  prefix: 'fas',\n  iconName: 'reply',\n  icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n  prefix: 'fas',\n  iconName: 'reply-all',\n  icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n  prefix: 'fas',\n  iconName: 'republican',\n  icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n  prefix: 'fas',\n  iconName: 'restroom',\n  icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n  prefix: 'fas',\n  iconName: 'retweet',\n  icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n  prefix: 'fas',\n  iconName: 'ribbon',\n  icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n  prefix: 'fas',\n  iconName: 'ring',\n  icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n  prefix: 'fas',\n  iconName: 'road',\n  icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n  prefix: 'fas',\n  iconName: 'robot',\n  icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n  prefix: 'fas',\n  iconName: 'rocket',\n  icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n  prefix: 'fas',\n  iconName: 'route',\n  icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n  prefix: 'fas',\n  iconName: 'rss',\n  icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n  prefix: 'fas',\n  iconName: 'rss-square',\n  icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n  prefix: 'fas',\n  iconName: 'ruble-sign',\n  icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n  prefix: 'fas',\n  iconName: 'ruler',\n  icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n  prefix: 'fas',\n  iconName: 'ruler-combined',\n  icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n  prefix: 'fas',\n  iconName: 'ruler-horizontal',\n  icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n  prefix: 'fas',\n  iconName: 'ruler-vertical',\n  icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n  prefix: 'fas',\n  iconName: 'running',\n  icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n  prefix: 'fas',\n  iconName: 'rupee-sign',\n  icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n  prefix: 'fas',\n  iconName: 'sad-cry',\n  icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n  prefix: 'fas',\n  iconName: 'sad-tear',\n  icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n  prefix: 'fas',\n  iconName: 'satellite',\n  icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n  prefix: 'fas',\n  iconName: 'satellite-dish',\n  icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n  prefix: 'fas',\n  iconName: 'save',\n  icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n  prefix: 'fas',\n  iconName: 'school',\n  icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n  prefix: 'fas',\n  iconName: 'screwdriver',\n  icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n  prefix: 'fas',\n  iconName: 'scroll',\n  icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n  prefix: 'fas',\n  iconName: 'sd-card',\n  icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n  prefix: 'fas',\n  iconName: 'search',\n  icon: [512, 512, [], \"f002\", \"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};\nvar faSearchDollar = {\n  prefix: 'fas',\n  iconName: 'search-dollar',\n  icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n  prefix: 'fas',\n  iconName: 'search-location',\n  icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n  prefix: 'fas',\n  iconName: 'search-minus',\n  icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n  prefix: 'fas',\n  iconName: 'search-plus',\n  icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n  prefix: 'fas',\n  iconName: 'seedling',\n  icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n  prefix: 'fas',\n  iconName: 'server',\n  icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n  prefix: 'fas',\n  iconName: 'shapes',\n  icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n  prefix: 'fas',\n  iconName: 'share',\n  icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n  prefix: 'fas',\n  iconName: 'share-alt',\n  icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n  prefix: 'fas',\n  iconName: 'share-alt-square',\n  icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n  prefix: 'fas',\n  iconName: 'share-square',\n  icon: [576, 512, [], \"f14d\", \"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};\nvar faShekelSign = {\n  prefix: 'fas',\n  iconName: 'shekel-sign',\n  icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n  prefix: 'fas',\n  iconName: 'shield-alt',\n  icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n  prefix: 'fas',\n  iconName: 'shield-virus',\n  icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n  prefix: 'fas',\n  iconName: 'ship',\n  icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n  prefix: 'fas',\n  iconName: 'shipping-fast',\n  icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n  prefix: 'fas',\n  iconName: 'shoe-prints',\n  icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n  prefix: 'fas',\n  iconName: 'shopping-bag',\n  icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n  prefix: 'fas',\n  iconName: 'shopping-basket',\n  icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n  prefix: 'fas',\n  iconName: 'shopping-cart',\n  icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n  prefix: 'fas',\n  iconName: 'shower',\n  icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n  prefix: 'fas',\n  iconName: 'shuttle-van',\n  icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n  prefix: 'fas',\n  iconName: 'sign',\n  icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n  prefix: 'fas',\n  iconName: 'sign-in-alt',\n  icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n  prefix: 'fas',\n  iconName: 'sign-language',\n  icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n  prefix: 'fas',\n  iconName: 'sign-out-alt',\n  icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n  prefix: 'fas',\n  iconName: 'signal',\n  icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n  prefix: 'fas',\n  iconName: 'signature',\n  icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n  prefix: 'fas',\n  iconName: 'sim-card',\n  icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n  prefix: 'fas',\n  iconName: 'sink',\n  icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n  prefix: 'fas',\n  iconName: 'sitemap',\n  icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n  prefix: 'fas',\n  iconName: 'skating',\n  icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n  prefix: 'fas',\n  iconName: 'skiing',\n  icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n  prefix: 'fas',\n  iconName: 'skiing-nordic',\n  icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n  prefix: 'fas',\n  iconName: 'skull',\n  icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n  prefix: 'fas',\n  iconName: 'skull-crossbones',\n  icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n  prefix: 'fas',\n  iconName: 'slash',\n  icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n  prefix: 'fas',\n  iconName: 'sleigh',\n  icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n  prefix: 'fas',\n  iconName: 'sliders-h',\n  icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n  prefix: 'fas',\n  iconName: 'smile',\n  icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n  prefix: 'fas',\n  iconName: 'smile-beam',\n  icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n  prefix: 'fas',\n  iconName: 'smile-wink',\n  icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n  prefix: 'fas',\n  iconName: 'smog',\n  icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n  prefix: 'fas',\n  iconName: 'smoking',\n  icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n  prefix: 'fas',\n  iconName: 'smoking-ban',\n  icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n  prefix: 'fas',\n  iconName: 'sms',\n  icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n  prefix: 'fas',\n  iconName: 'snowboarding',\n  icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n  prefix: 'fas',\n  iconName: 'snowflake',\n  icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n  prefix: 'fas',\n  iconName: 'snowman',\n  icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n  prefix: 'fas',\n  iconName: 'snowplow',\n  icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n  prefix: 'fas',\n  iconName: 'soap',\n  icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n  prefix: 'fas',\n  iconName: 'socks',\n  icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n  prefix: 'fas',\n  iconName: 'solar-panel',\n  icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n  prefix: 'fas',\n  iconName: 'sort',\n  icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down',\n  icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down-alt',\n  icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up',\n  icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up-alt',\n  icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down',\n  icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down-alt',\n  icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up',\n  icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up-alt',\n  icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n  prefix: 'fas',\n  iconName: 'sort-down',\n  icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down',\n  icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down-alt',\n  icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up',\n  icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up-alt',\n  icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n  prefix: 'fas',\n  iconName: 'sort-up',\n  icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n  prefix: 'fas',\n  iconName: 'spa',\n  icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n  prefix: 'fas',\n  iconName: 'space-shuttle',\n  icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n  prefix: 'fas',\n  iconName: 'spell-check',\n  icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n  prefix: 'fas',\n  iconName: 'spider',\n  icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n  prefix: 'fas',\n  iconName: 'spinner',\n  icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n  prefix: 'fas',\n  iconName: 'splotch',\n  icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n  prefix: 'fas',\n  iconName: 'spray-can',\n  icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n  prefix: 'fas',\n  iconName: 'square',\n  icon: [448, 512, [], \"f0c8\", \"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};\nvar faSquareFull = {\n  prefix: 'fas',\n  iconName: 'square-full',\n  icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n  prefix: 'fas',\n  iconName: 'square-root-alt',\n  icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n  prefix: 'fas',\n  iconName: 'stamp',\n  icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n  prefix: 'fas',\n  iconName: 'star',\n  icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n  prefix: 'fas',\n  iconName: 'star-and-crescent',\n  icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n  prefix: 'fas',\n  iconName: 'star-half',\n  icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n  prefix: 'fas',\n  iconName: 'star-half-alt',\n  icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n  prefix: 'fas',\n  iconName: 'star-of-david',\n  icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n  prefix: 'fas',\n  iconName: 'star-of-life',\n  icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n  prefix: 'fas',\n  iconName: 'step-backward',\n  icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n  prefix: 'fas',\n  iconName: 'step-forward',\n  icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n  prefix: 'fas',\n  iconName: 'stethoscope',\n  icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n  prefix: 'fas',\n  iconName: 'sticky-note',\n  icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n  prefix: 'fas',\n  iconName: 'stop',\n  icon: [448, 512, [], \"f04d\", \"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};\nvar faStopCircle = {\n  prefix: 'fas',\n  iconName: 'stop-circle',\n  icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n  prefix: 'fas',\n  iconName: 'stopwatch',\n  icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n  prefix: 'fas',\n  iconName: 'stopwatch-20',\n  icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n  prefix: 'fas',\n  iconName: 'store',\n  icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n  prefix: 'fas',\n  iconName: 'store-alt',\n  icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n  prefix: 'fas',\n  iconName: 'store-alt-slash',\n  icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n  prefix: 'fas',\n  iconName: 'store-slash',\n  icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n  prefix: 'fas',\n  iconName: 'stream',\n  icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n  prefix: 'fas',\n  iconName: 'street-view',\n  icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n  prefix: 'fas',\n  iconName: 'strikethrough',\n  icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n  prefix: 'fas',\n  iconName: 'stroopwafel',\n  icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n  prefix: 'fas',\n  iconName: 'subscript',\n  icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n  prefix: 'fas',\n  iconName: 'subway',\n  icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n  prefix: 'fas',\n  iconName: 'suitcase',\n  icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n  prefix: 'fas',\n  iconName: 'suitcase-rolling',\n  icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n  prefix: 'fas',\n  iconName: 'sun',\n  icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n  prefix: 'fas',\n  iconName: 'superscript',\n  icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n  prefix: 'fas',\n  iconName: 'surprise',\n  icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n  prefix: 'fas',\n  iconName: 'swatchbook',\n  icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n  prefix: 'fas',\n  iconName: 'swimmer',\n  icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n  prefix: 'fas',\n  iconName: 'swimming-pool',\n  icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n  prefix: 'fas',\n  iconName: 'synagogue',\n  icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n  prefix: 'fas',\n  iconName: 'sync',\n  icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n  prefix: 'fas',\n  iconName: 'sync-alt',\n  icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n  prefix: 'fas',\n  iconName: 'syringe',\n  icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n  prefix: 'fas',\n  iconName: 'table',\n  icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n  prefix: 'fas',\n  iconName: 'table-tennis',\n  icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n  prefix: 'fas',\n  iconName: 'tablet',\n  icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n  prefix: 'fas',\n  iconName: 'tablet-alt',\n  icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n  prefix: 'fas',\n  iconName: 'tablets',\n  icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n  prefix: 'fas',\n  iconName: 'tachometer-alt',\n  icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n  prefix: 'fas',\n  iconName: 'tag',\n  icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n  prefix: 'fas',\n  iconName: 'tags',\n  icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n  prefix: 'fas',\n  iconName: 'tape',\n  icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n  prefix: 'fas',\n  iconName: 'tasks',\n  icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n  prefix: 'fas',\n  iconName: 'taxi',\n  icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n  prefix: 'fas',\n  iconName: 'teeth',\n  icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n  prefix: 'fas',\n  iconName: 'teeth-open',\n  icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n  prefix: 'fas',\n  iconName: 'temperature-high',\n  icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n  prefix: 'fas',\n  iconName: 'temperature-low',\n  icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n  prefix: 'fas',\n  iconName: 'tenge',\n  icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n  prefix: 'fas',\n  iconName: 'terminal',\n  icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 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 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n  prefix: 'fas',\n  iconName: 'text-height',\n  icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n  prefix: 'fas',\n  iconName: 'text-width',\n  icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n  prefix: 'fas',\n  iconName: 'th',\n  icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n  prefix: 'fas',\n  iconName: 'th-large',\n  icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n  prefix: 'fas',\n  iconName: 'th-list',\n  icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n  prefix: 'fas',\n  iconName: 'theater-masks',\n  icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n  prefix: 'fas',\n  iconName: 'thermometer',\n  icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n  prefix: 'fas',\n  iconName: 'thermometer-empty',\n  icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n  prefix: 'fas',\n  iconName: 'thermometer-full',\n  icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n  prefix: 'fas',\n  iconName: 'thermometer-half',\n  icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n  prefix: 'fas',\n  iconName: 'thermometer-quarter',\n  icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'thermometer-three-quarters',\n  icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n  prefix: 'fas',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n  prefix: 'fas',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n  prefix: 'fas',\n  iconName: 'thumbtack',\n  icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n  prefix: 'fas',\n  iconName: 'ticket-alt',\n  icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n  prefix: 'fas',\n  iconName: 'times',\n  icon: [352, 512, [], \"f00d\", \"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};\nvar faTimesCircle = {\n  prefix: 'fas',\n  iconName: 'times-circle',\n  icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n  prefix: 'fas',\n  iconName: 'tint',\n  icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n  prefix: 'fas',\n  iconName: 'tint-slash',\n  icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n  prefix: 'fas',\n  iconName: 'tired',\n  icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n  prefix: 'fas',\n  iconName: 'toggle-off',\n  icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n  prefix: 'fas',\n  iconName: 'toggle-on',\n  icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n  prefix: 'fas',\n  iconName: 'toilet',\n  icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n  prefix: 'fas',\n  iconName: 'toilet-paper',\n  icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n  prefix: 'fas',\n  iconName: 'toilet-paper-slash',\n  icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n  prefix: 'fas',\n  iconName: 'toolbox',\n  icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n  prefix: 'fas',\n  iconName: 'tools',\n  icon: [512, 512, [], \"f7d9\", \"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};\nvar faTooth = {\n  prefix: 'fas',\n  iconName: 'tooth',\n  icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n  prefix: 'fas',\n  iconName: 'torah',\n  icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n  prefix: 'fas',\n  iconName: 'torii-gate',\n  icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n  prefix: 'fas',\n  iconName: 'tractor',\n  icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n  prefix: 'fas',\n  iconName: 'trademark',\n  icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n  prefix: 'fas',\n  iconName: 'traffic-light',\n  icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n  prefix: 'fas',\n  iconName: 'trailer',\n  icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n  prefix: 'fas',\n  iconName: 'tram',\n  icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n  prefix: 'fas',\n  iconName: 'transgender-alt',\n  icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n  prefix: 'fas',\n  iconName: 'trash',\n  icon: [448, 512, [], \"f1f8\", \"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 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n  prefix: 'fas',\n  iconName: 'trash-alt',\n  icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 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 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n  prefix: 'fas',\n  iconName: 'trash-restore',\n  icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 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 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n  prefix: 'fas',\n  iconName: 'trash-restore-alt',\n  icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 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 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n  prefix: 'fas',\n  iconName: 'tree',\n  icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n  prefix: 'fas',\n  iconName: 'trophy',\n  icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n  prefix: 'fas',\n  iconName: 'truck',\n  icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n  prefix: 'fas',\n  iconName: 'truck-loading',\n  icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n  prefix: 'fas',\n  iconName: 'truck-monster',\n  icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n  prefix: 'fas',\n  iconName: 'truck-moving',\n  icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n  prefix: 'fas',\n  iconName: 'truck-pickup',\n  icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n  prefix: 'fas',\n  iconName: 'tshirt',\n  icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n  prefix: 'fas',\n  iconName: 'tty',\n  icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n  prefix: 'fas',\n  iconName: 'tv',\n  icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n  prefix: 'fas',\n  iconName: 'umbrella',\n  icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n  prefix: 'fas',\n  iconName: 'umbrella-beach',\n  icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n  prefix: 'fas',\n  iconName: 'underline',\n  icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n  prefix: 'fas',\n  iconName: 'undo',\n  icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n  prefix: 'fas',\n  iconName: 'undo-alt',\n  icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n  prefix: 'fas',\n  iconName: 'universal-access',\n  icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n  prefix: 'fas',\n  iconName: 'university',\n  icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n  prefix: 'fas',\n  iconName: 'unlink',\n  icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n  prefix: 'fas',\n  iconName: 'unlock',\n  icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n  prefix: 'fas',\n  iconName: 'unlock-alt',\n  icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n  prefix: 'fas',\n  iconName: 'upload',\n  icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n  prefix: 'fas',\n  iconName: 'user',\n  icon: [448, 512, [], \"f007\", \"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};\nvar faUserAlt = {\n  prefix: 'fas',\n  iconName: 'user-alt',\n  icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n  prefix: 'fas',\n  iconName: 'user-alt-slash',\n  icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n  prefix: 'fas',\n  iconName: 'user-astronaut',\n  icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n  prefix: 'fas',\n  iconName: 'user-check',\n  icon: [640, 512, [], \"f4fc\", \"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.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n  prefix: 'fas',\n  iconName: 'user-circle',\n  icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n  prefix: 'fas',\n  iconName: 'user-clock',\n  icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-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 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n  prefix: 'fas',\n  iconName: 'user-cog',\n  icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-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 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n  prefix: 'fas',\n  iconName: 'user-edit',\n  icon: [640, 512, [], \"f4ff\", \"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 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n  prefix: 'fas',\n  iconName: 'user-friends',\n  icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 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.3C51.6 288 0 339.6 0 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.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n  prefix: 'fas',\n  iconName: 'user-graduate',\n  icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n  prefix: 'fas',\n  iconName: 'user-injured',\n  icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n  prefix: 'fas',\n  iconName: 'user-lock',\n  icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n  prefix: 'fas',\n  iconName: 'user-md',\n  icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n  prefix: 'fas',\n  iconName: 'user-minus',\n  icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.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};\nvar faUserNinja = {\n  prefix: 'fas',\n  iconName: 'user-ninja',\n  icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n  prefix: 'fas',\n  iconName: 'user-nurse',\n  icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n  prefix: 'fas',\n  iconName: 'user-plus',\n  icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.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};\nvar faUserSecret = {\n  prefix: 'fas',\n  iconName: 'user-secret',\n  icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n  prefix: 'fas',\n  iconName: 'user-shield',\n  icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-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 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n  prefix: 'fas',\n  iconName: 'user-slash',\n  icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n  prefix: 'fas',\n  iconName: 'user-tag',\n  icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n  prefix: 'fas',\n  iconName: 'user-tie',\n  icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n  prefix: 'fas',\n  iconName: 'user-times',\n  icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 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};\nvar faUsers = {\n  prefix: 'fas',\n  iconName: 'users',\n  icon: [640, 512, [], \"f0c0\", \"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};\nvar faUsersCog = {\n  prefix: 'fas',\n  iconName: 'users-cog',\n  icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.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};\nvar faUsersSlash = {\n  prefix: 'fas',\n  iconName: 'users-slash',\n  icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n  prefix: 'fas',\n  iconName: 'utensil-spoon',\n  icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n  prefix: 'fas',\n  iconName: 'utensils',\n  icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n  prefix: 'fas',\n  iconName: 'vector-square',\n  icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n  prefix: 'fas',\n  iconName: 'venus',\n  icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n  prefix: 'fas',\n  iconName: 'venus-double',\n  icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n  prefix: 'fas',\n  iconName: 'venus-mars',\n  icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n  prefix: 'fas',\n  iconName: 'vest',\n  icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n  prefix: 'fas',\n  iconName: 'vest-patches',\n  icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n  prefix: 'fas',\n  iconName: 'vial',\n  icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n  prefix: 'fas',\n  iconName: 'vials',\n  icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n  prefix: 'fas',\n  iconName: 'video',\n  icon: [576, 512, [], \"f03d\", \"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};\nvar faVideoSlash = {\n  prefix: 'fas',\n  iconName: 'video-slash',\n  icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n  prefix: 'fas',\n  iconName: 'vihara',\n  icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n  prefix: 'fas',\n  iconName: 'virus',\n  icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n  prefix: 'fas',\n  iconName: 'virus-slash',\n  icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n  prefix: 'fas',\n  iconName: 'viruses',\n  icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n  prefix: 'fas',\n  iconName: 'voicemail',\n  icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n  prefix: 'fas',\n  iconName: 'volleyball-ball',\n  icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n  prefix: 'fas',\n  iconName: 'volume-down',\n  icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n  prefix: 'fas',\n  iconName: 'volume-mute',\n  icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n  prefix: 'fas',\n  iconName: 'volume-off',\n  icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n  prefix: 'fas',\n  iconName: 'volume-up',\n  icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n  prefix: 'fas',\n  iconName: 'vote-yea',\n  icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n  prefix: 'fas',\n  iconName: 'vr-cardboard',\n  icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n  prefix: 'fas',\n  iconName: 'walking',\n  icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n  prefix: 'fas',\n  iconName: 'wallet',\n  icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n  prefix: 'fas',\n  iconName: 'warehouse',\n  icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n  prefix: 'fas',\n  iconName: 'water',\n  icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n  prefix: 'fas',\n  iconName: 'wave-square',\n  icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n  prefix: 'fas',\n  iconName: 'weight',\n  icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n  prefix: 'fas',\n  iconName: 'weight-hanging',\n  icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n  prefix: 'fas',\n  iconName: 'wheelchair',\n  icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n  prefix: 'fas',\n  iconName: 'wifi',\n  icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n  prefix: 'fas',\n  iconName: 'wind',\n  icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n  prefix: 'fas',\n  iconName: 'window-close',\n  icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n  prefix: 'fas',\n  iconName: 'window-maximize',\n  icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n  prefix: 'fas',\n  iconName: 'window-minimize',\n  icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n  prefix: 'fas',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n  prefix: 'fas',\n  iconName: 'wine-bottle',\n  icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n  prefix: 'fas',\n  iconName: 'wine-glass',\n  icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n  prefix: 'fas',\n  iconName: 'wine-glass-alt',\n  icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n  prefix: 'fas',\n  iconName: 'won-sign',\n  icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n  prefix: 'fas',\n  iconName: 'wrench',\n  icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n  prefix: 'fas',\n  iconName: 'x-ray',\n  icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n  prefix: 'fas',\n  iconName: 'yen-sign',\n  icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n  prefix: 'fas',\n  iconName: 'yin-yang',\n  icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n  faAd: faAd,\n  faAddressBook: faAddressBook,\n  faAddressCard: faAddressCard,\n  faAdjust: faAdjust,\n  faAirFreshener: faAirFreshener,\n  faAlignCenter: faAlignCenter,\n  faAlignJustify: faAlignJustify,\n  faAlignLeft: faAlignLeft,\n  faAlignRight: faAlignRight,\n  faAllergies: faAllergies,\n  faAmbulance: faAmbulance,\n  faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n  faAnchor: faAnchor,\n  faAngleDoubleDown: faAngleDoubleDown,\n  faAngleDoubleLeft: faAngleDoubleLeft,\n  faAngleDoubleRight: faAngleDoubleRight,\n  faAngleDoubleUp: faAngleDoubleUp,\n  faAngleDown: faAngleDown,\n  faAngleLeft: faAngleLeft,\n  faAngleRight: faAngleRight,\n  faAngleUp: faAngleUp,\n  faAngry: faAngry,\n  faAnkh: faAnkh,\n  faAppleAlt: faAppleAlt,\n  faArchive: faArchive,\n  faArchway: faArchway,\n  faArrowAltCircleDown: faArrowAltCircleDown,\n  faArrowAltCircleLeft: faArrowAltCircleLeft,\n  faArrowAltCircleRight: faArrowAltCircleRight,\n  faArrowAltCircleUp: faArrowAltCircleUp,\n  faArrowCircleDown: faArrowCircleDown,\n  faArrowCircleLeft: faArrowCircleLeft,\n  faArrowCircleRight: faArrowCircleRight,\n  faArrowCircleUp: faArrowCircleUp,\n  faArrowDown: faArrowDown,\n  faArrowLeft: faArrowLeft,\n  faArrowRight: faArrowRight,\n  faArrowUp: faArrowUp,\n  faArrowsAlt: faArrowsAlt,\n  faArrowsAltH: faArrowsAltH,\n  faArrowsAltV: faArrowsAltV,\n  faAssistiveListeningSystems: faAssistiveListeningSystems,\n  faAsterisk: faAsterisk,\n  faAt: faAt,\n  faAtlas: faAtlas,\n  faAtom: faAtom,\n  faAudioDescription: faAudioDescription,\n  faAward: faAward,\n  faBaby: faBaby,\n  faBabyCarriage: faBabyCarriage,\n  faBackspace: faBackspace,\n  faBackward: faBackward,\n  faBacon: faBacon,\n  faBacteria: faBacteria,\n  faBacterium: faBacterium,\n  faBahai: faBahai,\n  faBalanceScale: faBalanceScale,\n  faBalanceScaleLeft: faBalanceScaleLeft,\n  faBalanceScaleRight: faBalanceScaleRight,\n  faBan: faBan,\n  faBandAid: faBandAid,\n  faBarcode: faBarcode,\n  faBars: faBars,\n  faBaseballBall: faBaseballBall,\n  faBasketballBall: faBasketballBall,\n  faBath: faBath,\n  faBatteryEmpty: faBatteryEmpty,\n  faBatteryFull: faBatteryFull,\n  faBatteryHalf: faBatteryHalf,\n  faBatteryQuarter: faBatteryQuarter,\n  faBatteryThreeQuarters: faBatteryThreeQuarters,\n  faBed: faBed,\n  faBeer: faBeer,\n  faBell: faBell,\n  faBellSlash: faBellSlash,\n  faBezierCurve: faBezierCurve,\n  faBible: faBible,\n  faBicycle: faBicycle,\n  faBiking: faBiking,\n  faBinoculars: faBinoculars,\n  faBiohazard: faBiohazard,\n  faBirthdayCake: faBirthdayCake,\n  faBlender: faBlender,\n  faBlenderPhone: faBlenderPhone,\n  faBlind: faBlind,\n  faBlog: faBlog,\n  faBold: faBold,\n  faBolt: faBolt,\n  faBomb: faBomb,\n  faBone: faBone,\n  faBong: faBong,\n  faBook: faBook,\n  faBookDead: faBookDead,\n  faBookMedical: faBookMedical,\n  faBookOpen: faBookOpen,\n  faBookReader: faBookReader,\n  faBookmark: faBookmark,\n  faBorderAll: faBorderAll,\n  faBorderNone: faBorderNone,\n  faBorderStyle: faBorderStyle,\n  faBowlingBall: faBowlingBall,\n  faBox: faBox,\n  faBoxOpen: faBoxOpen,\n  faBoxTissue: faBoxTissue,\n  faBoxes: faBoxes,\n  faBraille: faBraille,\n  faBrain: faBrain,\n  faBreadSlice: faBreadSlice,\n  faBriefcase: faBriefcase,\n  faBriefcaseMedical: faBriefcaseMedical,\n  faBroadcastTower: faBroadcastTower,\n  faBroom: faBroom,\n  faBrush: faBrush,\n  faBug: faBug,\n  faBuilding: faBuilding,\n  faBullhorn: faBullhorn,\n  faBullseye: faBullseye,\n  faBurn: faBurn,\n  faBus: faBus,\n  faBusAlt: faBusAlt,\n  faBusinessTime: faBusinessTime,\n  faCalculator: faCalculator,\n  faCalendar: faCalendar,\n  faCalendarAlt: faCalendarAlt,\n  faCalendarCheck: faCalendarCheck,\n  faCalendarDay: faCalendarDay,\n  faCalendarMinus: faCalendarMinus,\n  faCalendarPlus: faCalendarPlus,\n  faCalendarTimes: faCalendarTimes,\n  faCalendarWeek: faCalendarWeek,\n  faCamera: faCamera,\n  faCameraRetro: faCameraRetro,\n  faCampground: faCampground,\n  faCandyCane: faCandyCane,\n  faCannabis: faCannabis,\n  faCapsules: faCapsules,\n  faCar: faCar,\n  faCarAlt: faCarAlt,\n  faCarBattery: faCarBattery,\n  faCarCrash: faCarCrash,\n  faCarSide: faCarSide,\n  faCaravan: faCaravan,\n  faCaretDown: faCaretDown,\n  faCaretLeft: faCaretLeft,\n  faCaretRight: faCaretRight,\n  faCaretSquareDown: faCaretSquareDown,\n  faCaretSquareLeft: faCaretSquareLeft,\n  faCaretSquareRight: faCaretSquareRight,\n  faCaretSquareUp: faCaretSquareUp,\n  faCaretUp: faCaretUp,\n  faCarrot: faCarrot,\n  faCartArrowDown: faCartArrowDown,\n  faCartPlus: faCartPlus,\n  faCashRegister: faCashRegister,\n  faCat: faCat,\n  faCertificate: faCertificate,\n  faChair: faChair,\n  faChalkboard: faChalkboard,\n  faChalkboardTeacher: faChalkboardTeacher,\n  faChargingStation: faChargingStation,\n  faChartArea: faChartArea,\n  faChartBar: faChartBar,\n  faChartLine: faChartLine,\n  faChartPie: faChartPie,\n  faCheck: faCheck,\n  faCheckCircle: faCheckCircle,\n  faCheckDouble: faCheckDouble,\n  faCheckSquare: faCheckSquare,\n  faCheese: faCheese,\n  faChess: faChess,\n  faChessBishop: faChessBishop,\n  faChessBoard: faChessBoard,\n  faChessKing: faChessKing,\n  faChessKnight: faChessKnight,\n  faChessPawn: faChessPawn,\n  faChessQueen: faChessQueen,\n  faChessRook: faChessRook,\n  faChevronCircleDown: faChevronCircleDown,\n  faChevronCircleLeft: faChevronCircleLeft,\n  faChevronCircleRight: faChevronCircleRight,\n  faChevronCircleUp: faChevronCircleUp,\n  faChevronDown: faChevronDown,\n  faChevronLeft: faChevronLeft,\n  faChevronRight: faChevronRight,\n  faChevronUp: faChevronUp,\n  faChild: faChild,\n  faChurch: faChurch,\n  faCircle: faCircle,\n  faCircleNotch: faCircleNotch,\n  faCity: faCity,\n  faClinicMedical: faClinicMedical,\n  faClipboard: faClipboard,\n  faClipboardCheck: faClipboardCheck,\n  faClipboardList: faClipboardList,\n  faClock: faClock,\n  faClone: faClone,\n  faClosedCaptioning: faClosedCaptioning,\n  faCloud: faCloud,\n  faCloudDownloadAlt: faCloudDownloadAlt,\n  faCloudMeatball: faCloudMeatball,\n  faCloudMoon: faCloudMoon,\n  faCloudMoonRain: faCloudMoonRain,\n  faCloudRain: faCloudRain,\n  faCloudShowersHeavy: faCloudShowersHeavy,\n  faCloudSun: faCloudSun,\n  faCloudSunRain: faCloudSunRain,\n  faCloudUploadAlt: faCloudUploadAlt,\n  faCocktail: faCocktail,\n  faCode: faCode,\n  faCodeBranch: faCodeBranch,\n  faCoffee: faCoffee,\n  faCog: faCog,\n  faCogs: faCogs,\n  faCoins: faCoins,\n  faColumns: faColumns,\n  faComment: faComment,\n  faCommentAlt: faCommentAlt,\n  faCommentDollar: faCommentDollar,\n  faCommentDots: faCommentDots,\n  faCommentMedical: faCommentMedical,\n  faCommentSlash: faCommentSlash,\n  faComments: faComments,\n  faCommentsDollar: faCommentsDollar,\n  faCompactDisc: faCompactDisc,\n  faCompass: faCompass,\n  faCompress: faCompress,\n  faCompressAlt: faCompressAlt,\n  faCompressArrowsAlt: faCompressArrowsAlt,\n  faConciergeBell: faConciergeBell,\n  faCookie: faCookie,\n  faCookieBite: faCookieBite,\n  faCopy: faCopy,\n  faCopyright: faCopyright,\n  faCouch: faCouch,\n  faCreditCard: faCreditCard,\n  faCrop: faCrop,\n  faCropAlt: faCropAlt,\n  faCross: faCross,\n  faCrosshairs: faCrosshairs,\n  faCrow: faCrow,\n  faCrown: faCrown,\n  faCrutch: faCrutch,\n  faCube: faCube,\n  faCubes: faCubes,\n  faCut: faCut,\n  faDatabase: faDatabase,\n  faDeaf: faDeaf,\n  faDemocrat: faDemocrat,\n  faDesktop: faDesktop,\n  faDharmachakra: faDharmachakra,\n  faDiagnoses: faDiagnoses,\n  faDice: faDice,\n  faDiceD20: faDiceD20,\n  faDiceD6: faDiceD6,\n  faDiceFive: faDiceFive,\n  faDiceFour: faDiceFour,\n  faDiceOne: faDiceOne,\n  faDiceSix: faDiceSix,\n  faDiceThree: faDiceThree,\n  faDiceTwo: faDiceTwo,\n  faDigitalTachograph: faDigitalTachograph,\n  faDirections: faDirections,\n  faDisease: faDisease,\n  faDivide: faDivide,\n  faDizzy: faDizzy,\n  faDna: faDna,\n  faDog: faDog,\n  faDollarSign: faDollarSign,\n  faDolly: faDolly,\n  faDollyFlatbed: faDollyFlatbed,\n  faDonate: faDonate,\n  faDoorClosed: faDoorClosed,\n  faDoorOpen: faDoorOpen,\n  faDotCircle: faDotCircle,\n  faDove: faDove,\n  faDownload: faDownload,\n  faDraftingCompass: faDraftingCompass,\n  faDragon: faDragon,\n  faDrawPolygon: faDrawPolygon,\n  faDrum: faDrum,\n  faDrumSteelpan: faDrumSteelpan,\n  faDrumstickBite: faDrumstickBite,\n  faDumbbell: faDumbbell,\n  faDumpster: faDumpster,\n  faDumpsterFire: faDumpsterFire,\n  faDungeon: faDungeon,\n  faEdit: faEdit,\n  faEgg: faEgg,\n  faEject: faEject,\n  faEllipsisH: faEllipsisH,\n  faEllipsisV: faEllipsisV,\n  faEnvelope: faEnvelope,\n  faEnvelopeOpen: faEnvelopeOpen,\n  faEnvelopeOpenText: faEnvelopeOpenText,\n  faEnvelopeSquare: faEnvelopeSquare,\n  faEquals: faEquals,\n  faEraser: faEraser,\n  faEthernet: faEthernet,\n  faEuroSign: faEuroSign,\n  faExchangeAlt: faExchangeAlt,\n  faExclamation: faExclamation,\n  faExclamationCircle: faExclamationCircle,\n  faExclamationTriangle: faExclamationTriangle,\n  faExpand: faExpand,\n  faExpandAlt: faExpandAlt,\n  faExpandArrowsAlt: faExpandArrowsAlt,\n  faExternalLinkAlt: faExternalLinkAlt,\n  faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n  faEye: faEye,\n  faEyeDropper: faEyeDropper,\n  faEyeSlash: faEyeSlash,\n  faFan: faFan,\n  faFastBackward: faFastBackward,\n  faFastForward: faFastForward,\n  faFaucet: faFaucet,\n  faFax: faFax,\n  faFeather: faFeather,\n  faFeatherAlt: faFeatherAlt,\n  faFemale: faFemale,\n  faFighterJet: faFighterJet,\n  faFile: faFile,\n  faFileAlt: faFileAlt,\n  faFileArchive: faFileArchive,\n  faFileAudio: faFileAudio,\n  faFileCode: faFileCode,\n  faFileContract: faFileContract,\n  faFileCsv: faFileCsv,\n  faFileDownload: faFileDownload,\n  faFileExcel: faFileExcel,\n  faFileExport: faFileExport,\n  faFileImage: faFileImage,\n  faFileImport: faFileImport,\n  faFileInvoice: faFileInvoice,\n  faFileInvoiceDollar: faFileInvoiceDollar,\n  faFileMedical: faFileMedical,\n  faFileMedicalAlt: faFileMedicalAlt,\n  faFilePdf: faFilePdf,\n  faFilePowerpoint: faFilePowerpoint,\n  faFilePrescription: faFilePrescription,\n  faFileSignature: faFileSignature,\n  faFileUpload: faFileUpload,\n  faFileVideo: faFileVideo,\n  faFileWord: faFileWord,\n  faFill: faFill,\n  faFillDrip: faFillDrip,\n  faFilm: faFilm,\n  faFilter: faFilter,\n  faFingerprint: faFingerprint,\n  faFire: faFire,\n  faFireAlt: faFireAlt,\n  faFireExtinguisher: faFireExtinguisher,\n  faFirstAid: faFirstAid,\n  faFish: faFish,\n  faFistRaised: faFistRaised,\n  faFlag: faFlag,\n  faFlagCheckered: faFlagCheckered,\n  faFlagUsa: faFlagUsa,\n  faFlask: faFlask,\n  faFlushed: faFlushed,\n  faFolder: faFolder,\n  faFolderMinus: faFolderMinus,\n  faFolderOpen: faFolderOpen,\n  faFolderPlus: faFolderPlus,\n  faFont: faFont,\n  faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n  faFootballBall: faFootballBall,\n  faForward: faForward,\n  faFrog: faFrog,\n  faFrown: faFrown,\n  faFrownOpen: faFrownOpen,\n  faFunnelDollar: faFunnelDollar,\n  faFutbol: faFutbol,\n  faGamepad: faGamepad,\n  faGasPump: faGasPump,\n  faGavel: faGavel,\n  faGem: faGem,\n  faGenderless: faGenderless,\n  faGhost: faGhost,\n  faGift: faGift,\n  faGifts: faGifts,\n  faGlassCheers: faGlassCheers,\n  faGlassMartini: faGlassMartini,\n  faGlassMartiniAlt: faGlassMartiniAlt,\n  faGlassWhiskey: faGlassWhiskey,\n  faGlasses: faGlasses,\n  faGlobe: faGlobe,\n  faGlobeAfrica: faGlobeAfrica,\n  faGlobeAmericas: faGlobeAmericas,\n  faGlobeAsia: faGlobeAsia,\n  faGlobeEurope: faGlobeEurope,\n  faGolfBall: faGolfBall,\n  faGopuram: faGopuram,\n  faGraduationCap: faGraduationCap,\n  faGreaterThan: faGreaterThan,\n  faGreaterThanEqual: faGreaterThanEqual,\n  faGrimace: faGrimace,\n  faGrin: faGrin,\n  faGrinAlt: faGrinAlt,\n  faGrinBeam: faGrinBeam,\n  faGrinBeamSweat: faGrinBeamSweat,\n  faGrinHearts: faGrinHearts,\n  faGrinSquint: faGrinSquint,\n  faGrinSquintTears: faGrinSquintTears,\n  faGrinStars: faGrinStars,\n  faGrinTears: faGrinTears,\n  faGrinTongue: faGrinTongue,\n  faGrinTongueSquint: faGrinTongueSquint,\n  faGrinTongueWink: faGrinTongueWink,\n  faGrinWink: faGrinWink,\n  faGripHorizontal: faGripHorizontal,\n  faGripLines: faGripLines,\n  faGripLinesVertical: faGripLinesVertical,\n  faGripVertical: faGripVertical,\n  faGuitar: faGuitar,\n  faHSquare: faHSquare,\n  faHamburger: faHamburger,\n  faHammer: faHammer,\n  faHamsa: faHamsa,\n  faHandHolding: faHandHolding,\n  faHandHoldingHeart: faHandHoldingHeart,\n  faHandHoldingMedical: faHandHoldingMedical,\n  faHandHoldingUsd: faHandHoldingUsd,\n  faHandHoldingWater: faHandHoldingWater,\n  faHandLizard: faHandLizard,\n  faHandMiddleFinger: faHandMiddleFinger,\n  faHandPaper: faHandPaper,\n  faHandPeace: faHandPeace,\n  faHandPointDown: faHandPointDown,\n  faHandPointLeft: faHandPointLeft,\n  faHandPointRight: faHandPointRight,\n  faHandPointUp: faHandPointUp,\n  faHandPointer: faHandPointer,\n  faHandRock: faHandRock,\n  faHandScissors: faHandScissors,\n  faHandSparkles: faHandSparkles,\n  faHandSpock: faHandSpock,\n  faHands: faHands,\n  faHandsHelping: faHandsHelping,\n  faHandsWash: faHandsWash,\n  faHandshake: faHandshake,\n  faHandshakeAltSlash: faHandshakeAltSlash,\n  faHandshakeSlash: faHandshakeSlash,\n  faHanukiah: faHanukiah,\n  faHardHat: faHardHat,\n  faHashtag: faHashtag,\n  faHatCowboy: faHatCowboy,\n  faHatCowboySide: faHatCowboySide,\n  faHatWizard: faHatWizard,\n  faHdd: faHdd,\n  faHeadSideCough: faHeadSideCough,\n  faHeadSideCoughSlash: faHeadSideCoughSlash,\n  faHeadSideMask: faHeadSideMask,\n  faHeadSideVirus: faHeadSideVirus,\n  faHeading: faHeading,\n  faHeadphones: faHeadphones,\n  faHeadphonesAlt: faHeadphonesAlt,\n  faHeadset: faHeadset,\n  faHeart: faHeart,\n  faHeartBroken: faHeartBroken,\n  faHeartbeat: faHeartbeat,\n  faHelicopter: faHelicopter,\n  faHighlighter: faHighlighter,\n  faHiking: faHiking,\n  faHippo: faHippo,\n  faHistory: faHistory,\n  faHockeyPuck: faHockeyPuck,\n  faHollyBerry: faHollyBerry,\n  faHome: faHome,\n  faHorse: faHorse,\n  faHorseHead: faHorseHead,\n  faHospital: faHospital,\n  faHospitalAlt: faHospitalAlt,\n  faHospitalSymbol: faHospitalSymbol,\n  faHospitalUser: faHospitalUser,\n  faHotTub: faHotTub,\n  faHotdog: faHotdog,\n  faHotel: faHotel,\n  faHourglass: faHourglass,\n  faHourglassEnd: faHourglassEnd,\n  faHourglassHalf: faHourglassHalf,\n  faHourglassStart: faHourglassStart,\n  faHouseDamage: faHouseDamage,\n  faHouseUser: faHouseUser,\n  faHryvnia: faHryvnia,\n  faICursor: faICursor,\n  faIceCream: faIceCream,\n  faIcicles: faIcicles,\n  faIcons: faIcons,\n  faIdBadge: faIdBadge,\n  faIdCard: faIdCard,\n  faIdCardAlt: faIdCardAlt,\n  faIgloo: faIgloo,\n  faImage: faImage,\n  faImages: faImages,\n  faInbox: faInbox,\n  faIndent: faIndent,\n  faIndustry: faIndustry,\n  faInfinity: faInfinity,\n  faInfo: faInfo,\n  faInfoCircle: faInfoCircle,\n  faItalic: faItalic,\n  faJedi: faJedi,\n  faJoint: faJoint,\n  faJournalWhills: faJournalWhills,\n  faKaaba: faKaaba,\n  faKey: faKey,\n  faKeyboard: faKeyboard,\n  faKhanda: faKhanda,\n  faKiss: faKiss,\n  faKissBeam: faKissBeam,\n  faKissWinkHeart: faKissWinkHeart,\n  faKiwiBird: faKiwiBird,\n  faLandmark: faLandmark,\n  faLanguage: faLanguage,\n  faLaptop: faLaptop,\n  faLaptopCode: faLaptopCode,\n  faLaptopHouse: faLaptopHouse,\n  faLaptopMedical: faLaptopMedical,\n  faLaugh: faLaugh,\n  faLaughBeam: faLaughBeam,\n  faLaughSquint: faLaughSquint,\n  faLaughWink: faLaughWink,\n  faLayerGroup: faLayerGroup,\n  faLeaf: faLeaf,\n  faLemon: faLemon,\n  faLessThan: faLessThan,\n  faLessThanEqual: faLessThanEqual,\n  faLevelDownAlt: faLevelDownAlt,\n  faLevelUpAlt: faLevelUpAlt,\n  faLifeRing: faLifeRing,\n  faLightbulb: faLightbulb,\n  faLink: faLink,\n  faLiraSign: faLiraSign,\n  faList: faList,\n  faListAlt: faListAlt,\n  faListOl: faListOl,\n  faListUl: faListUl,\n  faLocationArrow: faLocationArrow,\n  faLock: faLock,\n  faLockOpen: faLockOpen,\n  faLongArrowAltDown: faLongArrowAltDown,\n  faLongArrowAltLeft: faLongArrowAltLeft,\n  faLongArrowAltRight: faLongArrowAltRight,\n  faLongArrowAltUp: faLongArrowAltUp,\n  faLowVision: faLowVision,\n  faLuggageCart: faLuggageCart,\n  faLungs: faLungs,\n  faLungsVirus: faLungsVirus,\n  faMagic: faMagic,\n  faMagnet: faMagnet,\n  faMailBulk: faMailBulk,\n  faMale: faMale,\n  faMap: faMap,\n  faMapMarked: faMapMarked,\n  faMapMarkedAlt: faMapMarkedAlt,\n  faMapMarker: faMapMarker,\n  faMapMarkerAlt: faMapMarkerAlt,\n  faMapPin: faMapPin,\n  faMapSigns: faMapSigns,\n  faMarker: faMarker,\n  faMars: faMars,\n  faMarsDouble: faMarsDouble,\n  faMarsStroke: faMarsStroke,\n  faMarsStrokeH: faMarsStrokeH,\n  faMarsStrokeV: faMarsStrokeV,\n  faMask: faMask,\n  faMedal: faMedal,\n  faMedkit: faMedkit,\n  faMeh: faMeh,\n  faMehBlank: faMehBlank,\n  faMehRollingEyes: faMehRollingEyes,\n  faMemory: faMemory,\n  faMenorah: faMenorah,\n  faMercury: faMercury,\n  faMeteor: faMeteor,\n  faMicrochip: faMicrochip,\n  faMicrophone: faMicrophone,\n  faMicrophoneAlt: faMicrophoneAlt,\n  faMicrophoneAltSlash: faMicrophoneAltSlash,\n  faMicrophoneSlash: faMicrophoneSlash,\n  faMicroscope: faMicroscope,\n  faMinus: faMinus,\n  faMinusCircle: faMinusCircle,\n  faMinusSquare: faMinusSquare,\n  faMitten: faMitten,\n  faMobile: faMobile,\n  faMobileAlt: faMobileAlt,\n  faMoneyBill: faMoneyBill,\n  faMoneyBillAlt: faMoneyBillAlt,\n  faMoneyBillWave: faMoneyBillWave,\n  faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n  faMoneyCheck: faMoneyCheck,\n  faMoneyCheckAlt: faMoneyCheckAlt,\n  faMonument: faMonument,\n  faMoon: faMoon,\n  faMortarPestle: faMortarPestle,\n  faMosque: faMosque,\n  faMotorcycle: faMotorcycle,\n  faMountain: faMountain,\n  faMouse: faMouse,\n  faMousePointer: faMousePointer,\n  faMugHot: faMugHot,\n  faMusic: faMusic,\n  faNetworkWired: faNetworkWired,\n  faNeuter: faNeuter,\n  faNewspaper: faNewspaper,\n  faNotEqual: faNotEqual,\n  faNotesMedical: faNotesMedical,\n  faObjectGroup: faObjectGroup,\n  faObjectUngroup: faObjectUngroup,\n  faOilCan: faOilCan,\n  faOm: faOm,\n  faOtter: faOtter,\n  faOutdent: faOutdent,\n  faPager: faPager,\n  faPaintBrush: faPaintBrush,\n  faPaintRoller: faPaintRoller,\n  faPalette: faPalette,\n  faPallet: faPallet,\n  faPaperPlane: faPaperPlane,\n  faPaperclip: faPaperclip,\n  faParachuteBox: faParachuteBox,\n  faParagraph: faParagraph,\n  faParking: faParking,\n  faPassport: faPassport,\n  faPastafarianism: faPastafarianism,\n  faPaste: faPaste,\n  faPause: faPause,\n  faPauseCircle: faPauseCircle,\n  faPaw: faPaw,\n  faPeace: faPeace,\n  faPen: faPen,\n  faPenAlt: faPenAlt,\n  faPenFancy: faPenFancy,\n  faPenNib: faPenNib,\n  faPenSquare: faPenSquare,\n  faPencilAlt: faPencilAlt,\n  faPencilRuler: faPencilRuler,\n  faPeopleArrows: faPeopleArrows,\n  faPeopleCarry: faPeopleCarry,\n  faPepperHot: faPepperHot,\n  faPercent: faPercent,\n  faPercentage: faPercentage,\n  faPersonBooth: faPersonBooth,\n  faPhone: faPhone,\n  faPhoneAlt: faPhoneAlt,\n  faPhoneSlash: faPhoneSlash,\n  faPhoneSquare: faPhoneSquare,\n  faPhoneSquareAlt: faPhoneSquareAlt,\n  faPhoneVolume: faPhoneVolume,\n  faPhotoVideo: faPhotoVideo,\n  faPiggyBank: faPiggyBank,\n  faPills: faPills,\n  faPizzaSlice: faPizzaSlice,\n  faPlaceOfWorship: faPlaceOfWorship,\n  faPlane: faPlane,\n  faPlaneArrival: faPlaneArrival,\n  faPlaneDeparture: faPlaneDeparture,\n  faPlaneSlash: faPlaneSlash,\n  faPlay: faPlay,\n  faPlayCircle: faPlayCircle,\n  faPlug: faPlug,\n  faPlus: faPlus,\n  faPlusCircle: faPlusCircle,\n  faPlusSquare: faPlusSquare,\n  faPodcast: faPodcast,\n  faPoll: faPoll,\n  faPollH: faPollH,\n  faPoo: faPoo,\n  faPooStorm: faPooStorm,\n  faPoop: faPoop,\n  faPortrait: faPortrait,\n  faPoundSign: faPoundSign,\n  faPowerOff: faPowerOff,\n  faPray: faPray,\n  faPrayingHands: faPrayingHands,\n  faPrescription: faPrescription,\n  faPrescriptionBottle: faPrescriptionBottle,\n  faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n  faPrint: faPrint,\n  faProcedures: faProcedures,\n  faProjectDiagram: faProjectDiagram,\n  faPumpMedical: faPumpMedical,\n  faPumpSoap: faPumpSoap,\n  faPuzzlePiece: faPuzzlePiece,\n  faQrcode: faQrcode,\n  faQuestion: faQuestion,\n  faQuestionCircle: faQuestionCircle,\n  faQuidditch: faQuidditch,\n  faQuoteLeft: faQuoteLeft,\n  faQuoteRight: faQuoteRight,\n  faQuran: faQuran,\n  faRadiation: faRadiation,\n  faRadiationAlt: faRadiationAlt,\n  faRainbow: faRainbow,\n  faRandom: faRandom,\n  faReceipt: faReceipt,\n  faRecordVinyl: faRecordVinyl,\n  faRecycle: faRecycle,\n  faRedo: faRedo,\n  faRedoAlt: faRedoAlt,\n  faRegistered: faRegistered,\n  faRemoveFormat: faRemoveFormat,\n  faReply: faReply,\n  faReplyAll: faReplyAll,\n  faRepublican: faRepublican,\n  faRestroom: faRestroom,\n  faRetweet: faRetweet,\n  faRibbon: faRibbon,\n  faRing: faRing,\n  faRoad: faRoad,\n  faRobot: faRobot,\n  faRocket: faRocket,\n  faRoute: faRoute,\n  faRss: faRss,\n  faRssSquare: faRssSquare,\n  faRubleSign: faRubleSign,\n  faRuler: faRuler,\n  faRulerCombined: faRulerCombined,\n  faRulerHorizontal: faRulerHorizontal,\n  faRulerVertical: faRulerVertical,\n  faRunning: faRunning,\n  faRupeeSign: faRupeeSign,\n  faSadCry: faSadCry,\n  faSadTear: faSadTear,\n  faSatellite: faSatellite,\n  faSatelliteDish: faSatelliteDish,\n  faSave: faSave,\n  faSchool: faSchool,\n  faScrewdriver: faScrewdriver,\n  faScroll: faScroll,\n  faSdCard: faSdCard,\n  faSearch: faSearch,\n  faSearchDollar: faSearchDollar,\n  faSearchLocation: faSearchLocation,\n  faSearchMinus: faSearchMinus,\n  faSearchPlus: faSearchPlus,\n  faSeedling: faSeedling,\n  faServer: faServer,\n  faShapes: faShapes,\n  faShare: faShare,\n  faShareAlt: faShareAlt,\n  faShareAltSquare: faShareAltSquare,\n  faShareSquare: faShareSquare,\n  faShekelSign: faShekelSign,\n  faShieldAlt: faShieldAlt,\n  faShieldVirus: faShieldVirus,\n  faShip: faShip,\n  faShippingFast: faShippingFast,\n  faShoePrints: faShoePrints,\n  faShoppingBag: faShoppingBag,\n  faShoppingBasket: faShoppingBasket,\n  faShoppingCart: faShoppingCart,\n  faShower: faShower,\n  faShuttleVan: faShuttleVan,\n  faSign: faSign,\n  faSignInAlt: faSignInAlt,\n  faSignLanguage: faSignLanguage,\n  faSignOutAlt: faSignOutAlt,\n  faSignal: faSignal,\n  faSignature: faSignature,\n  faSimCard: faSimCard,\n  faSink: faSink,\n  faSitemap: faSitemap,\n  faSkating: faSkating,\n  faSkiing: faSkiing,\n  faSkiingNordic: faSkiingNordic,\n  faSkull: faSkull,\n  faSkullCrossbones: faSkullCrossbones,\n  faSlash: faSlash,\n  faSleigh: faSleigh,\n  faSlidersH: faSlidersH,\n  faSmile: faSmile,\n  faSmileBeam: faSmileBeam,\n  faSmileWink: faSmileWink,\n  faSmog: faSmog,\n  faSmoking: faSmoking,\n  faSmokingBan: faSmokingBan,\n  faSms: faSms,\n  faSnowboarding: faSnowboarding,\n  faSnowflake: faSnowflake,\n  faSnowman: faSnowman,\n  faSnowplow: faSnowplow,\n  faSoap: faSoap,\n  faSocks: faSocks,\n  faSolarPanel: faSolarPanel,\n  faSort: faSort,\n  faSortAlphaDown: faSortAlphaDown,\n  faSortAlphaDownAlt: faSortAlphaDownAlt,\n  faSortAlphaUp: faSortAlphaUp,\n  faSortAlphaUpAlt: faSortAlphaUpAlt,\n  faSortAmountDown: faSortAmountDown,\n  faSortAmountDownAlt: faSortAmountDownAlt,\n  faSortAmountUp: faSortAmountUp,\n  faSortAmountUpAlt: faSortAmountUpAlt,\n  faSortDown: faSortDown,\n  faSortNumericDown: faSortNumericDown,\n  faSortNumericDownAlt: faSortNumericDownAlt,\n  faSortNumericUp: faSortNumericUp,\n  faSortNumericUpAlt: faSortNumericUpAlt,\n  faSortUp: faSortUp,\n  faSpa: faSpa,\n  faSpaceShuttle: faSpaceShuttle,\n  faSpellCheck: faSpellCheck,\n  faSpider: faSpider,\n  faSpinner: faSpinner,\n  faSplotch: faSplotch,\n  faSprayCan: faSprayCan,\n  faSquare: faSquare,\n  faSquareFull: faSquareFull,\n  faSquareRootAlt: faSquareRootAlt,\n  faStamp: faStamp,\n  faStar: faStar,\n  faStarAndCrescent: faStarAndCrescent,\n  faStarHalf: faStarHalf,\n  faStarHalfAlt: faStarHalfAlt,\n  faStarOfDavid: faStarOfDavid,\n  faStarOfLife: faStarOfLife,\n  faStepBackward: faStepBackward,\n  faStepForward: faStepForward,\n  faStethoscope: faStethoscope,\n  faStickyNote: faStickyNote,\n  faStop: faStop,\n  faStopCircle: faStopCircle,\n  faStopwatch: faStopwatch,\n  faStopwatch20: faStopwatch20,\n  faStore: faStore,\n  faStoreAlt: faStoreAlt,\n  faStoreAltSlash: faStoreAltSlash,\n  faStoreSlash: faStoreSlash,\n  faStream: faStream,\n  faStreetView: faStreetView,\n  faStrikethrough: faStrikethrough,\n  faStroopwafel: faStroopwafel,\n  faSubscript: faSubscript,\n  faSubway: faSubway,\n  faSuitcase: faSuitcase,\n  faSuitcaseRolling: faSuitcaseRolling,\n  faSun: faSun,\n  faSuperscript: faSuperscript,\n  faSurprise: faSurprise,\n  faSwatchbook: faSwatchbook,\n  faSwimmer: faSwimmer,\n  faSwimmingPool: faSwimmingPool,\n  faSynagogue: faSynagogue,\n  faSync: faSync,\n  faSyncAlt: faSyncAlt,\n  faSyringe: faSyringe,\n  faTable: faTable,\n  faTableTennis: faTableTennis,\n  faTablet: faTablet,\n  faTabletAlt: faTabletAlt,\n  faTablets: faTablets,\n  faTachometerAlt: faTachometerAlt,\n  faTag: faTag,\n  faTags: faTags,\n  faTape: faTape,\n  faTasks: faTasks,\n  faTaxi: faTaxi,\n  faTeeth: faTeeth,\n  faTeethOpen: faTeethOpen,\n  faTemperatureHigh: faTemperatureHigh,\n  faTemperatureLow: faTemperatureLow,\n  faTenge: faTenge,\n  faTerminal: faTerminal,\n  faTextHeight: faTextHeight,\n  faTextWidth: faTextWidth,\n  faTh: faTh,\n  faThLarge: faThLarge,\n  faThList: faThList,\n  faTheaterMasks: faTheaterMasks,\n  faThermometer: faThermometer,\n  faThermometerEmpty: faThermometerEmpty,\n  faThermometerFull: faThermometerFull,\n  faThermometerHalf: faThermometerHalf,\n  faThermometerQuarter: faThermometerQuarter,\n  faThermometerThreeQuarters: faThermometerThreeQuarters,\n  faThumbsDown: faThumbsDown,\n  faThumbsUp: faThumbsUp,\n  faThumbtack: faThumbtack,\n  faTicketAlt: faTicketAlt,\n  faTimes: faTimes,\n  faTimesCircle: faTimesCircle,\n  faTint: faTint,\n  faTintSlash: faTintSlash,\n  faTired: faTired,\n  faToggleOff: faToggleOff,\n  faToggleOn: faToggleOn,\n  faToilet: faToilet,\n  faToiletPaper: faToiletPaper,\n  faToiletPaperSlash: faToiletPaperSlash,\n  faToolbox: faToolbox,\n  faTools: faTools,\n  faTooth: faTooth,\n  faTorah: faTorah,\n  faToriiGate: faToriiGate,\n  faTractor: faTractor,\n  faTrademark: faTrademark,\n  faTrafficLight: faTrafficLight,\n  faTrailer: faTrailer,\n  faTrain: faTrain,\n  faTram: faTram,\n  faTransgender: faTransgender,\n  faTransgenderAlt: faTransgenderAlt,\n  faTrash: faTrash,\n  faTrashAlt: faTrashAlt,\n  faTrashRestore: faTrashRestore,\n  faTrashRestoreAlt: faTrashRestoreAlt,\n  faTree: faTree,\n  faTrophy: faTrophy,\n  faTruck: faTruck,\n  faTruckLoading: faTruckLoading,\n  faTruckMonster: faTruckMonster,\n  faTruckMoving: faTruckMoving,\n  faTruckPickup: faTruckPickup,\n  faTshirt: faTshirt,\n  faTty: faTty,\n  faTv: faTv,\n  faUmbrella: faUmbrella,\n  faUmbrellaBeach: faUmbrellaBeach,\n  faUnderline: faUnderline,\n  faUndo: faUndo,\n  faUndoAlt: faUndoAlt,\n  faUniversalAccess: faUniversalAccess,\n  faUniversity: faUniversity,\n  faUnlink: faUnlink,\n  faUnlock: faUnlock,\n  faUnlockAlt: faUnlockAlt,\n  faUpload: faUpload,\n  faUser: faUser,\n  faUserAlt: faUserAlt,\n  faUserAltSlash: faUserAltSlash,\n  faUserAstronaut: faUserAstronaut,\n  faUserCheck: faUserCheck,\n  faUserCircle: faUserCircle,\n  faUserClock: faUserClock,\n  faUserCog: faUserCog,\n  faUserEdit: faUserEdit,\n  faUserFriends: faUserFriends,\n  faUserGraduate: faUserGraduate,\n  faUserInjured: faUserInjured,\n  faUserLock: faUserLock,\n  faUserMd: faUserMd,\n  faUserMinus: faUserMinus,\n  faUserNinja: faUserNinja,\n  faUserNurse: faUserNurse,\n  faUserPlus: faUserPlus,\n  faUserSecret: faUserSecret,\n  faUserShield: faUserShield,\n  faUserSlash: faUserSlash,\n  faUserTag: faUserTag,\n  faUserTie: faUserTie,\n  faUserTimes: faUserTimes,\n  faUsers: faUsers,\n  faUsersCog: faUsersCog,\n  faUsersSlash: faUsersSlash,\n  faUtensilSpoon: faUtensilSpoon,\n  faUtensils: faUtensils,\n  faVectorSquare: faVectorSquare,\n  faVenus: faVenus,\n  faVenusDouble: faVenusDouble,\n  faVenusMars: faVenusMars,\n  faVest: faVest,\n  faVestPatches: faVestPatches,\n  faVial: faVial,\n  faVials: faVials,\n  faVideo: faVideo,\n  faVideoSlash: faVideoSlash,\n  faVihara: faVihara,\n  faVirus: faVirus,\n  faVirusSlash: faVirusSlash,\n  faViruses: faViruses,\n  faVoicemail: faVoicemail,\n  faVolleyballBall: faVolleyballBall,\n  faVolumeDown: faVolumeDown,\n  faVolumeMute: faVolumeMute,\n  faVolumeOff: faVolumeOff,\n  faVolumeUp: faVolumeUp,\n  faVoteYea: faVoteYea,\n  faVrCardboard: faVrCardboard,\n  faWalking: faWalking,\n  faWallet: faWallet,\n  faWarehouse: faWarehouse,\n  faWater: faWater,\n  faWaveSquare: faWaveSquare,\n  faWeight: faWeight,\n  faWeightHanging: faWeightHanging,\n  faWheelchair: faWheelchair,\n  faWifi: faWifi,\n  faWind: faWind,\n  faWindowClose: faWindowClose,\n  faWindowMaximize: faWindowMaximize,\n  faWindowMinimize: faWindowMinimize,\n  faWindowRestore: faWindowRestore,\n  faWineBottle: faWineBottle,\n  faWineGlass: faWineGlass,\n  faWineGlassAlt: faWineGlassAlt,\n  faWonSign: faWonSign,\n  faWrench: faWrench,\n  faXRay: faXRay,\n  faYenSign: faYenSign,\n  faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\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","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  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}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { isString, isUndefined, strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n    var supported = false;\r\n    if (theClass) {\r\n        try {\r\n            supported = property in theClass;\r\n            if (!supported) {\r\n                var proto = theClass[strShimPrototype];\r\n                if (proto) {\r\n                    supported = property in proto;\r\n                }\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Do Nothing\r\n        }\r\n        if (!supported) {\r\n            try {\r\n                var tmp = new theClass();\r\n                supported = !isUndefined(tmp[property]);\r\n            }\r\n            catch (e) {\r\n                // Do Nothing\r\n            }\r\n        }\r\n    }\r\n    return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n    _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n    var gbl = getGlobal();\r\n    if (gbl && gbl[name]) {\r\n        return gbl[name];\r\n    }\r\n    // Test workaround, for environments where <global>.window (when global == window) doesn't return the base window\r\n    if (name === strWindow && hasWindow()) {\r\n        // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n        return window;\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n    return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n    if (hasWindow()) {\r\n        return window;\r\n    }\r\n    // Return the global instance or null\r\n    return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n    return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n    if (hasDocument()) {\r\n        return document;\r\n    }\r\n    return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n    return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n    if (hasNavigator()) {\r\n        return navigator;\r\n    }\r\n    return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n    return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n    if (hasHistory()) {\r\n        return history;\r\n    }\r\n    return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n    if (checkForMock && _enableMocks) {\r\n        var mockLocation = getGlobalInst(\"__mockLocation\");\r\n        if (mockLocation) {\r\n            return mockLocation;\r\n        }\r\n    }\r\n    if (typeof location === strShimObject && location) {\r\n        return location;\r\n    }\r\n    return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n    if (typeof console !== strShimUndefined) {\r\n        return console;\r\n    }\r\n    return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n    return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n    return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n    if (hasJSON()) {\r\n        return JSON || getGlobalInst(strJSON);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n    return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n    return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n    // If running in React Native, navigator.product will be populated\r\n    var nav = getNavigator();\r\n    if (nav && nav.product) {\r\n        return nav.product === strReactNative;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n    var nav = getNavigator();\r\n    if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n        // Added to support test mocking of the user agent\r\n        _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n        var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n        _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n    }\r\n    return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n    if (userAgentStr === void 0) { userAgentStr = null; }\r\n    if (!userAgentStr) {\r\n        var navigator_1 = getNavigator() || {};\r\n        userAgentStr = navigator_1 ? (navigator_1[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n    }\r\n    var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n    // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n    if (strContains(ua, strMsie)) {\r\n        var doc = getDocument() || {};\r\n        return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n    }\r\n    else if (strContains(ua, strTrident)) {\r\n        var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n        if (tridentVer) {\r\n            return tridentVer + 4;\r\n        }\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n    var objectTypeDump = Object[strShimPrototype].toString[_DYN_CALL /* @min:%2ecall */](object);\r\n    var propertyValueDump = STR_EMPTY;\r\n    if (objectTypeDump === \"[object Error]\") {\r\n        propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object[_DYN_NAME /* @min:%2ename */] + \"'\";\r\n    }\r\n    else if (hasJSON()) {\r\n        propertyValueDump = getJSON().stringify(object);\r\n    }\r\n    return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n    if (!userAgentStr || !isString(userAgentStr)) {\r\n        var navigator_2 = getNavigator() || {};\r\n        userAgentStr = navigator_2 ? (navigator_2[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n    }\r\n    var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n    return (ua[_DYN_INDEX_OF /* @min:%2eindexOf */](\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n    if (_beaconsSupported === null) {\r\n        _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n    }\r\n    return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n    var isSupported = false;\r\n    try {\r\n        isSupported = !!getGlobalInst(\"fetch\");\r\n        var request = getGlobalInst(\"Request\");\r\n        if (isSupported && withKeepAlive && request) {\r\n            isSupported = _hasProperty(request, \"keepalive\");\r\n        }\r\n    }\r\n    catch (e) {\r\n        // Just Swallow any failure during availability checks\r\n    }\r\n    return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n    if (_useXDomainRequest === null) {\r\n        _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n        if (_useXDomainRequest && isXhrSupported()) {\r\n            _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n        }\r\n    }\r\n    return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n    var isSupported = false;\r\n    try {\r\n        var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n        isSupported = !!xmlHttpRequest;\r\n    }\r\n    catch (e) {\r\n        // Just Swallow any failure during availability checks\r\n    }\r\n    return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n    if (values) {\r\n        for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            var value = values[i];\r\n            if (value[_DYN_NAME /* @min:%2ename */]) {\r\n                if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n                    return value;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n    var doc = getDocument();\r\n    if (doc && name) {\r\n        // Look for a meta-tag\r\n        return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n    var value;\r\n    var perf = getPerformance();\r\n    if (perf) {\r\n        // Try looking for a server-timing header\r\n        var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n        value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n    }\r\n    return value;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","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 superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get.bind();\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n      return desc.value;\n    };\n  }\n  return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n  return object;\n}","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","/*\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    entropyNotProvided: {\n        code: \"entropy_not_provided\",\n        desc: \"The available browser crypto interface requires entropy set via system.cryptoOptions.entropy configuration option.\"\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     * Creates an error thrown when a crypto interface that requires entropy is initialized without entropy\n     */\n    static createEntropyNotProvided(): BrowserConfigurationAuthError {\n        return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.entropyNotProvided.code, BrowserConfigurationAuthErrorMessage.entropyNotProvided.desc);\n    }\n}\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}","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","if (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/react-table.production.min.js')\n} else {\n  module.exports = require('./dist/react-table.development.js')\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 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 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","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_DIAG_LOG, _DYN_ENABLE_DEBUG_EXCEPTI4, _DYN_LOGGER, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { dumpObj, getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { getCfgValue, isFunction, isUndefined } from \"./HelperFuncs\";\r\nimport { STR_EMPTY, STR_ERROR_TO_CONSOLE, STR_WARN_TO_CONSOLE } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n *  Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n    if (text) {\r\n        return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n    }\r\n    return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n    var theConsole = getConsole();\r\n    if (!!theConsole) {\r\n        var logFunc = \"log\";\r\n        if (theConsole[func]) {\r\n            logFunc = func;\r\n        }\r\n        if (isFunction(theConsole[logFunc])) {\r\n            theConsole[logFunc](message);\r\n        }\r\n    }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n    function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n        if (isUserAct === void 0) { isUserAct = false; }\r\n        var _self = this;\r\n        _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n        _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n            (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n                msgId;\r\n        var strProps = STR_EMPTY;\r\n        if (hasJSON()) {\r\n            strProps = getJSON().stringify(properties);\r\n        }\r\n        var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n            (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n        _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n    }\r\n    _InternalLogMessage.dataType = \"MessageData\";\r\n    return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n    return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n    function DiagnosticLogger(config) {\r\n        this.identifier = \"DiagnosticLogger\";\r\n        /**\r\n         * The internal logging queue\r\n         */\r\n        this.queue = [];\r\n        /**\r\n         * Count of internal messages sent\r\n         */\r\n        var _messageCount = 0;\r\n        /**\r\n         * Holds information about what message types were already logged to console or sent to server.\r\n         */\r\n        var _messageLogged = {};\r\n        var _loggingLevelConsole;\r\n        var _loggingLevelTelemetry;\r\n        var _maxInternalMessageLimit;\r\n        var _enableDebugExceptions;\r\n        dynamicProto(DiagnosticLogger, this, function (_self) {\r\n            _setDefaultsFromConfig(config || {});\r\n            _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n            _self.telemetryLoggingLevel = function () { return _loggingLevelTelemetry; };\r\n            _self.maxInternalMessageLimit = function () { return _maxInternalMessageLimit; };\r\n            _self[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */] = function () { return _enableDebugExceptions; };\r\n            /**\r\n             * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n             * @param severity {LoggingSeverity} - The severity of the log message\r\n             * @param message {_InternalLogMessage} - The log message.\r\n             */\r\n            _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n                if (isUserAct === void 0) { isUserAct = false; }\r\n                var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n                if (_enableDebugExceptions) {\r\n                    throw dumpObj(message);\r\n                }\r\n                else {\r\n                    // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n                    var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? STR_ERROR_TO_CONSOLE : STR_WARN_TO_CONSOLE;\r\n                    if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n                        if (isUserAct) {\r\n                            // check if this message type was already logged to console for this page view and if so, don't log it again\r\n                            var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n                            if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n                                _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n                                _messageLogged[messageKey] = true;\r\n                            }\r\n                        }\r\n                        else {\r\n                            // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n                            if (_loggingLevelConsole >= severity) {\r\n                                _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n                            }\r\n                        }\r\n                        _logInternalMessage(severity, message);\r\n                    }\r\n                    else {\r\n                        _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n                    }\r\n                }\r\n            };\r\n            /**\r\n             * This will write a warning to the console if possible\r\n             * @param message {string} - The warning message\r\n             */\r\n            _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n                _logToConsole(\"warn\", message);\r\n                _debugExtMsg(\"warning\", message);\r\n            };\r\n            /**\r\n             * This will write an error to the console if possible\r\n             * @param message {string} - The error message\r\n             */\r\n            _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */] = function (message) {\r\n                _logToConsole(\"error\", message);\r\n                _debugExtMsg(\"error\", message);\r\n            };\r\n            /**\r\n             * Resets the internal message count\r\n             */\r\n            _self.resetInternalMessageCount = function () {\r\n                _messageCount = 0;\r\n                _messageLogged = {};\r\n            };\r\n            /**\r\n             * Logs a message to the internal queue.\r\n             * @param severity {LoggingSeverity} - The severity of the log message\r\n             * @param message {_InternalLogMessage} - The message to log.\r\n             */\r\n            _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n            function _logInternalMessage(severity, message) {\r\n                if (_areInternalMessagesThrottled()) {\r\n                    return;\r\n                }\r\n                // check if this message type was already logged for this session and if so, don't log it again\r\n                var logMessage = true;\r\n                var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n                // if the session storage is not available, limit to only one message type per page view\r\n                if (_messageLogged[messageKey]) {\r\n                    logMessage = false;\r\n                }\r\n                else {\r\n                    _messageLogged[messageKey] = true;\r\n                }\r\n                if (logMessage) {\r\n                    // Push the event in the internal queue\r\n                    if (severity <= _loggingLevelTelemetry) {\r\n                        _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n                        _messageCount++;\r\n                        _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n                    }\r\n                    // When throttle limit reached, send a special event\r\n                    if (_messageCount === _maxInternalMessageLimit) {\r\n                        var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n                        var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n                        _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n                        if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n                            _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */](throttleLimitMessage);\r\n                        }\r\n                        else {\r\n                            _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            function _setDefaultsFromConfig(config) {\r\n                _loggingLevelConsole = getCfgValue(config.loggingLevelConsole, 0);\r\n                _loggingLevelTelemetry = getCfgValue(config.loggingLevelTelemetry, 1);\r\n                _maxInternalMessageLimit = getCfgValue(config.maxMessageLimit, 25);\r\n                _enableDebugExceptions = getCfgValue(config[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */], false);\r\n            }\r\n            function _areInternalMessagesThrottled() {\r\n                return _messageCount >= _maxInternalMessageLimit;\r\n            }\r\n            function _debugExtMsg(name, data) {\r\n                var dbgExt = getDebugExt(config || {});\r\n                if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n                    dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    /**\r\n     * When this is true the SDK will throw exceptions to aid in debugging.\r\n     */\r\n    DiagnosticLogger.prototype.enableDebugExceptions = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return false;\r\n    };\r\n    /**\r\n     * 0: OFF (default)\r\n     * 1: CRITICAL\r\n     * 2: >= WARNING\r\n     */\r\n    DiagnosticLogger.prototype.consoleLoggingLevel = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 0;\r\n    };\r\n    /**\r\n     * 0: OFF\r\n     * 1: CRITICAL (default)\r\n     * 2: >= WARNING\r\n     */\r\n    DiagnosticLogger.prototype.telemetryLoggingLevel = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 1;\r\n    };\r\n    /**\r\n     * The maximum number of internal messages allowed to be sent per page view\r\n     */\r\n    DiagnosticLogger.prototype.maxInternalMessageLimit = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 25;\r\n    };\r\n    /**\r\n     * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n     * @param severity {LoggingSeverity} - The severity of the log message\r\n     * @param message {_InternalLogMessage} - The log message.\r\n     */\r\n    DiagnosticLogger.prototype.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n        if (isUserAct === void 0) { isUserAct = false; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * This will write a warning to the console if possible\r\n     * @param message {string} - The warning message\r\n     */\r\n    DiagnosticLogger.prototype.warnToConsole = function (message) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * This will write an error to the console if possible\r\n     * @param message {string} - The warning message\r\n     */\r\n    DiagnosticLogger.prototype.errorToConsole = function (message) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Resets the internal message count\r\n     */\r\n    DiagnosticLogger.prototype.resetInternalMessageCount = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Logs a message to the internal queue.\r\n     * @param severity {LoggingSeverity} - The severity of the log message\r\n     * @param message {_InternalLogMessage} - The message to log.\r\n     */\r\n    DiagnosticLogger.prototype.logInternalMessage = function (severity, message) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n    return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n    if (isUserAct === void 0) { isUserAct = false; }\r\n    _getLogger(logger).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n    _getLogger(logger)[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n    _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n//# sourceMappingURL=DiagnosticLogger.js.map","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\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}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n    while (proxy) {\r\n        if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n            return proxy;\r\n        }\r\n        proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n    }\r\n    // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n    return createTelemetryProxyChain([startAt], core[_DYN_CONFIG /* @min:%2econfig */] || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n    // We have a special case where we want to start execution from this specific plugin\r\n    // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n    var _nextProxy = null; // By Default set as no next plugin\r\n    var _onComplete = [];\r\n    if (startAt !== null) {\r\n        // There is no next element (null) vs not defined (undefined) so use the full chain\r\n        _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n    }\r\n    var context = {\r\n        _next: _moveNext,\r\n        ctx: {\r\n            core: function () {\r\n                return core;\r\n            },\r\n            diagLog: function () {\r\n                return safeGetLogger(core, config);\r\n            },\r\n            getCfg: function () {\r\n                return config;\r\n            },\r\n            getExtCfg: _getExtCfg,\r\n            getConfig: _getConfig,\r\n            hasNext: function () {\r\n                return !!_nextProxy;\r\n            },\r\n            getNext: function () {\r\n                return _nextProxy;\r\n            },\r\n            setNext: function (nextPlugin) {\r\n                _nextProxy = nextPlugin;\r\n            },\r\n            iterate: _iterateChain,\r\n            onComplete: _addOnComplete\r\n        }\r\n    };\r\n    function _addOnComplete(onComplete, that) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        if (onComplete) {\r\n            _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n                func: onComplete,\r\n                self: !isUndefined(that) ? that : context.ctx,\r\n                args: args\r\n            });\r\n        }\r\n    }\r\n    function _moveNext() {\r\n        var nextProxy = _nextProxy;\r\n        // Automatically move to the next plugin\r\n        _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n        if (!nextProxy) {\r\n            var onComplete = _onComplete;\r\n            if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                arrForEach(onComplete, function (completeDetails) {\r\n                    try {\r\n                        completeDetails.func[_DYN_CALL /* @min:%2ecall */](completeDetails.self, completeDetails.args);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n                    }\r\n                });\r\n                _onComplete = [];\r\n            }\r\n        }\r\n        return nextProxy;\r\n    }\r\n    function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n        if (defaultValue === void 0) { defaultValue = {}; }\r\n        if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n        var theConfig;\r\n        if (config) {\r\n            var extConfig = config[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n            if (extConfig && identifier) {\r\n                theConfig = extConfig[identifier];\r\n            }\r\n        }\r\n        if (!theConfig) {\r\n            // Just use the defaults\r\n            theConfig = defaultValue;\r\n        }\r\n        else if (isObject(defaultValue)) {\r\n            if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n                // Merge the defaults and configured values\r\n                var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n                if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n                    // Enumerate over the defaultValues and if not already populated attempt to\r\n                    // find a value from the root config\r\n                    objForEachKey(defaultValue, function (field) {\r\n                        // for each unspecified field, set the default value\r\n                        if (isNullOrUndefined(newConfig_1[field])) {\r\n                            var cfgValue = config[field];\r\n                            if (!isNullOrUndefined(cfgValue)) {\r\n                                newConfig_1[field] = cfgValue;\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n                theConfig = newConfig_1;\r\n            }\r\n        }\r\n        return theConfig;\r\n    }\r\n    function _getConfig(identifier, field, defaultValue) {\r\n        if (defaultValue === void 0) { defaultValue = false; }\r\n        var theValue;\r\n        var extConfig = _getExtCfg(identifier, null);\r\n        if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n            theValue = extConfig[field];\r\n        }\r\n        else if (config && !isNullOrUndefined(config[field])) {\r\n            theValue = config[field];\r\n        }\r\n        return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n    }\r\n    function _iterateChain(cb) {\r\n        // Keep processing until we reach the end of the chain\r\n        var nextPlugin;\r\n        while (!!(nextPlugin = context._next())) {\r\n            var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n            if (plugin) {\r\n                // callback with the current on\r\n                cb(plugin);\r\n            }\r\n        }\r\n    }\r\n    return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n    var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n    var context = internalContext.ctx;\r\n    function _processNext(env) {\r\n        var nextPlugin = internalContext._next();\r\n        // Run the next plugin which will call \"processNext()\"\r\n        nextPlugin && nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n        return !nextPlugin;\r\n    }\r\n    function _createNew(plugins, startAt) {\r\n        if (plugins === void 0) { plugins = null; }\r\n        if (isArray(plugins)) {\r\n            plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n        }\r\n        return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config, core, startAt);\r\n    }\r\n    context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n    context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n    return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n    var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n    var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n    var context = internalContext.ctx;\r\n    function _processNext(unloadState) {\r\n        var nextPlugin = internalContext._next();\r\n        nextPlugin && nextPlugin.unload(context, unloadState);\r\n        return !nextPlugin;\r\n    }\r\n    function _createNew(plugins, startAt) {\r\n        if (plugins === void 0) { plugins = null; }\r\n        if (isArray(plugins)) {\r\n            plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n        }\r\n        return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n    }\r\n    context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n    context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n    return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n    var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n    var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n    var context = internalContext.ctx;\r\n    function _processNext(updateState) {\r\n        return context.iterate(function (plugin) {\r\n            if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n                plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n            }\r\n        });\r\n    }\r\n    function _createNew(plugins, startAt) {\r\n        if (plugins === void 0) { plugins = null; }\r\n        if (isArray(plugins)) {\r\n            plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n        }\r\n        return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n    }\r\n    context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n    context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n    return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n    var firstProxy = null;\r\n    var add = startAt ? false : true;\r\n    if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        // Create the proxies and wire up the next plugin chain\r\n        var lastProxy_1 = null;\r\n        arrForEach(plugins, function (thePlugin) {\r\n            if (!add && startAt === thePlugin) {\r\n                add = true;\r\n            }\r\n            if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n                // Only add plugins that are processors\r\n                var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n                if (!firstProxy) {\r\n                    firstProxy = newProxy;\r\n                }\r\n                if (lastProxy_1) {\r\n                    // Set this new proxy as the next for the previous one\r\n                    lastProxy_1._setNext(newProxy);\r\n                }\r\n                lastProxy_1 = newProxy;\r\n            }\r\n        });\r\n    }\r\n    if (startAt && !firstProxy) {\r\n        // Special case where the \"startAt\" was not in the original list of plugins\r\n        return createTelemetryProxyChain([startAt], config, core);\r\n    }\r\n    return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n    var nextProxy = null;\r\n    var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n    var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n    var chainId;\r\n    if (plugin) {\r\n        chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n    }\r\n    else {\r\n        chainId = \"Unknown-0-\" + _chainId++;\r\n    }\r\n    var proxyChain = {\r\n        getPlugin: function () {\r\n            return plugin;\r\n        },\r\n        getNext: function () {\r\n            return nextProxy;\r\n        },\r\n        processTelemetry: _processTelemetry,\r\n        unload: _unloadPlugin,\r\n        update: _updatePlugin,\r\n        _id: chainId,\r\n        _setNext: function (nextPlugin) {\r\n            nextProxy = nextPlugin;\r\n        }\r\n    };\r\n    function _getTelCtx() {\r\n        var itemCtx;\r\n        // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n        if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n            // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n            itemCtx = plugin[strGetTelCtx]();\r\n        }\r\n        if (!itemCtx) {\r\n            // Create a temporary one\r\n            itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n        }\r\n        return itemCtx;\r\n    }\r\n    function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n        var hasRun = false;\r\n        var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n        var hasRunContext = itemCtx[strHasRunFlags];\r\n        if (!hasRunContext) {\r\n            // Assign and populate\r\n            hasRunContext = itemCtx[strHasRunFlags] = {};\r\n        }\r\n        // Ensure that we keep the context in sync\r\n        itemCtx.setNext(nextProxy);\r\n        if (plugin) {\r\n            doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n                // Mark this component as having run\r\n                hasRunContext[chainId] = true;\r\n                try {\r\n                    // Set a flag on the next plugin so we know if it was attempted to be executed\r\n                    var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n                    if (nextId) {\r\n                        hasRunContext[nextId] = false;\r\n                    }\r\n                    hasRun = processPluginFn(itemCtx);\r\n                }\r\n                catch (error) {\r\n                    var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n                    if (hasNextRun) {\r\n                        // The next plugin after us has already run so set this one as complete\r\n                        hasRun = true;\r\n                    }\r\n                    if (!nextProxy || !hasNextRun) {\r\n                        // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n                        // Which means the current one is the root of the failure so log/report this failure\r\n                        _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n                    }\r\n                }\r\n            }, details, isAsync);\r\n        }\r\n        return hasRun;\r\n    }\r\n    function _processTelemetry(env, itemCtx) {\r\n        itemCtx = itemCtx || _getTelCtx();\r\n        function _callProcessTelemetry(itemCtx) {\r\n            if (!plugin || !hasProcessTelemetry) {\r\n                return false;\r\n            }\r\n            var pluginState = _getPluginState(plugin);\r\n            if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n                return false;\r\n            }\r\n            // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n            // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n            // other form of error occurred\r\n            if (hasSetNext) {\r\n                // Backward compatibility setting the next plugin on the instance\r\n                plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n            }\r\n            plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n            // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n            return true;\r\n        }\r\n        if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n            // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n            // so we still want the next plugin to be executed.\r\n            itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n        }\r\n    }\r\n    function _unloadPlugin(unloadCtx, unloadState) {\r\n        function _callTeardown() {\r\n            // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n            var hasRun = false;\r\n            if (plugin) {\r\n                var pluginState = _getPluginState(plugin);\r\n                var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n                // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n                if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n                    // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n                    pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n                    pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n                    pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n                    if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n                        // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n                        hasRun = true;\r\n                    }\r\n                }\r\n            }\r\n            return hasRun;\r\n        }\r\n        if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n            // Only called if we hasRun was not true\r\n            unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n        }\r\n    }\r\n    function _updatePlugin(updateCtx, updateState) {\r\n        function _callUpdate() {\r\n            // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n            var hasRun = false;\r\n            if (plugin) {\r\n                var pluginState = _getPluginState(plugin);\r\n                var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n                // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n                if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n                    if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n                        // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n                        hasRun = true;\r\n                    }\r\n                }\r\n            }\r\n            return hasRun;\r\n        }\r\n        if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n            // Only called if we hasRun was not true\r\n            updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n        }\r\n    }\r\n    return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n    /**\r\n     * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n     * @param plugins - The plugin instances that will be executed\r\n     * @param config - The current config\r\n     * @param core - The current core instance\r\n     */\r\n    function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n        var _self = this;\r\n        var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n        // Proxy all functions of the context to this object\r\n        proxyFunctions(_self, context, objKeys(context));\r\n    }\r\n    return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","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","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","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\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 as ClientAuthError).message);\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","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 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 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 setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n    return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n    // Set the next plugin and identified the uninitialized plugins\r\n    var initPlugins = [];\r\n    var lastPlugin = null;\r\n    var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n    var pluginState;\r\n    while (proxy) {\r\n        var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n        if (thePlugin) {\r\n            if (lastPlugin &&\r\n                isFunction(lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]) &&\r\n                isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n                // Set this plugin as the next for the previous one\r\n                lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n            }\r\n            var isInitialized = false;\r\n            if (isFunction(thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */])) {\r\n                isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n            }\r\n            else {\r\n                pluginState = _getPluginState(thePlugin);\r\n                isInitialized = pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n            }\r\n            if (!isInitialized) {\r\n                initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n            }\r\n            lastPlugin = thePlugin;\r\n            proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n        }\r\n    }\r\n    // Now initialize the plugins\r\n    arrForEach(initPlugins, function (thePlugin) {\r\n        var core = processContext[STR_CORE]();\r\n        thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n        pluginState = _getPluginState(thePlugin);\r\n        // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n        if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n            pluginState[STR_CORE] = core;\r\n        }\r\n        pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n        delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n    });\r\n}\r\nexport function sortPlugins(plugins) {\r\n    // Sort by priority\r\n    return plugins.sort(function (extA, extB) {\r\n        var result = 0;\r\n        if (extB) {\r\n            var bHasProcess = isFunction(extB[STR_PROCESS_TELEMETRY]);\r\n            if (isFunction(extA[STR_PROCESS_TELEMETRY])) {\r\n                result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n            }\r\n            else if (bHasProcess) {\r\n                result = -1;\r\n            }\r\n        }\r\n        else {\r\n            result = extA ? 1 : -1;\r\n        }\r\n        return result;\r\n    });\r\n    // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n    var idx = 0;\r\n    function _doUnload() {\r\n        while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n            var component = components[idx++];\r\n            if (component) {\r\n                var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n                if (isFunction(func)) {\r\n                    if (func[_DYN_CALL /* @min:%2ecall */](component, unloadCtx, unloadState, _doUnload) === true) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n    var trace = {};\r\n    return {\r\n        getName: function () {\r\n            return trace[_DYN_NAME /* @min:%2ename */];\r\n        },\r\n        setName: function (newValue) {\r\n            parentCtx && parentCtx.setName(newValue);\r\n            trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n        },\r\n        getTraceId: function () {\r\n            return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n        },\r\n        setTraceId: function (newValue) {\r\n            parentCtx && parentCtx.setTraceId(newValue);\r\n            if (isValidTraceId(newValue)) {\r\n                trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n            }\r\n        },\r\n        getSpanId: function () {\r\n            return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n        },\r\n        setSpanId: function (newValue) {\r\n            parentCtx && parentCtx.setSpanId(newValue);\r\n            if (isValidSpanId(newValue)) {\r\n                trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n            }\r\n        },\r\n        getTraceFlags: function () {\r\n            return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n        },\r\n        setTraceFlags: function (newTraceFlags) {\r\n            parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n            trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n        }\r\n    };\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (toString.call(val) !== '[object Object]') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM\n};\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","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","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _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  return assertThisInitialized(self);\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    Dsts\n}\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}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export function warn() {\n  if (console && console.warn) {\n    var _console;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n    (_console = console).warn.apply(_console, args);\n  }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n  if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n  warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n  i18n.loadNamespaces(ns, function () {\n    if (i18n.isInitialized) {\n      cb();\n    } else {\n      var initialized = function initialized() {\n        setTimeout(function () {\n          i18n.off('initialized', initialized);\n        }, 0);\n        cb();\n      };\n\n      i18n.on('initialized', initialized);\n    }\n  });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var lng = i18n.languages[0];\n  var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n  var lastLng = i18n.languages[i18n.languages.length - 1];\n  if (lng.toLowerCase() === 'cimode') return true;\n\n  var loadNotPending = function loadNotPending(l, n) {\n    var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n    return loadState === -1 || loadState === 2;\n  };\n\n  if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n  if (i18n.hasResourceBundle(lng, ns)) return true;\n  if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n  if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n  return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce('i18n.languages were undefined or empty', i18n.languages);\n    return true;\n  }\n\n  var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n  if (!isNewerI18next) {\n    return oldI18nextHasLoadedNamespace(ns, i18n, options);\n  }\n\n  return i18n.hasLoadedNamespace(ns, {\n    precheck: function precheck(i18nInstance, loadNotPending) {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n}\nexport function getDisplayName(Component) {\n  return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n  return target;\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n  type: 'logger',\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\n\nvar Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Logger);\n\n    this.init(concreteLogger, options);\n  }\n\n  _createClass(Logger, [{\n    key: \"init\",\n    value: function init(concreteLogger) {\n      var 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  }, {\n    key: \"setDebug\",\n    value: function setDebug(bool) {\n      this.debug = bool;\n    }\n  }, {\n    key: \"log\",\n    value: function log() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.forward(args, 'log', '', true);\n    }\n  }, {\n    key: \"warn\",\n    value: function warn() {\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.forward(args, 'warn', '', true);\n    }\n  }, {\n    key: \"error\",\n    value: function error() {\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.forward(args, 'error', '');\n    }\n  }, {\n    key: \"deprecate\",\n    value: function deprecate() {\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.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n    }\n  }, {\n    key: \"forward\",\n    value: function forward(args, lvl, prefix, debugOnly) {\n      if (debugOnly && !this.debug) return null;\n      if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n      return this.logger[lvl](args);\n    }\n  }, {\n    key: \"create\",\n    value: function create(moduleName) {\n      return new Logger(this.logger, _objectSpread({}, {\n        prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n      }, this.options));\n    }\n  }]);\n\n  return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n  function EventEmitter() {\n    _classCallCheck(this, EventEmitter);\n\n    this.observers = {};\n  }\n\n  _createClass(EventEmitter, [{\n    key: \"on\",\n    value: function on(events, listener) {\n      var _this = this;\n\n      events.split(' ').forEach(function (event) {\n        _this.observers[event] = _this.observers[event] || [];\n\n        _this.observers[event].push(listener);\n      });\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(event, listener) {\n      if (!this.observers[event]) return;\n\n      if (!listener) {\n        delete this.observers[event];\n        return;\n      }\n\n      this.observers[event] = this.observers[event].filter(function (l) {\n        return l !== listener;\n      });\n    }\n  }, {\n    key: \"emit\",\n    value: function 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\n      if (this.observers[event]) {\n        var cloned = [].concat(this.observers[event]);\n        cloned.forEach(function (observer) {\n          observer.apply(void 0, args);\n        });\n      }\n\n      if (this.observers['*']) {\n        var _cloned = [].concat(this.observers['*']);\n\n        _cloned.forEach(function (observer) {\n          observer.apply(observer, [event].concat(args));\n        });\n      }\n    }\n  }]);\n\n  return EventEmitter;\n}();\n\nfunction defer() {\n  var res;\n  var rej;\n  var promise = new Promise(function (resolve, reject) {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n  }\n\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\n\nfunction setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath.obj,\n      k = _getLastOfPath.k;\n\n  obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath2.obj,\n      k = _getLastOfPath2.k;\n\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n      obj = _getLastOfPath3.obj,\n      k = _getLastOfPath3.k;\n\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  var value = getPath(data, key);\n\n  if (value !== undefined) {\n    return value;\n  }\n\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (var prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || 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\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n\n  return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nfunction deepFind(obj, path) {\n  var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  var paths = path.split(keySeparator);\n  var current = obj;\n\n  for (var i = 0; i < paths.length; ++i) {\n    if (!current) return undefined;\n\n    if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n      return undefined;\n    }\n\n    if (current[paths[i]] === undefined) {\n      var j = 2;\n      var p = paths.slice(i, i + j).join(keySeparator);\n      var mix = current[p];\n\n      while (mix === undefined && paths.length > i + j) {\n        j++;\n        p = paths.slice(i, i + j).join(keySeparator);\n        mix = current[p];\n      }\n\n      if (mix === undefined) return undefined;\n      if (typeof mix === 'string') return mix;\n      if (p && typeof mix[p] === 'string') return mix[p];\n      var joinedPath = paths.slice(i + j).join(keySeparator);\n      if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n      return undefined;\n    }\n\n    current = current[paths[i]];\n  }\n\n  return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n  _inherits(ResourceStore, _EventEmitter);\n\n  function ResourceStore(data) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n\n    _classCallCheck(this, ResourceStore);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.data = data || {};\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    if (_this.options.ignoreJSONStructure === undefined) {\n      _this.options.ignoreJSONStructure = true;\n    }\n\n    return _this;\n  }\n\n  _createClass(ResourceStore, [{\n    key: \"addNamespaces\",\n    value: function addNamespaces(ns) {\n      if (this.options.ns.indexOf(ns) < 0) {\n        this.options.ns.push(ns);\n      }\n    }\n  }, {\n    key: \"removeNamespaces\",\n    value: function removeNamespaces(ns) {\n      var index = this.options.ns.indexOf(ns);\n\n      if (index > -1) {\n        this.options.ns.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(lng, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n      var path = [lng, ns];\n      if (key && typeof key !== 'string') path = path.concat(key);\n      if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n      }\n\n      var result = getPath(this.data, path);\n      if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n      return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n    }\n  }, {\n    key: \"addResource\",\n    value: function addResource(lng, ns, key, value) {\n      var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n        silent: false\n      };\n      var keySeparator = this.options.keySeparator;\n      if (keySeparator === undefined) keySeparator = '.';\n      var path = [lng, ns];\n      if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        value = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      setPath(this.data, path, value);\n      if (!options.silent) this.emit('added', lng, ns, key, value);\n    }\n  }, {\n    key: \"addResources\",\n    value: function addResources(lng, ns, resources) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n        silent: false\n      };\n\n      for (var m in resources) {\n        if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n          silent: true\n        });\n      }\n\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"addResourceBundle\",\n    value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n        silent: false\n      };\n      var path = [lng, ns];\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        deep = resources;\n        resources = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      var pack = getPath(this.data, path) || {};\n\n      if (deep) {\n        deepExtend(pack, resources, overwrite);\n      } else {\n        pack = _objectSpread({}, pack, resources);\n      }\n\n      setPath(this.data, path, pack);\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"removeResourceBundle\",\n    value: function removeResourceBundle(lng, ns) {\n      if (this.hasResourceBundle(lng, ns)) {\n        delete this.data[lng][ns];\n      }\n\n      this.removeNamespaces(ns);\n      this.emit('removed', lng, ns);\n    }\n  }, {\n    key: \"hasResourceBundle\",\n    value: function hasResourceBundle(lng, ns) {\n      return this.getResource(lng, ns) !== undefined;\n    }\n  }, {\n    key: \"getResourceBundle\",\n    value: function getResourceBundle(lng, ns) {\n      if (!ns) ns = this.options.defaultNS;\n      if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n      return this.getResource(lng, ns);\n    }\n  }, {\n    key: \"getDataByLanguage\",\n    value: function getDataByLanguage(lng) {\n      return this.data[lng];\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.data;\n    }\n  }]);\n\n  return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n  _inherits(Translator, _EventEmitter);\n\n  function Translator(services) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Translator);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n\n  _createClass(Translator, [{\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng) {\n      if (lng) this.language = lng;\n    }\n  }, {\n    key: \"exists\",\n    value: function exists(key) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n\n      if (key === undefined || key === null) {\n        return false;\n      }\n\n      var resolved = this.resolve(key, options);\n      return resolved && resolved.res !== undefined;\n    }\n  }, {\n    key: \"extractFromKey\",\n    value: function extractFromKey(key, options) {\n      var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n      if (nsSeparator === undefined) nsSeparator = ':';\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var namespaces = options.ns || this.options.defaultNS;\n\n      if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n        var m = key.match(this.interpolator.nestingRegexp);\n\n        if (m && m.length > 0) {\n          return {\n            key: key,\n            namespaces: namespaces\n          };\n        }\n\n        var 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\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      return {\n        key: key,\n        namespaces: namespaces\n      };\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(keys, options, lastKey) {\n      var _this2 = this;\n\n      if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n        options = this.options.overloadTranslationOptionHandler(arguments);\n      }\n\n      if (!options) options = {};\n      if (keys === undefined || keys === null) return '';\n      if (!Array.isArray(keys)) keys = [String(keys)];\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n      var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n          key = _this$extractFromKey.key,\n          namespaces = _this$extractFromKey.namespaces;\n\n      var namespace = namespaces[namespaces.length - 1];\n      var lng = options.lng || this.language;\n      var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n      if (lng && lng.toLowerCase() === 'cimode') {\n        if (appendNamespaceToCIMode) {\n          var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n          return namespace + nsSeparator + key;\n        }\n\n        return key;\n      }\n\n      var resolved = this.resolve(keys, options);\n      var res = resolved && resolved.res;\n      var resUsedKey = resolved && resolved.usedKey || key;\n      var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n      var resType = Object.prototype.toString.apply(res);\n      var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n      var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n      var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n      var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n      if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\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\n          return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread({}, options, {\n            ns: namespaces\n          })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n        }\n\n        if (keySeparator) {\n          var resTypeIsArray = resType === '[object Array]';\n          var copy = resTypeIsArray ? [] : {};\n          var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n          for (var m in res) {\n            if (Object.prototype.hasOwnProperty.call(res, m)) {\n              var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n              copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n                joinArrays: false,\n                ns: namespaces\n              }));\n              if (copy[m] === deepKey) copy[m] = res[m];\n            }\n          }\n\n          res = copy;\n        }\n      } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n        res = res.join(joinArrays);\n        if (res) res = this.extendTranslation(res, keys, options, lastKey);\n      } else {\n        var usedDefault = false;\n        var usedKey = false;\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var hasDefaultValue = Translator.hasDefaultValue(options);\n        var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n        var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n        if (!this.isValidLookup(res) && hasDefaultValue) {\n          usedDefault = true;\n          res = defaultValue;\n        }\n\n        if (!this.isValidLookup(res)) {\n          usedKey = true;\n          res = key;\n        }\n\n        var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n        var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n        var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n        if (usedKey || usedDefault || updateMissing) {\n          this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n          if (keySeparator) {\n            var fk = this.resolve(key, _objectSpread({}, 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\n          var lngs = [];\n          var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n          if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n            for (var 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\n          var send = function send(l, k, fallbackValue) {\n            if (_this2.options.missingKeyHandler) {\n              _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : resForMissing, updateMissing, options);\n            } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n              _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : resForMissing, updateMissing, options);\n            }\n\n            _this2.emit('missingKey', l, namespace, k, res);\n          };\n\n          if (this.options.saveMissing) {\n            if (this.options.saveMissingPlurals && needsPluralHandling) {\n              lngs.forEach(function (language) {\n                _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n                  send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                });\n              });\n            } else {\n              send(lngs, key, defaultValue);\n            }\n          }\n        }\n\n        res = this.extendTranslation(res, keys, options, resolved, lastKey);\n        if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n        if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"extendTranslation\",\n    value: function extendTranslation(res, key, options, resolved, lastKey) {\n      var _this3 = this;\n\n      if (this.i18nFormat && this.i18nFormat.parse) {\n        res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n          resolved: resolved\n        });\n      } else if (!options.skipInterpolation) {\n        if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n          interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n        }));\n        var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n        var nestBef;\n\n        if (skipOnVariables) {\n          var nb = res.match(this.interpolator.nestingRegexp);\n          nestBef = nb && nb.length;\n        }\n\n        var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n        if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n        res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n        if (skipOnVariables) {\n          var na = res.match(this.interpolator.nestingRegexp);\n          var nestAft = na && na.length;\n          if (nestBef < nestAft) options.nest = false;\n        }\n\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\n          if (lastKey && lastKey[0] === args[0] && !options.context) {\n            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n            return null;\n          }\n\n          return _this3.translate.apply(_this3, args.concat([key]));\n        }, options);\n        if (options.interpolation) this.interpolator.reset();\n      }\n\n      var postProcess = options.postProcess || this.options.postProcess;\n      var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n      if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n        res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n          i18nResolved: resolved\n        }, options) : options, this);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"resolve\",\n    value: function resolve(keys) {\n      var _this4 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var found;\n      var usedKey;\n      var exactUsedKey;\n      var usedLng;\n      var usedNS;\n      if (typeof keys === 'string') keys = [keys];\n      keys.forEach(function (k) {\n        if (_this4.isValidLookup(found)) return;\n\n        var extracted = _this4.extractFromKey(k, options);\n\n        var key = extracted.key;\n        usedKey = key;\n        var namespaces = extracted.namespaces;\n        if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n        var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n        namespaces.forEach(function (ns) {\n          if (_this4.isValidLookup(found)) return;\n          usedNS = ns;\n\n          if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n            _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(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\n          codes.forEach(function (code) {\n            if (_this4.isValidLookup(found)) return;\n            usedLng = code;\n            var finalKey = key;\n            var finalKeys = [finalKey];\n\n            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n              _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n            } else {\n              var pluralSuffix;\n              if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n              if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n              if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n              if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n            }\n\n            var possibleKey;\n\n            while (possibleKey = finalKeys.pop()) {\n              if (!_this4.isValidLookup(found)) {\n                exactUsedKey = possibleKey;\n                found = _this4.getResource(code, ns, possibleKey, options);\n              }\n            }\n          });\n        });\n      });\n      return {\n        res: found,\n        usedKey: usedKey,\n        exactUsedKey: exactUsedKey,\n        usedLng: usedLng,\n        usedNS: usedNS\n      };\n    }\n  }, {\n    key: \"isValidLookup\",\n    value: function isValidLookup(res) {\n      return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(code, ns, key) {\n      var 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  }], [{\n    key: \"hasDefaultValue\",\n    value: function hasDefaultValue(options) {\n      var prefix = 'defaultValue';\n\n      for (var 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\n      return false;\n    }\n  }]);\n\n  return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n  function LanguageUtil(options) {\n    _classCallCheck(this, LanguageUtil);\n\n    this.options = options;\n    this.whitelist = this.options.supportedLngs || false;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n\n  _createClass(LanguageUtil, [{\n    key: \"getScriptPartFromCode\",\n    value: function getScriptPartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return null;\n      var 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  }, {\n    key: \"getLanguagePartFromCode\",\n    value: function getLanguagePartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return code;\n      var p = code.split('-');\n      return this.formatLanguageCode(p[0]);\n    }\n  }, {\n    key: \"formatLanguageCode\",\n    value: function formatLanguageCode(code) {\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n        var p = code.split('-');\n\n        if (this.options.lowerCaseLng) {\n          p = p.map(function (part) {\n            return part.toLowerCase();\n          });\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\n        return p.join('-');\n      }\n\n      return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n    }\n  }, {\n    key: \"isWhitelisted\",\n    value: function isWhitelisted(code) {\n      this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n      return this.isSupportedCode(code);\n    }\n  }, {\n    key: \"isSupportedCode\",\n    value: function isSupportedCode(code) {\n      if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n        code = this.getLanguagePartFromCode(code);\n      }\n\n      return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n    }\n  }, {\n    key: \"getBestMatchFromCodes\",\n    value: function getBestMatchFromCodes(codes) {\n      var _this = this;\n\n      if (!codes) return null;\n      var found;\n      codes.forEach(function (code) {\n        if (found) return;\n\n        var cleanedLng = _this.formatLanguageCode(code);\n\n        if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n      });\n\n      if (!found && this.options.supportedLngs) {\n        codes.forEach(function (code) {\n          if (found) return;\n\n          var lngOnly = _this.getLanguagePartFromCode(code);\n\n          if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n          found = _this.options.supportedLngs.find(function (supportedLng) {\n            if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n          });\n        });\n      }\n\n      if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n      return found;\n    }\n  }, {\n    key: \"getFallbackCodes\",\n    value: function getFallbackCodes(fallbacks, code) {\n      if (!fallbacks) return [];\n      if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n      if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n      if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n      if (!code) return fallbacks[\"default\"] || [];\n      var 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  }, {\n    key: \"toResolveHierarchy\",\n    value: function toResolveHierarchy(code, fallbackCode) {\n      var _this2 = this;\n\n      var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n      var codes = [];\n\n      var addCode = function addCode(c) {\n        if (!c) return;\n\n        if (_this2.isSupportedCode(c)) {\n          codes.push(c);\n        } else {\n          _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n        }\n      };\n\n      if (typeof code === 'string' && 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 (typeof code === 'string') {\n        addCode(this.formatLanguageCode(code));\n      }\n\n      fallbackCodes.forEach(function (fc) {\n        if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n      });\n      return codes;\n    }\n  }]);\n\n  return LanguageUtil;\n}();\n\nvar 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: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\n\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\n\nvar PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, PluralResolver);\n\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.rules = createRules();\n  }\n\n  _createClass(PluralResolver, [{\n    key: \"addRule\",\n    value: function addRule(lng, obj) {\n      this.rules[lng] = obj;\n    }\n  }, {\n    key: \"getRule\",\n    value: function getRule(code) {\n      return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n    }\n  }, {\n    key: \"needsPlural\",\n    value: function needsPlural(code) {\n      var rule = this.getRule(code);\n      return rule && rule.numbers.length > 1;\n    }\n  }, {\n    key: \"getPluralFormsOfKey\",\n    value: function getPluralFormsOfKey(code, key) {\n      return this.getSuffixes(code).map(function (suffix) {\n        return key + suffix;\n      });\n    }\n  }, {\n    key: \"getSuffixes\",\n    value: function getSuffixes(code) {\n      var _this = this;\n\n      var rule = this.getRule(code);\n\n      if (!rule) {\n        return [];\n      }\n\n      return rule.numbers.map(function (number) {\n        return _this.getSuffix(code, number);\n      });\n    }\n  }, {\n    key: \"getSuffix\",\n    value: function getSuffix(code, count) {\n      var _this2 = this;\n\n      var rule = this.getRule(code);\n\n      if (rule) {\n        var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n        var suffix = rule.numbers[idx];\n\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\n        var returnSuffix = function returnSuffix() {\n          return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n        };\n\n        if (this.options.compatibilityJSON === 'v1') {\n          if (suffix === 1) return '';\n          if (typeof suffix === 'number') return \"_plural_\".concat(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\n        return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n      }\n\n      this.logger.warn(\"no plural rule found for: \".concat(code));\n      return '';\n    }\n  }]);\n\n  return PluralResolver;\n}();\n\nvar Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Interpolator);\n\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n\n    this.format = options.interpolation && options.interpolation.format || function (value) {\n      return value;\n    };\n\n    this.init(options);\n  }\n\n  _createClass(Interpolator, [{\n    key: \"init\",\n    value: function init() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!options.interpolation) options.interpolation = {\n        escapeValue: true\n      };\n      var iOpts = options.interpolation;\n      this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n      this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n      this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n      this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n      this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n      this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n      this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n      this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n      this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n      this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n      this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n      this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n      this.resetRegExp();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.options) this.init(this.options);\n    }\n  }, {\n    key: \"resetRegExp\",\n    value: function resetRegExp() {\n      var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n      this.regexp = new RegExp(regexpStr, 'g');\n      var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n      this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n      var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n      this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate(str, data, lng, options) {\n      var _this = this;\n\n      var match;\n      var value;\n      var replaces;\n      var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n      function regexSafe(val) {\n        return val.replace(/\\$/g, '$$$$');\n      }\n\n      var handleFormat = function handleFormat(key) {\n        if (key.indexOf(_this.formatSeparator) < 0) {\n          var path = getPathWithDefaults(data, defaultData, key);\n          return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread({}, options, data, {\n            interpolationkey: key\n          })) : path;\n        }\n\n        var p = key.split(_this.formatSeparator);\n        var k = p.shift().trim();\n        var f = p.join(_this.formatSeparator).trim();\n        return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread({}, options, data, {\n          interpolationkey: k\n        }));\n      };\n\n      this.resetRegExp();\n      var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n      var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n      var todos = [{\n        regex: this.regexpUnescape,\n        safeValue: function safeValue(val) {\n          return regexSafe(val);\n        }\n      }, {\n        regex: this.regexp,\n        safeValue: function safeValue(val) {\n          return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n        }\n      }];\n      todos.forEach(function (todo) {\n        replaces = 0;\n\n        while (match = todo.regex.exec(str)) {\n          value = handleFormat(match[1].trim());\n\n          if (value === undefined) {\n            if (typeof missingInterpolationHandler === 'function') {\n              var temp = missingInterpolationHandler(str, match, options);\n              value = typeof temp === 'string' ? temp : '';\n            } else if (skipOnVariables) {\n              value = match[0];\n              continue;\n            } else {\n              _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n              value = '';\n            }\n          } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n            value = makeString(value);\n          }\n\n          var safeValue = todo.safeValue(value);\n          str = str.replace(match[0], safeValue);\n\n          if (skipOnVariables) {\n            todo.regex.lastIndex += safeValue.length;\n            todo.regex.lastIndex -= match[0].length;\n          } else {\n            todo.regex.lastIndex = 0;\n          }\n\n          replaces++;\n\n          if (replaces >= _this.maxReplaces) {\n            break;\n          }\n        }\n      });\n      return str;\n    }\n  }, {\n    key: \"nest\",\n    value: function nest(str, fc) {\n      var _this2 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var match;\n      var value;\n\n      var clonedOptions = _objectSpread({}, options);\n\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n\n      function handleHasOptions(key, inheritedOptions) {\n        var sep = this.nestingOptionsSeparator;\n        if (key.indexOf(sep) < 0) return key;\n        var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n        var optionsString = \"{\".concat(c[1]);\n        key = c[0];\n        optionsString = this.interpolate(optionsString, clonedOptions);\n        optionsString = optionsString.replace(/'/g, '\"');\n\n        try {\n          clonedOptions = JSON.parse(optionsString);\n          if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n        } catch (e) {\n          this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n          return \"\".concat(key).concat(sep).concat(optionsString);\n        }\n\n        delete clonedOptions.defaultValue;\n        return key;\n      }\n\n      while (match = this.nestingRegexp.exec(str)) {\n        var formatters = [];\n        var doReduce = false;\n\n        if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n          var r = match[1].split(this.formatSeparator).map(function (elem) {\n            return elem.trim();\n          });\n          match[1] = r.shift();\n          formatters = r;\n          doReduce = true;\n        }\n\n        value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n        if (value && match[0] === str && typeof value !== 'string') return value;\n        if (typeof value !== 'string') value = makeString(value);\n\n        if (!value) {\n          this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n          value = '';\n        }\n\n        if (doReduce) {\n          value = formatters.reduce(function (v, f) {\n            return _this2.format(v, f, options.lng, _objectSpread({}, options, {\n              interpolationkey: match[1].trim()\n            }));\n          }, value.trim());\n        }\n\n        str = str.replace(match[0], value);\n        this.regexp.lastIndex = 0;\n      }\n\n      return str;\n    }\n  }]);\n\n  return Interpolator;\n}();\n\nfunction remove(arr, what) {\n  var found = arr.indexOf(what);\n\n  while (found !== -1) {\n    arr.splice(found, 1);\n    found = arr.indexOf(what);\n  }\n}\n\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n\n  function Connector(backend, store, services) {\n    var _this;\n\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Connector);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\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.state = {};\n    _this.queue = [];\n\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n\n    return _this;\n  }\n\n  _createClass(Connector, [{\n    key: \"queueLoad\",\n    value: function queueLoad(languages, namespaces, options, callback) {\n      var _this2 = this;\n\n      var toLoad = [];\n      var pending = [];\n      var toLoadLanguages = [];\n      var toLoadNamespaces = [];\n      languages.forEach(function (lng) {\n        var hasAllNamespaces = true;\n        namespaces.forEach(function (ns) {\n          var name = \"\".concat(lng, \"|\").concat(ns);\n\n          if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n            _this2.state[name] = 2;\n          } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n            if (pending.indexOf(name) < 0) pending.push(name);\n          } else {\n            _this2.state[name] = 1;\n            hasAllNamespaces = false;\n            if (pending.indexOf(name) < 0) pending.push(name);\n            if (toLoad.indexOf(name) < 0) toLoad.push(name);\n            if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n          }\n        });\n        if (!hasAllNamespaces) toLoadLanguages.push(lng);\n      });\n\n      if (toLoad.length || pending.length) {\n        this.queue.push({\n          pending: pending,\n          loaded: {},\n          errors: [],\n          callback: callback\n        });\n      }\n\n      return {\n        toLoad: toLoad,\n        pending: pending,\n        toLoadLanguages: toLoadLanguages,\n        toLoadNamespaces: toLoadNamespaces\n      };\n    }\n  }, {\n    key: \"loaded\",\n    value: function loaded(name, err, data) {\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      if (err) this.emit('failedLoading', lng, ns, err);\n\n      if (data) {\n        this.store.addResourceBundle(lng, ns, data);\n      }\n\n      this.state[name] = err ? -1 : 2;\n      var loaded = {};\n      this.queue.forEach(function (q) {\n        pushPath(q.loaded, [lng], ns);\n        remove(q.pending, name);\n        if (err) q.errors.push(err);\n\n        if (q.pending.length === 0 && !q.done) {\n          Object.keys(q.loaded).forEach(function (l) {\n            if (!loaded[l]) loaded[l] = [];\n\n            if (q.loaded[l].length) {\n              q.loaded[l].forEach(function (ns) {\n                if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n              });\n            }\n          });\n          q.done = true;\n\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(function (q) {\n        return !q.done;\n      });\n    }\n  }, {\n    key: \"read\",\n    value: function read(lng, ns, fcName) {\n      var _this3 = this;\n\n      var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n      var callback = arguments.length > 5 ? arguments[5] : undefined;\n      if (!lng.length) return callback(null, {});\n      return this.backend[fcName](lng, ns, function (err, data) {\n        if (err && data && tried < 5) {\n          setTimeout(function () {\n            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n          }, wait);\n          return;\n        }\n\n        callback(err, data);\n      });\n    }\n  }, {\n    key: \"prepareLoading\",\n    value: function prepareLoading(languages, namespaces) {\n      var _this4 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = arguments.length > 3 ? arguments[3] : undefined;\n\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\n      if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n      if (!toLoad.toLoad.length) {\n        if (!toLoad.pending.length) callback();\n        return null;\n      }\n\n      toLoad.toLoad.forEach(function (name) {\n        _this4.loadOne(name);\n      });\n    }\n  }, {\n    key: \"load\",\n    value: function load(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {}, callback);\n    }\n  }, {\n    key: \"reload\",\n    value: function reload(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {\n        reload: true\n      }, callback);\n    }\n  }, {\n    key: \"loadOne\",\n    value: function loadOne(name) {\n      var _this5 = this;\n\n      var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n        if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n        if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n        _this5.loaded(name, err, data);\n      });\n    }\n  }, {\n    key: \"saveMissing\",\n    value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n      if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n        this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(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\n      if (key === undefined || key === null || key === '') return;\n\n      if (this.backend && this.backend.create) {\n        this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n          isUpdate: isUpdate\n        }));\n      }\n\n      if (!languages || !languages[0]) return;\n      this.store.addResource(languages[0], namespace, key, fallbackValue);\n    }\n  }]);\n\n  return Connector;\n}(EventEmitter);\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    whitelist: false,\n    nonExplicitWhitelist: 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: true,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      var ret = {};\n      if (_typeof(args[1]) === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n      if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n        var options = args[3] || args[2];\n        Object.keys(options).forEach(function (key) {\n          ret[key] = options[key];\n        });\n      }\n\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng, options) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: false\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n  if (options.whitelist) {\n    if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n      options.whitelist = options.whitelist.concat(['cimode']);\n    }\n\n    options.supportedLngs = options.whitelist;\n  }\n\n  if (options.nonExplicitWhitelist) {\n    options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n  }\n\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n\n  return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n  _inherits(I18n, _EventEmitter);\n\n  function I18n() {\n    var _this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n    _classCallCheck(this, I18n);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = {\n      external: []\n    };\n\n    if (callback && !_this.isInitialized && !options.isClone) {\n      if (!_this.options.initImmediate) {\n        _this.init(options, callback);\n\n        return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n      }\n\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n\n    return _this;\n  }\n\n  _createClass(I18n, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      if (options.whitelist && !options.supportedLngs) {\n        this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n        this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n      this.format = this.options.interpolation.format;\n      if (!callback) callback = noop;\n\n      function createClassOnDemand(ClassOrObject) {\n        if (!ClassOrObject) return null;\n        if (typeof ClassOrObject === 'function') return new ClassOrObject();\n        return ClassOrObject;\n      }\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\n        var lu = new LanguageUtil(this.options);\n        this.store = new ResourceStore(this.options.resources, this.options);\n        var 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        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\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n\n        if (this.modules.languageDetector) {\n          s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n          s.languageDetector.init(s, this.options.detection, this.options);\n        }\n\n        if (this.modules.i18nFormat) {\n          s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n          if (s.i18nFormat.init) s.i18nFormat.init(this);\n        }\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\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        this.modules.external.forEach(function (m) {\n          if (m.init) m.init(_this2);\n        });\n      }\n\n      if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n        var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n      }\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\n      var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n      storeApi.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store;\n\n          return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n        };\n      });\n      var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n      storeApiChained.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store2;\n\n          (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n          return _this2;\n        };\n      });\n      var deferred = defer();\n\n      var load = function load() {\n        var finish = function finish(err, t) {\n          if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n          _this2.isInitialized = true;\n          if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n          _this2.emit('initialized', _this2.options);\n\n          deferred.resolve(t);\n          callback(err, t);\n        };\n\n        if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n        _this2.changeLanguage(_this2.options.lng, finish);\n      };\n\n      if (this.options.resources || !this.options.initImmediate) {\n        load();\n      } else {\n        setTimeout(load, 0);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"loadResources\",\n    value: function loadResources(language) {\n      var _this3 = this;\n\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n      var usedCallback = callback;\n      var usedLng = typeof language === 'string' ? language : this.language;\n      if (typeof language === 'function') usedCallback = language;\n\n      if (!this.options.resources || this.options.partialBundledLanguages) {\n        if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n        var toLoad = [];\n\n        var append = function append(lng) {\n          if (!lng) return;\n\n          var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n          lngs.forEach(function (l) {\n            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n          });\n        };\n\n        if (!usedLng) {\n          var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n          fallbacks.forEach(function (l) {\n            return append(l);\n          });\n        } else {\n          append(usedLng);\n        }\n\n        if (this.options.preload) {\n          this.options.preload.forEach(function (l) {\n            return append(l);\n          });\n        }\n\n        this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n      } else {\n        usedCallback(null);\n      }\n    }\n  }, {\n    key: \"reloadResources\",\n    value: function reloadResources(lngs, ns, callback) {\n      var deferred = defer();\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, function (err) {\n        deferred.resolve();\n        callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"use\",\n    value: function 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\n      if (module.type === 'backend') {\n        this.modules.backend = module;\n      }\n\n      if (module.type === 'logger' || module.log && module.warn && module.error) {\n        this.modules.logger = module;\n      }\n\n      if (module.type === 'languageDetector') {\n        this.modules.languageDetector = module;\n      }\n\n      if (module.type === 'i18nFormat') {\n        this.modules.i18nFormat = module;\n      }\n\n      if (module.type === 'postProcessor') {\n        postProcessor.addPostProcessor(module);\n      }\n\n      if (module.type === '3rdParty') {\n        this.modules.external.push(module);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng, callback) {\n      var _this4 = this;\n\n      this.isLanguageChangingTo = lng;\n      var deferred = defer();\n      this.emit('languageChanging', lng);\n\n      var done = function done(err, l) {\n        if (l) {\n          _this4.language = l;\n          _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n          _this4.translator.changeLanguage(l);\n\n          _this4.isLanguageChangingTo = undefined;\n\n          _this4.emit('languageChanged', l);\n\n          _this4.logger.log('languageChanged', l);\n        } else {\n          _this4.isLanguageChangingTo = undefined;\n        }\n\n        deferred.resolve(function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n        if (callback) callback(err, function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n      };\n\n      var setLng = function setLng(lngs) {\n        if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n        var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n        if (l) {\n          if (!_this4.language) {\n            _this4.language = l;\n            _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n          }\n\n          if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n          if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n        }\n\n        _this4.loadResources(l, function (err) {\n          done(err, l);\n        });\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        this.services.languageDetector.detect(setLng);\n      } else {\n        setLng(lng);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"getFixedT\",\n    value: function getFixedT(lng, ns, keyPrefix) {\n      var _this5 = this;\n\n      var fixedT = function fixedT(key, opts) {\n        var options;\n\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\n          options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n        } else {\n          options = _objectSpread({}, 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        var keySeparator = _this5.options.keySeparator || '.';\n        var resultKey = keyPrefix ? \"\".concat(keyPrefix).concat(keySeparator).concat(key) : key;\n        return _this5.t(resultKey, options);\n      };\n\n      if (typeof lng === 'string') {\n        fixedT.lng = lng;\n      } else {\n        fixedT.lngs = lng;\n      }\n\n      fixedT.ns = ns;\n      fixedT.keyPrefix = keyPrefix;\n      return fixedT;\n    }\n  }, {\n    key: \"t\",\n    value: function t() {\n      var _this$translator;\n\n      return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n    }\n  }, {\n    key: \"exists\",\n    value: function exists() {\n      var _this$translator2;\n\n      return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n    }\n  }, {\n    key: \"setDefaultNamespace\",\n    value: function setDefaultNamespace(ns) {\n      this.options.defaultNS = ns;\n    }\n  }, {\n    key: \"hasLoadedNamespace\",\n    value: function hasLoadedNamespace(ns) {\n      var _this6 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (!this.isInitialized) {\n        this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n        return false;\n      }\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\n      var lng = this.languages[0];\n      var fallbackLng = this.options ? this.options.fallbackLng : false;\n      var lastLng = this.languages[this.languages.length - 1];\n      if (lng.toLowerCase() === 'cimode') return true;\n\n      var loadNotPending = function loadNotPending(l, n) {\n        var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n        return loadState === -1 || loadState === 2;\n      };\n\n      if (options.precheck) {\n        var preResult = options.precheck(this, loadNotPending);\n        if (preResult !== undefined) return preResult;\n      }\n\n      if (this.hasResourceBundle(lng, ns)) return true;\n      if (!this.services.backendConnector.backend) return true;\n      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n      return false;\n    }\n  }, {\n    key: \"loadNamespaces\",\n    value: function loadNamespaces(ns, callback) {\n      var _this7 = this;\n\n      var deferred = defer();\n\n      if (!this.options.ns) {\n        callback && callback();\n        return Promise.resolve();\n      }\n\n      if (typeof ns === 'string') ns = [ns];\n      ns.forEach(function (n) {\n        if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n      });\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"loadLanguages\",\n    value: function loadLanguages(lngs, callback) {\n      var deferred = defer();\n      if (typeof lngs === 'string') lngs = [lngs];\n      var preloaded = this.options.preload || [];\n      var newLngs = lngs.filter(function (lng) {\n        return preloaded.indexOf(lng) < 0;\n      });\n\n      if (!newLngs.length) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n\n      this.options.preload = preloaded.concat(newLngs);\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"dir\",\n    value: function dir(lng) {\n      if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n      if (!lng) return 'rtl';\n      var 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'];\n      return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n    }\n  }, {\n    key: \"createInstance\",\n    value: function createInstance() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n      return new I18n(options, callback);\n    }\n  }, {\n    key: \"cloneInstance\",\n    value: function cloneInstance() {\n      var _this8 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n      var mergedOptions = _objectSpread({}, this.options, options, {\n        isClone: true\n      });\n\n      var clone = new I18n(mergedOptions);\n      var membersToCopy = ['store', 'services', 'language'];\n      membersToCopy.forEach(function (m) {\n        clone[m] = _this8[m];\n      });\n      clone.services = _objectSpread({}, this.services);\n      clone.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      clone.translator = new Translator(clone.services, clone.options);\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\n        clone.emit.apply(clone, [event].concat(args));\n      });\n      clone.init(mergedOptions, callback);\n      clone.translator.options = clone.options;\n      clone.translator.backendConnector.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      return clone;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return {\n        options: this.options,\n        store: this.store,\n        language: this.language,\n        languages: this.languages\n      };\n    }\n  }]);\n\n  return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\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}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n    if (seedValue < 0) {\r\n        // Make sure we end up with a positive number and not -ve one.\r\n        seedValue >>>= 0;\r\n    }\r\n    _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n    _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n    _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n    // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n    // and bitwise XOR with the current milliseconds\r\n    try {\r\n        var now = dateNow() & 0x7fffffff;\r\n        _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n    }\r\n    catch (e) {\r\n        // Don't crash if something goes wrong\r\n    }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n    if (maxValue > 0) {\r\n        return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n    }\r\n    return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n    var value = 0;\r\n    var c = getCrypto() || getMsCrypto();\r\n    if (c && c.getRandomValues) {\r\n        // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n        value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n    }\r\n    if (value === 0 && isIE()) {\r\n        // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n        if (!_mwcSeeded) {\r\n            // Set the seed for the Mwc algorithm\r\n            _autoSeedMwc();\r\n        }\r\n        // Don't use Math.random for IE\r\n        // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n        value = mwcRandom32() & MaxUInt32;\r\n    }\r\n    if (value === 0) {\r\n        // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n        value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n    }\r\n    if (!signed) {\r\n        // Make sure we end up with a positive number and not -ve one.\r\n        value >>>= 0;\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n    if (!value) {\r\n        _autoSeedMwc();\r\n    }\r\n    else {\r\n        _mwcSeed(value);\r\n    }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n    _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n    _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n    var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n    if (!signed) {\r\n        // Make sure we end up with a positive number and not -ve one.\r\n        value >>>= 0;\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n    if (maxLength === void 0) { maxLength = 22; }\r\n    var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n    // Start with an initial random number, consuming the value in reverse byte order\r\n    var number = random32() >>> 0; // Make sure it's a +ve number\r\n    var chars = 0;\r\n    var result = STR_EMPTY;\r\n    while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n        chars++;\r\n        result += base64chars.charAt(number & 0x3F);\r\n        number >>>= 6; // Zero fill with right shift\r\n        if (chars === 5) {\r\n            // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n            // So add on another 30 bits and make sure it's +ve\r\n            number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n            chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n        }\r\n    }\r\n    return result;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","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 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}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\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}","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 getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\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        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – 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          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\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        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\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 – 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      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\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 (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.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 };","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}","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants\";\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    native_account_unavailable: {\n        code: \"native_account_unavailable\",\n        desc: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\"\n    }\n};\n\n/**\n * Error thrown when user interaction is required.\n */\nexport class InteractionRequiredAuthError extends AuthError {\n    /**\n     * The time the error occured at\n     */\n    timestamp: string;\n\n    /**\n     * TraceId associated with the error\n     */\n    traceId: string;\n\n    /**\n     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md\n     * \n     * A string with extra claims needed for the token request to succeed\n     * web site: redirect the user to the authorization page and set the extra claims\n     * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims\n     * desktop application or browser context: include the claims when acquiring the token interactively\n     * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request\n     */\n    claims: string;\n\n    constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string) {\n        super(errorCode, errorMessage, subError);\n        Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n        \n        this.timestamp = timestamp || Constants.EMPTY_STRING;\n        this.traceId = traceId || Constants.EMPTY_STRING;\n        this.correlationId = correlationId || Constants.EMPTY_STRING;\n        this.claims = claims || Constants.EMPTY_STRING;\n        this.name = \"InteractionRequiredAuthError\";\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     * Creates an error thrown when the native broker returns ACCOUNT_UNAVAILABLE status, indicating that the account was removed and interactive sign-in is required\n     * @returns \n     */\n    static createNativeAccountUnavailableError(): InteractionRequiredAuthError {\n        return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\n    }\n}\n","var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n  '&amp;': '&',\n  '&#38;': '&',\n  '&lt;': '<',\n  '&#60;': '<',\n  '&gt;': '>',\n  '&#62;': '>',\n  '&apos;': \"'\",\n  '&#39;': \"'\",\n  '&quot;': '\"',\n  '&#34;': '\"',\n  '&nbsp;': ' ',\n  '&#160;': ' ',\n  '&copy;': '©',\n  '&#169;': '©',\n  '&reg;': '®',\n  '&#174;': '®',\n  '&hellip;': '…',\n  '&#8230;': '…',\n  '&#x2F;': '/',\n  '&#47;': '/'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n  return htmlEntities[m];\n};\n\nexport var unescape = function unescape(text) {\n  return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\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\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true,\n  unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n  return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n  function ReportNamespaces() {\n    _classCallCheck(this, ReportNamespaces);\n\n    this.usedNamespaces = {};\n  }\n\n  _createClass(ReportNamespaces, [{\n    key: \"addUsedNamespaces\",\n    value: function addUsedNamespaces(namespaces) {\n      var _this = this;\n\n      namespaces.forEach(function (ns) {\n        if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n      });\n    }\n  }, {\n    key: \"getUsedNamespaces\",\n    value: function getUsedNamespaces() {\n      return Object.keys(this.usedNamespaces);\n    }\n  }]);\n\n  return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n  i18nInstance = instance;\n}\nexport function getI18n() {\n  return i18nInstance;\n}\nexport var initReactI18next = {\n  type: '3rdParty',\n  init: function init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};\nexport function composeInitialProps(ForComponent) {\n  return function (ctx) {\n    return new Promise(function (resolve) {\n      var i18nInitialProps = getInitialProps();\n\n      if (ForComponent.getInitialProps) {\n        ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n          resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n        });\n      } else {\n        resolve(i18nInitialProps);\n      }\n    });\n  };\n}\nexport function getInitialProps() {\n  var i18n = getI18n();\n  var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n  var ret = {};\n  var initialI18nStore = {};\n  i18n.languages.forEach(function (l) {\n    initialI18nStore[l] = {};\n    namespaces.forEach(function (ns) {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport {  ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\n\r\ndeclare var globalThis: Window;\r\ndeclare var global: Window;\r\n\r\nlet _cachedGlobal: Window = null;\r\n\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - <null> (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached: boolean = true): Window {\r\n    let result = useCached === false ? null : _cachedGlobal;\r\n\r\n    if (!result) {\r\n        if (typeof globalThis !== strShimUndefined) {\r\n            result = globalThis;\r\n        }\r\n\r\n        if (!result && typeof self !== strShimUndefined) {\r\n            result = self;\r\n        }\r\n\r\n        if (!result && typeof window !== strShimUndefined) {\r\n            result = window;\r\n        }\r\n    \r\n        if (!result && typeof global !== strShimUndefined) {\r\n            result = global;\r\n        }\r\n\r\n        _cachedGlobal = result;\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nexport function throwTypeError(message: string): never {\r\n    throw new TypeError(message);\r\n}\r\n\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj: any): any {\r\n    var func = ObjCreate;\r\n    // Use build in Object.create\r\n    if (func) {\r\n        // Use Object create method if it exists\r\n        return func(obj);\r\n    }\r\n    if (obj == null) {\r\n        return {};\r\n    }\r\n    var type = typeof obj;\r\n    if (type !== strShimObject && type !== strShimFunction) {\r\n        throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n    }\r\n\r\n    function tmpFunc() {}\r\n    tmpFunc[strShimPrototype] = obj;\r\n\r\n    return new (tmpFunc as any)();\r\n}\r\n\r\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) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\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  }) : {\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\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\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};","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};","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}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = '2.8.10';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n    if (_objDefineProperty) {\r\n        try {\r\n            _objDefineProperty(target, prop, {\r\n                value: value,\r\n                enumerable: false,\r\n                configurable: true\r\n            });\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n            // We will just ignore this here.\r\n        }\r\n    }\r\n    return false;\r\n}\r\n// Accepts only:\r\n//  - Node\r\n//    - Node.ELEMENT_NODE\r\n//    - Node.DOCUMENT_NODE\r\n//  - Object\r\n//    - Any\r\nfunction _canAcceptData(target) {\r\n    return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n    var theCache = target[data.id];\r\n    if (!theCache) {\r\n        theCache = {};\r\n        try {\r\n            if (_canAcceptData(target)) {\r\n                if (!_createAccessor(target, data.id, theCache)) {\r\n                    // Environment doesn't support accessor, so just use direct assignment\r\n                    target[data.id] = theCache;\r\n                }\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n        }\r\n    }\r\n    return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n    if (includeVersion === void 0) { includeVersion = false; }\r\n    return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n    var data = {\r\n        id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n        accept: function (target) {\r\n            return _canAcceptData(target);\r\n        },\r\n        get: function (target, name, defValue, addDefault) {\r\n            var theCache = target[data.id];\r\n            if (!theCache) {\r\n                if (addDefault) {\r\n                    // Side effect is adds the cache\r\n                    theCache = _getCache(data, target);\r\n                    theCache[normalizeJsName(name)] = defValue;\r\n                }\r\n                return defValue;\r\n            }\r\n            return theCache[normalizeJsName(name)];\r\n        },\r\n        kill: function (target, name) {\r\n            if (target && target[name]) {\r\n                try {\r\n                    delete target[name];\r\n                }\r\n                catch (e) {\r\n                    // Just cleaning up, so if this fails -- ignore\r\n                }\r\n            }\r\n        }\r\n    };\r\n    return data;\r\n}\r\n//# sourceMappingURL=DataCacheHelper.js.map","/*\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 *      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    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        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\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.\n             * In most cases it will contain a single email. This field should not be relied upon if a custom \n             * policy is configured to return more than 1 email.\n             */\n            const preferredUsername = idToken?.claims?.preferred_username;\n            const email = (idToken?.claims?.emails) ? idToken.claims.emails[0] : null;\n            \n            account.username = preferredUsername || email || 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        cloudGraphHostName?: string,\n        msGraphHost?: string,\n        environment?: string\n    ): AccountEntity {\n        const account: AccountEntity = new AccountEntity();\n\n        account.authorityType = (\n            authority &&\n            authority.authorityType === AuthorityType.Adfs\n        ) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\n        \n        account.homeAccountId = homeAccountId;\n        // non AAD scenarios can have empty realm\n        account.realm = Constants.EMPTY_STRING;\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(\n        serverClientInfo: string,\n        authType: AuthorityType,\n        logger: Logger,\n        cryptoObj: ICrypto,\n        idToken?: AuthToken\n    ): 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 || authType === AuthorityType.Dsts) {\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","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 arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nexport function hasXMLHttpRequest() {\n  return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n  return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n  if (isPromise(maybePromise)) {\n    return maybePromise;\n  }\n  return Promise.resolve(maybePromise);\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n    function PerfEvent(name, payloadDetails, isAsync) {\r\n        var _self = this;\r\n        var accessorDefined = false;\r\n        _self.start = dateNow();\r\n        _self[_DYN_NAME /* @min:%2ename */] = name;\r\n        _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n        _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n        if (isFunction(payloadDetails)) {\r\n            // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n            var theDetails_1;\r\n            accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n                // Delay the execution of the payloadDetails until needed\r\n                if (!theDetails_1 && isFunction(payloadDetails)) {\r\n                    theDetails_1 = payloadDetails();\r\n                    // clear it out now so the referenced objects can be garbage collected\r\n                    payloadDetails = null;\r\n                }\r\n                return theDetails_1;\r\n            });\r\n        }\r\n        _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n            if (key) {\r\n                // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n                if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n                    return _self[key];\r\n                }\r\n                return (_self[strExecutionContextKey] || {})[key];\r\n            }\r\n            return null;\r\n        };\r\n        _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n            if (key) {\r\n                // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n                if (key === PerfEvent[strParentContextKey]) {\r\n                    // Simple assumption, if we are setting a parent then we must be a child\r\n                    if (!_self[key]) {\r\n                        _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n                    }\r\n                    _self[key] = value;\r\n                }\r\n                else if (key === PerfEvent[strChildrenContextKey]) {\r\n                    _self[key] = value;\r\n                }\r\n                else {\r\n                    var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n                    ctx[key] = value;\r\n                }\r\n            }\r\n        };\r\n        _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n            var childTime = 0;\r\n            var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n            if (isArray(childEvts)) {\r\n                for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                    var childEvt = childEvts[lp];\r\n                    if (childEvt) {\r\n                        childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n                    }\r\n                }\r\n            }\r\n            _self[_DYN_TIME /* @min:%2etime */] = dateNow() - _self.start;\r\n            _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n            _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n            if (!accessorDefined && isFunction(payloadDetails)) {\r\n                // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n                _self.payload = payloadDetails();\r\n            }\r\n        };\r\n    }\r\n    PerfEvent.ParentContextKey = \"parent\";\r\n    PerfEvent.ChildrenContextKey = \"childEvts\";\r\n    return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n    function PerfManager(manager) {\r\n        /**\r\n         * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n         * Defined as private so it can be visualized via the DebugPlugin\r\n         */\r\n        this.ctx = {};\r\n        dynamicProto(PerfManager, this, function (_self) {\r\n            _self.create = function (src, payloadDetails, isAsync) {\r\n                // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n                // for now this is just a simple do everything.\r\n                return new PerfEvent(src, payloadDetails, isAsync);\r\n            };\r\n            _self.fire = function (perfEvent) {\r\n                if (perfEvent) {\r\n                    perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n                    if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n                        manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n                if (key) {\r\n                    var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n                    ctx[key] = value;\r\n                }\r\n            };\r\n            _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n                return (_self[strExecutionContextKey] || {})[key];\r\n            };\r\n        });\r\n    }\r\n    /**\r\n     * Create a new event and start timing, the manager may return null/undefined to indicate that it does not\r\n     * want to monitor this source event.\r\n     * @param src The source name of the event\r\n     * @param payloadDetails - An optional callback function to fetch the payload details for the event.\r\n     * @param isAsync - Is the event occurring from a async event\r\n     */\r\n    PerfManager.prototype.create = function (src, payload, isAsync) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Complete the perfEvent and fire any notifications.\r\n     * @param perfEvent Fire the event which will also complete the passed event\r\n     */\r\n    PerfManager.prototype.fire = function (perfEvent) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Set an execution context value\r\n     * @param key - The context key name\r\n     * @param value - The value\r\n     */\r\n    PerfManager.prototype.setCtx = function (key, value) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Get the execution context value\r\n     * @param key - The context key\r\n     */\r\n    PerfManager.prototype.getCtx = function (key) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n    if (mgrSource) {\r\n        var perfMgr = mgrSource;\r\n        if (perfMgr[STR_GET_PERF_MGR]) {\r\n            // Looks like a perf manager provider object\r\n            perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n        }\r\n        if (perfMgr) {\r\n            var perfEvt = void 0;\r\n            var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n            try {\r\n                perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n                if (perfEvt) {\r\n                    if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n                        perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n                        if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n                            var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n                            if (!children) {\r\n                                children = [];\r\n                                currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n                            }\r\n                            children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n                        }\r\n                    }\r\n                    // Set this event as the active event now\r\n                    perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n                    return func(perfEvt);\r\n                }\r\n            }\r\n            catch (ex) {\r\n                if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n                    perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n                }\r\n            }\r\n            finally {\r\n                // fire the perf event\r\n                if (perfEvt) {\r\n                    perfMgr.fire(perfEvt);\r\n                }\r\n                // Reset the active event to the previous value\r\n                perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n            }\r\n        }\r\n    }\r\n    return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n    _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n    return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","/*!\n * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2022 Fonticons, Inc.\n */\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n  _wrapRegExp = function (re, groups) {\n    return new BabelRegExp(re, void 0, groups);\n  };\n\n  var _super = RegExp.prototype,\n      _groups = new WeakMap();\n\n  function BabelRegExp(re, flags, groups) {\n    var _this = new RegExp(re, flags);\n\n    return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n  }\n\n  function buildGroups(result, re) {\n    var g = _groups.get(re);\n\n    return Object.keys(g).reduce(function (groups, name) {\n      return groups[name] = result[g[name]], groups;\n    }, Object.create(null));\n  }\n\n  return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n    var result = _super.exec.call(this, str);\n\n    return result && (result.groups = buildGroups(result, this)), result;\n  }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n    if (\"string\" == typeof substitution) {\n      var groups = _groups.get(this);\n\n      return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n        return \"$\" + groups[name];\n      }));\n    }\n\n    if (\"function\" == typeof substitution) {\n      var _this = this;\n\n      return _super[Symbol.replace].call(this, str, function () {\n        var args = arguments;\n        return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n      });\n    }\n\n    return _super[Symbol.replace].call(this, str, substitution);\n  }, _wrapRegExp.apply(this, arguments);\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  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\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 _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  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\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 _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\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 _nonIterableSpread() {\n  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}\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 noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\n\ntry {\n  if (typeof window !== 'undefined') _WINDOW = window;\n  if (typeof document !== 'undefined') _DOCUMENT = document;\n  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n  if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n    _ref$userAgent = _ref.userAgent,\n    userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e) {\n    return false;\n  }\n}();\nvar PREFIX_TO_STYLE = {\n  'fas': 'solid',\n  'fa-solid': 'solid',\n  'far': 'regular',\n  'fa-regular': 'regular',\n  'fal': 'light',\n  'fa-light': 'light',\n  'fat': 'thin',\n  'fa-thin': 'thin',\n  'fad': 'duotone',\n  'fa-duotone': 'duotone',\n  'fab': 'brands',\n  'fa-brands': 'brands',\n  'fak': 'kit',\n  'fa-kit': 'kit',\n  'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n  'solid': 'fas',\n  'regular': 'far',\n  'light': 'fal',\n  'thin': 'fat',\n  'duotone': 'fad',\n  'brands': 'fab',\n  'kit': 'fak'\n};\nvar PREFIX_TO_LONG_STYLE = {\n  'fab': 'fa-brands',\n  'fad': 'fa-duotone',\n  'fak': 'fa-kit',\n  'fal': 'fa-light',\n  'far': 'fa-regular',\n  'fas': 'fa-solid',\n  'fat': 'fa-thin'\n};\nvar LONG_STYLE_TO_PREFIX = {\n  'fa-brands': 'fab',\n  'fa-duotone': 'fad',\n  'fa-kit': 'fak',\n  'fa-light': 'fal',\n  'fa-regular': 'far',\n  'fa-solid': 'fas',\n  'fa-thin': 'fat'\n};\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa[srltdbk\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n  '900': 'fas',\n  '400': 'far',\n  'normal': 'far',\n  '300': 'fal',\n  '100': 'fat'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n  GROUP: 'duotone-group',\n  SWAP_OPACITY: 'swap-opacity',\n  PRIMARY: 'primary',\n  SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n  return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n  return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n  if (element) {\n    return element.getAttribute(attr);\n  }\n}\n\nfunction coerce(val) {\n  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n  // We'll assume that this is an indication that it should be toggled to true\n  // For example <script data-search-pseudo-elements src=\"...\"></script>\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  var attrs = [['data-family-prefix', 'familyPrefix'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n  attrs.forEach(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        attr = _ref2[0],\n        key = _ref2[1];\n\n    var val = coerce(getAttrConfig(attr));\n\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\n\nvar _default = {\n  familyPrefix: DEFAULT_FAMILY_PREFIX,\n  styleDefault: 'solid',\n  replacementClass: DEFAULT_REPLACEMENT_CLASS,\n  autoReplaceSvg: true,\n  autoAddCss: true,\n  autoA11y: true,\n  searchPseudoElements: false,\n  observeMutations: true,\n  mutateApproach: 'async',\n  keepOriginalSource: true,\n  measurePerformance: false,\n  showMissingIcons: true\n};\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_config).forEach(function (key) {\n  Object.defineProperty(config, key, {\n    enumerable: true,\n    set: function set(val) {\n      _config[key] = val;\n\n      _onChangeCb.forEach(function (cb) {\n        return cb(config);\n      });\n    },\n    get: function get() {\n      return _config[key];\n    }\n  });\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n  _onChangeCb.push(cb);\n\n  return function () {\n    _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n  };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n\n  var style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  var headChildren = DOCUMENT.head.childNodes;\n  var beforeChild = null;\n\n  for (var i = headChildren.length - 1; i > -1; i--) {\n    var child = headChildren[i];\n    var tagName = (child.tagName || '').toUpperCase();\n\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n  var size = 12;\n  var id = '';\n\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n\n  return id;\n}\nfunction toArray(obj) {\n  var array = [];\n\n  for (var i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n\n  return array;\n}\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n      return i;\n    });\n  }\n}\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce(function (acc, styleName) {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n  }, '');\n}\nfunction transformIsMeaningful(transform) {\n  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n  var transform = _ref.transform,\n      containerWidth = _ref.containerWidth,\n      iconWidth = _ref.iconWidth;\n  var outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  var inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  var path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer: outer,\n    inner: inner,\n    path: path\n  };\n}\nfunction transformForCss(_ref2) {\n  var transform = _ref2.transform,\n      _ref2$width = _ref2.width,\n      width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n      _ref2$height = _ref2.height,\n      height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n      _ref2$startCentered = _ref2.startCentered,\n      startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n  var val = '';\n\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n  }\n\n  val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n  val += \"rotate(\".concat(transform.rotate, \"deg) \");\n  return val;\n}\n\nvar baseStyles = \":root, :host {\\n  --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n  --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n  --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n  --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n  --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n  overflow: visible;\\n  box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n  display: var(--fa-display, inline-block);\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n  vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n  vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n  vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n  vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n  vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n  width: var(--fa-li-width, 2em);\\n  top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n  width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  -webkit-transform: translate(-50%, -50%);\\n          transform: translate(-50%, -50%);\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: var(--fa-counter-background-color, #ff253a);\\n  border-radius: var(--fa-counter-border-radius, 1em);\\n  box-sizing: border-box;\\n  color: var(--fa-inverse, #fff);\\n  line-height: var(--fa-counter-line-height, 1);\\n  max-width: var(--fa-counter-max-width, 5em);\\n  min-width: var(--fa-counter-min-width, 1.5em);\\n  overflow: hidden;\\n  padding: var(--fa-counter-padding, 0.25em 0.5em);\\n  right: var(--fa-right, 0);\\n  text-overflow: ellipsis;\\n  top: var(--fa-top, 0);\\n  -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n          transform: scale(var(--fa-counter-scale, 0.25));\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: var(--fa-bottom, 0);\\n  right: var(--fa-right, 0);\\n  top: auto;\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: bottom right;\\n          transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: var(--fa-bottom, 0);\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: auto;\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: bottom left;\\n          transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  top: var(--fa-top, 0);\\n  right: var(--fa-right, 0);\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: var(--fa-top, 0);\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: top left;\\n          transform-origin: top left;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-2xs {\\n  font-size: 0.625em;\\n  line-height: 0.1em;\\n  vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n  font-size: 0.75em;\\n  line-height: 0.0833333337em;\\n  vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n  font-size: 0.875em;\\n  line-height: 0.0714285718em;\\n  vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n  font-size: 1.25em;\\n  line-height: 0.05em;\\n  vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n  font-size: 1.5em;\\n  line-height: 0.0416666682em;\\n  vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n  font-size: 2em;\\n  line-height: 0.03125em;\\n  vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: var(--fa-li-margin, 2.5em);\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  left: calc(var(--fa-li-width, 2em) * -1);\\n  position: absolute;\\n  text-align: center;\\n  width: var(--fa-li-width, 2em);\\n  line-height: inherit;\\n}\\n\\n.fa-border {\\n  border-color: var(--fa-border-color, #eee);\\n  border-radius: var(--fa-border-radius, 0.1em);\\n  border-style: var(--fa-border-style, solid);\\n  border-width: var(--fa-border-width, 0.08em);\\n  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n  float: left;\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n  float: right;\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n  -webkit-animation-name: fa-beat;\\n          animation-name: fa-beat;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n          animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n  -webkit-animation-name: fa-bounce;\\n          animation-name: fa-bounce;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n  -webkit-animation-name: fa-fade;\\n          animation-name: fa-fade;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n  -webkit-animation-name: fa-beat-fade;\\n          animation-name: fa-beat-fade;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n  -webkit-animation-name: fa-flip;\\n          animation-name: fa-flip;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n          animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n  -webkit-animation-name: fa-shake;\\n          animation-name: fa-shake;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n          animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n  -webkit-animation-name: fa-spin;\\n          animation-name: fa-spin;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n          animation-duration: var(--fa-animation-duration, 2s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n          animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n  --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n  -webkit-animation-name: fa-spin;\\n          animation-name: fa-spin;\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n          animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n  .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n    -webkit-animation-delay: -1ms;\\n            animation-delay: -1ms;\\n    -webkit-animation-duration: 1ms;\\n            animation-duration: 1ms;\\n    -webkit-animation-iteration-count: 1;\\n            animation-iteration-count: 1;\\n    transition-delay: 0s;\\n    transition-duration: 0s;\\n  }\\n}\\n@-webkit-keyframes fa-beat {\\n  0%, 90% {\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  45% {\\n    -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n            transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@keyframes fa-beat {\\n  0%, 90% {\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  45% {\\n    -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n            transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@-webkit-keyframes fa-bounce {\\n  0% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@keyframes fa-bounce {\\n  0% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@-webkit-keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n            transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n            transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@-webkit-keyframes fa-flip {\\n  50% {\\n    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@keyframes fa-flip {\\n  50% {\\n    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@-webkit-keyframes fa-shake {\\n  0% {\\n    -webkit-transform: rotate(-15deg);\\n            transform: rotate(-15deg);\\n  }\\n  4% {\\n    -webkit-transform: rotate(15deg);\\n            transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    -webkit-transform: rotate(-18deg);\\n            transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    -webkit-transform: rotate(18deg);\\n            transform: rotate(18deg);\\n  }\\n  16% {\\n    -webkit-transform: rotate(-22deg);\\n            transform: rotate(-22deg);\\n  }\\n  20% {\\n    -webkit-transform: rotate(22deg);\\n            transform: rotate(22deg);\\n  }\\n  32% {\\n    -webkit-transform: rotate(-12deg);\\n            transform: rotate(-12deg);\\n  }\\n  36% {\\n    -webkit-transform: rotate(12deg);\\n            transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n}\\n@keyframes fa-shake {\\n  0% {\\n    -webkit-transform: rotate(-15deg);\\n            transform: rotate(-15deg);\\n  }\\n  4% {\\n    -webkit-transform: rotate(15deg);\\n            transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    -webkit-transform: rotate(-18deg);\\n            transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    -webkit-transform: rotate(18deg);\\n            transform: rotate(18deg);\\n  }\\n  16% {\\n    -webkit-transform: rotate(-22deg);\\n            transform: rotate(-22deg);\\n  }\\n  20% {\\n    -webkit-transform: rotate(22deg);\\n            transform: rotate(22deg);\\n  }\\n  32% {\\n    -webkit-transform: rotate(-12deg);\\n            transform: rotate(-12deg);\\n  }\\n  36% {\\n    -webkit-transform: rotate(12deg);\\n            transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n}\\n@-webkit-keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  -webkit-transform: rotate(90deg);\\n          transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  -webkit-transform: rotate(180deg);\\n          transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  -webkit-transform: rotate(270deg);\\n          transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  -webkit-transform: scale(-1, 1);\\n          transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  -webkit-transform: scale(1, -1);\\n          transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n  -webkit-transform: scale(-1, -1);\\n          transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n  -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n          transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  vertical-align: middle;\\n  height: 2em;\\n  position: relative;\\n  width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n  z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  height: 1em;\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  height: 2em;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n  var dfp = DEFAULT_FAMILY_PREFIX;\n  var drc = DEFAULT_REPLACEMENT_CLASS;\n  var fp = config.familyPrefix;\n  var rc = config.replacementClass;\n  var s = baseStyles;\n\n  if (fp !== dfp || rc !== drc) {\n    var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n    var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n    var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n\n  return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n    _cssInserted = true;\n  }\n}\n\nvar InjectCSS = {\n  mixout: function mixout() {\n    return {\n      dom: {\n        css: css,\n        insertCss: ensureCss\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      beforeDOMElementCreation: function beforeDOMElementCreation() {\n        ensureCss();\n      },\n      beforeI2svg: function beforeI2svg() {\n        ensureCss();\n      }\n    };\n  }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n  DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n  loaded = 1;\n  functions.map(function (fn) {\n    return fn();\n  });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n  var tag = abstractNodes.tag,\n      _abstractNodes$attrib = abstractNodes.attributes,\n      attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n      _abstractNodes$childr = abstractNodes.children,\n      children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix: prefix,\n      iconName: iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n  return function (a, b, c, d) {\n    return func.call(thisContext, a, b, c, d);\n  };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param  {Object}   subject      The object to reduce over.\n * @param  {Function} fn           The reducer function.\n * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n * @param  {Object}   thisContext  The context for the reducer.\n * @return {mixed}                 The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n  var keys = Object.keys(subject),\n      length = keys.length,\n      iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n      i,\n      key,\n      result;\n\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n\n  return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\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 */\nfunction ucs2decode(string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n\n  while (counter < length) {\n    var value = string.charCodeAt(counter++);\n\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      var extra = string.charCodeAt(counter++);\n\n      if ((extra & 0xFC00) == 0xDC00) {\n        // eslint-disable-line eqeqeq\n        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n\n  return output;\n}\n\nfunction toHex(unicode) {\n  var decoded = ucs2decode(unicode);\n  return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n  var size = string.length;\n  var first = string.charCodeAt(index);\n  var second;\n\n  if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n    second = string.charCodeAt(index + 1);\n\n    if (second >= 0xDC00 && second <= 0xDFFF) {\n      return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n    }\n  }\n\n  return first;\n}\n\nfunction normalizeIcons(icons) {\n  return Object.keys(icons).reduce(function (acc, iconName) {\n    var icon = icons[iconName];\n    var expanded = !!icon.icon;\n\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n\n    return acc;\n  }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _params$skipHooks = params.skipHooks,\n      skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n  var normalized = normalizeIcons(icons);\n\n  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n    namespace.hooks.addPack(prefix, normalizeIcons(icons));\n  } else {\n    namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n  }\n  /**\n   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n   * for `fas` so we'll ease the upgrade process for our users by automatically defining\n   * this as well.\n   */\n\n\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n  d1: 1,\n  d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n  cls1: 1,\n  d1: 2,\n  cls2: 3,\n  d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n  cls1: 1,\n  d1: 2\n})];\n\nvar styles = namespace.styles,\n    shims = namespace.shims;\nvar LONG_STYLE = Object.values(PREFIX_TO_LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = Object.keys(PREFIX_TO_STYLE);\n\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(familyPrefix, cls) {\n  var parts = cls.split('-');\n  var prefix = parts[0];\n  var iconName = parts.slice(1).join('-');\n\n  if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\nvar build = function build() {\n  var lookup = function lookup(reducer) {\n    return reduce(styles, function (o, style, prefix) {\n      o[prefix] = reduce(style, reducer, {});\n      return o;\n    }, {});\n  };\n\n  _byUnicode = lookup(function (acc, icon, iconName) {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n\n    if (icon[2]) {\n      var aliases = icon[2].filter(function (a) {\n        return typeof a === 'number';\n      });\n      aliases.forEach(function (alias) {\n        acc[alias.toString(16)] = iconName;\n      });\n    }\n\n    return acc;\n  });\n  _byLigature = lookup(function (acc, icon, iconName) {\n    acc[iconName] = iconName;\n\n    if (icon[2]) {\n      var aliases = icon[2].filter(function (a) {\n        return typeof a === 'string';\n      });\n      aliases.forEach(function (alias) {\n        acc[alias] = iconName;\n      });\n    }\n\n    return acc;\n  });\n  _byAlias = lookup(function (acc, icon, iconName) {\n    var aliases = icon[2];\n    acc[iconName] = iconName;\n    aliases.forEach(function (alias) {\n      acc[alias] = iconName;\n    });\n    return acc;\n  }); // If we have a Kit, we can't determine if regular is available since we\n  // could be auto-fetching it. We'll have to assume that it is available.\n\n  var hasRegular = 'far' in styles || config.autoFetchSvg;\n  var shimLookups = reduce(shims, function (acc, shim) {\n    var maybeNameMaybeUnicode = shim[0];\n    var prefix = shim[1];\n    var iconName = shim[2];\n\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n\n    if (typeof maybeNameMaybeUnicode === 'string') {\n      acc.names[maybeNameMaybeUnicode] = {\n        prefix: prefix,\n        iconName: iconName\n      };\n    }\n\n    if (typeof maybeNameMaybeUnicode === 'number') {\n      acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n        prefix: prefix,\n        iconName: iconName\n      };\n    }\n\n    return acc;\n  }, {\n    names: {},\n    unicodes: {}\n  });\n  _byOldName = shimLookups.names;\n  _byOldUnicode = shimLookups.unicodes;\n  _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault);\n};\nonChange(function (c) {\n  _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault);\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n  return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction byOldUnicode(unicode) {\n  var oldUnicode = _byOldUnicode[unicode];\n  var newUnicode = byUnicode('fas', unicode);\n  return oldUnicode || (newUnicode ? {\n    prefix: 'fas',\n    iconName: newUnicode\n  } : null) || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction getDefaultUsablePrefix() {\n  return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n  var style = PREFIX_TO_STYLE[styleOrPrefix];\n  var prefix = STYLE_TO_PREFIX[styleOrPrefix] || STYLE_TO_PREFIX[style];\n  var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n  return prefix || defined || null;\n}\nfunction getCanonicalIcon(values) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$skipLookups = params.skipLookups,\n      skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n  var givenPrefix = null;\n  var canonical = values.reduce(function (acc, cls) {\n    var iconName = getIconName(config.familyPrefix, cls);\n\n    if (styles[cls]) {\n      cls = LONG_STYLE.includes(cls) ? LONG_STYLE_TO_PREFIX[cls] : cls;\n      givenPrefix = cls;\n      acc.prefix = cls;\n    } else if (PREFIXES.indexOf(cls) > -1) {\n      givenPrefix = cls;\n      acc.prefix = getCanonicalPrefix(cls);\n    } else if (iconName) {\n      acc.iconName = iconName;\n    } else if (cls !== config.replacementClass) {\n      acc.rest.push(cls);\n    }\n\n    if (!skipLookups && acc.prefix && acc.iconName) {\n      var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n      var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n      if (shim.prefix) {\n        givenPrefix = null;\n      }\n\n      acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n      acc.prefix = shim.prefix || acc.prefix;\n\n      if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n        // Allow a fallback from the regular style to solid if regular is not available\n        // but only if we aren't auto-fetching SVGs\n        acc.prefix = 'fas';\n      }\n    }\n\n    return acc;\n  }, emptyCanonicalIcon());\n\n  if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n    // The fa prefix is not canonical. So if it has made it through until this point\n    // we will shift it to the correct prefix.\n    canonical.prefix = getDefaultUsablePrefix() || 'fas';\n  }\n\n  return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n  function Library() {\n    _classCallCheck(this, Library);\n\n    this.definitions = {};\n  }\n\n  _createClass(Library, [{\n    key: \"add\",\n    value: function add() {\n      var _this = this;\n\n      for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n        definitions[_key] = arguments[_key];\n      }\n\n      var additions = definitions.reduce(this._pullDefinitions, {});\n      Object.keys(additions).forEach(function (key) {\n        _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n        defineIcons(key, additions[key]);\n        var longPrefix = PREFIX_TO_LONG_STYLE[key];\n        if (longPrefix) defineIcons(longPrefix, additions[key]);\n        build();\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.definitions = {};\n    }\n  }, {\n    key: \"_pullDefinitions\",\n    value: function _pullDefinitions(additions, definition) {\n      var normalized = definition.prefix && definition.iconName && definition.icon ? {\n        0: definition\n      } : definition;\n      Object.keys(normalized).map(function (key) {\n        var _normalized$key = normalized[key],\n            prefix = _normalized$key.prefix,\n            iconName = _normalized$key.iconName,\n            icon = _normalized$key.icon;\n        var aliases = icon[2];\n        if (!additions[prefix]) additions[prefix] = {};\n\n        if (aliases.length > 0) {\n          aliases.forEach(function (alias) {\n            if (typeof alias === 'string') {\n              additions[prefix][alias] = icon;\n            }\n          });\n        }\n\n        additions[prefix][iconName] = icon;\n      });\n      return additions;\n    }\n  }]);\n\n  return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n  var obj = _ref.mixoutsTo;\n  _plugins = nextPlugins;\n  _hooks = {};\n  Object.keys(providers).forEach(function (k) {\n    if (defaultProviderKeys.indexOf(k) === -1) {\n      delete providers[k];\n    }\n  });\n\n  _plugins.forEach(function (plugin) {\n    var mixout = plugin.mixout ? plugin.mixout() : {};\n    Object.keys(mixout).forEach(function (tk) {\n      if (typeof mixout[tk] === 'function') {\n        obj[tk] = mixout[tk];\n      }\n\n      if (_typeof(mixout[tk]) === 'object') {\n        Object.keys(mixout[tk]).forEach(function (sk) {\n          if (!obj[tk]) {\n            obj[tk] = {};\n          }\n\n          obj[tk][sk] = mixout[tk][sk];\n        });\n      }\n    });\n\n    if (plugin.hooks) {\n      var hooks = plugin.hooks();\n      Object.keys(hooks).forEach(function (hook) {\n        if (!_hooks[hook]) {\n          _hooks[hook] = [];\n        }\n\n        _hooks[hook].push(hooks[hook]);\n      });\n    }\n\n    if (plugin.provides) {\n      plugin.provides(providers);\n    }\n  });\n\n  return obj;\n}\nfunction chainHooks(hook, accumulator) {\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  var hookFns = _hooks[hook] || [];\n  hookFns.forEach(function (hookFn) {\n    accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n  });\n  return accumulator;\n}\nfunction callHooks(hook) {\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  var hookFns = _hooks[hook] || [];\n  hookFns.forEach(function (hookFn) {\n    hookFn.apply(null, args);\n  });\n  return undefined;\n}\nfunction callProvided() {\n  var hook = arguments[0];\n  var args = Array.prototype.slice.call(arguments, 1);\n  return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n  if (iconLookup.prefix === 'fa') {\n    iconLookup.prefix = 'fas';\n  }\n\n  var iconName = iconLookup.iconName;\n  var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n  if (!iconName) return;\n  iconName = byAlias(prefix, iconName) || iconName;\n  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  callHooks('noAuto');\n};\nvar dom = {\n  i2svg: function i2svg() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (IS_DOM) {\n      callHooks('beforeI2svg', params);\n      callProvided('pseudoElements2svg', params);\n      return callProvided('i2svg', params);\n    } else {\n      return Promise.reject('Operation requires a DOM of some kind.');\n    }\n  },\n  watch: function watch() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n\n    config.observeMutations = true;\n    domready(function () {\n      autoReplace({\n        autoReplaceSvgRoot: autoReplaceSvgRoot\n      });\n      callHooks('watch', params);\n    });\n  }\n};\nvar parse = {\n  icon: function icon(_icon) {\n    if (_icon === null) {\n      return null;\n    }\n\n    if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n      return {\n        prefix: _icon.prefix,\n        iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n      };\n    }\n\n    if (Array.isArray(_icon) && _icon.length === 2) {\n      var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n      var prefix = getCanonicalPrefix(_icon[0]);\n      return {\n        prefix: prefix,\n        iconName: byAlias(prefix, iconName) || iconName\n      };\n    }\n\n    if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.familyPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n      var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n        skipLookups: true\n      });\n      return {\n        prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n        iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n      };\n    }\n\n    if (typeof _icon === 'string') {\n      var _prefix = getDefaultUsablePrefix();\n\n      return {\n        prefix: _prefix,\n        iconName: byAlias(_prefix, _icon) || _icon\n      };\n    }\n  }\n};\nvar api = {\n  noAuto: noAuto,\n  config: config,\n  dom: dom,\n  parse: parse,\n  library: library,\n  findIconDefinition: findIconDefinition,\n  toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n      autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n    node: autoReplaceSvgRoot\n  });\n};\n\nfunction domVariants(val, abstractCreator) {\n  Object.defineProperty(val, 'abstract', {\n    get: abstractCreator\n  });\n  Object.defineProperty(val, 'html', {\n    get: function get() {\n      return val.abstract.map(function (a) {\n        return toHtml(a);\n      });\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function get() {\n      if (!IS_DOM) return;\n      var container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction asIcon (_ref) {\n  var children = _ref.children,\n      main = _ref.main,\n      mask = _ref.mask,\n      attributes = _ref.attributes,\n      styles = _ref.styles,\n      transform = _ref.transform;\n\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    var width = main.width,\n        height = main.height;\n    var offset = {\n      x: width / height / 2,\n      y: 0.5\n    };\n    attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n      'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n    }));\n  }\n\n  return [{\n    tag: 'svg',\n    attributes: attributes,\n    children: children\n  }];\n}\n\nfunction asSymbol (_ref) {\n  var prefix = _ref.prefix,\n      iconName = _ref.iconName,\n      children = _ref.children,\n      attributes = _ref.attributes,\n      symbol = _ref.symbol;\n  var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n  return [{\n    tag: 'svg',\n    attributes: {\n      style: 'display: none;'\n    },\n    children: [{\n      tag: 'symbol',\n      attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n        id: id\n      }),\n      children: children\n    }]\n  }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n  var _params$icons = params.icons,\n      main = _params$icons.main,\n      mask = _params$icons.mask,\n      prefix = params.prefix,\n      iconName = params.iconName,\n      transform = params.transform,\n      symbol = params.symbol,\n      title = params.title,\n      maskId = params.maskId,\n      titleId = params.titleId,\n      extra = params.extra,\n      _params$watchable = params.watchable,\n      watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n  var _ref = mask.found ? mask : main,\n      width = _ref.width,\n      height = _ref.height;\n\n  var isUploadedIcon = prefix === 'fak';\n  var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n    return extra.classes.indexOf(c) === -1;\n  }).filter(function (c) {\n    return c !== '' || !!c;\n  }).concat(extra.classes).join(' ');\n  var content = {\n    children: [],\n    attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n      'data-prefix': prefix,\n      'data-icon': iconName,\n      'class': attrClass,\n      'role': extra.attributes.role || 'img',\n      'xmlns': 'http://www.w3.org/2000/svg',\n      'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n    })\n  };\n  var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n    width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n  } : {};\n\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\n\n  if (title) {\n    content.children.push({\n      tag: 'title',\n      attributes: {\n        id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n      },\n      children: [title]\n    });\n    delete content.attributes.title;\n  }\n\n  var args = _objectSpread2(_objectSpread2({}, content), {}, {\n    prefix: prefix,\n    iconName: iconName,\n    main: main,\n    mask: mask,\n    maskId: maskId,\n    transform: transform,\n    symbol: symbol,\n    styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n  });\n\n  var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n    children: [],\n    attributes: {}\n  } : callProvided('generateAbstractIcon', args) || {\n    children: [],\n    attributes: {}\n  },\n      children = _ref2.children,\n      attributes = _ref2.attributes;\n\n  args.children = children;\n  args.attributes = attributes;\n\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\nfunction makeLayersTextAbstract(params) {\n  var content = params.content,\n      width = params.width,\n      height = params.height,\n      transform = params.transform,\n      title = params.title,\n      extra = params.extra,\n      _params$watchable2 = params.watchable,\n      watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n  var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n\n  var styles = _objectSpread2({}, extra.styles);\n\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform: transform,\n      startCentered: true,\n      width: width,\n      height: height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n\n  var styleString = joinStyles(styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\nfunction makeLayersCounterAbstract(params) {\n  var content = params.content,\n      title = params.title,\n      extra = params.extra;\n\n  var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  var styleString = joinStyles(extra.styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n  var width = icon[0];\n  var height = icon[1];\n\n  var _icon$slice = icon.slice(4),\n      _icon$slice2 = _slicedToArray(_icon$slice, 1),\n      vectorData = _icon$slice2[0];\n\n  var element = null;\n\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n          fill: 'currentColor',\n          d: vectorData[1]\n        }\n      }]\n    };\n  } else {\n    element = {\n      tag: 'path',\n      attributes: {\n        fill: 'currentColor',\n        d: vectorData\n      }\n    };\n  }\n\n  return {\n    found: true,\n    width: width,\n    height: height,\n    icon: element\n  };\n}\nvar missingIconResolutionMixin = {\n  found: false,\n  width: 512,\n  height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n  if (!PRODUCTION && !config.showMissingIcons && iconName) {\n    console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n  }\n}\n\nfunction findIcon(iconName, prefix) {\n  var givenPrefix = prefix;\n\n  if (prefix === 'fa' && config.styleDefault !== null) {\n    prefix = getDefaultUsablePrefix();\n  }\n\n  return new Promise(function (resolve, reject) {\n    var val = {\n      found: false,\n      width: 512,\n      height: 512,\n      icon: callProvided('missingIconAbstract') || {}\n    };\n\n    if (givenPrefix === 'fa') {\n      var shim = byOldName(iconName) || {};\n      iconName = shim.iconName || iconName;\n      prefix = shim.prefix || prefix;\n    }\n\n    if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n      var icon = styles$1[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n\n    maybeNotifyMissing(iconName, prefix);\n    resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n      icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n    }));\n  });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nvar preamble = \"FA \\\"6.0.0\\\"\";\n\nvar begin = function begin(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return function () {\n    return end(name);\n  };\n};\n\nvar end = function end(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n  begin: begin,\n  end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n  var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n  var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n  var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n  return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n  return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n\n  var mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n  return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n  return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$ceFn = params.ceFn,\n      ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n  if (typeof abstractObj === 'string') {\n    return DOCUMENT.createTextNode(abstractObj);\n  }\n\n  var tag = ceFn(abstractObj.tag);\n  Object.keys(abstractObj.attributes || []).forEach(function (key) {\n    tag.setAttribute(key, abstractObj.attributes[key]);\n  });\n  var children = abstractObj.children || [];\n  children.forEach(function (child) {\n    tag.appendChild(convertSVG(child, {\n      ceFn: ceFn\n    }));\n  });\n  return tag;\n}\n\nfunction nodeAsComment(node) {\n  var comment = \" \".concat(node.outerHTML, \" \");\n  /* BEGIN.ATTRIBUTION */\n\n  comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n  /* END.ATTRIBUTION */\n\n  return comment;\n}\n\nvar mutators = {\n  replace: function replace(mutation) {\n    var node = mutation[0];\n\n    if (node.parentNode) {\n      mutation[1].forEach(function (abstract) {\n        node.parentNode.insertBefore(convertSVG(abstract), node);\n      });\n\n      if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n        var comment = DOCUMENT.createComment(nodeAsComment(node));\n        node.parentNode.replaceChild(comment, node);\n      } else {\n        node.remove();\n      }\n    }\n  },\n  nest: function nest(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n\n    var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n    delete abstract[0].attributes.id;\n\n    if (abstract[0].attributes.class) {\n      var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n        if (cls === config.replacementClass || cls.match(forSvg)) {\n          acc.toSvg.push(cls);\n        } else {\n          acc.toNode.push(cls);\n        }\n\n        return acc;\n      }, {\n        toNode: [],\n        toSvg: []\n      });\n      abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n      if (splitClasses.toNode.length === 0) {\n        node.removeAttribute('class');\n      } else {\n        node.setAttribute('class', splitClasses.toNode.join(' '));\n      }\n    }\n\n    var newInnerHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\n\nfunction performOperationSync(op) {\n  op();\n}\n\nfunction perform(mutations, callback) {\n  var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    var frame = performOperationSync;\n\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n\n    frame(function () {\n      var mutator = getMutator();\n      var mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\nvar disabled = false;\nfunction disableObservation() {\n  disabled = true;\n}\nfunction enableObservation() {\n  disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n\n  if (!config.observeMutations) {\n    return;\n  }\n\n  var _options$treeCallback = options.treeCallback,\n      treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n      _options$nodeCallback = options.nodeCallback,\n      nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n      _options$pseudoElemen = options.pseudoElementsCallback,\n      pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n      _options$observeMutat = options.observeMutationsRoot,\n      observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n  mo = new MUTATION_OBSERVER(function (objects) {\n    if (disabled) return;\n    var defaultPrefix = getDefaultUsablePrefix();\n    toArray(objects).forEach(function (mutationRecord) {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n\n        treeCallback(mutationRecord.target);\n      }\n\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback(mutationRecord.target.parentNode);\n      }\n\n      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n        if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n          var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n              prefix = _getCanonicalIcon.prefix,\n              iconName = _getCanonicalIcon.iconName;\n\n          mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n          if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n        } else if (hasBeenReplaced(mutationRecord.target)) {\n          nodeCallback(mutationRecord.target);\n        }\n      }\n    });\n  });\n  if (!IS_DOM) return;\n  mo.observe(observeMutationsRoot, {\n    childList: true,\n    attributes: true,\n    characterData: true,\n    subtree: true\n  });\n}\nfunction disconnect() {\n  if (!mo) return;\n  mo.disconnect();\n}\n\nfunction styleParser (node) {\n  var style = node.getAttribute('style');\n  var val = [];\n\n  if (style) {\n    val = style.split(';').reduce(function (acc, style) {\n      var styles = style.split(':');\n      var prop = styles[0];\n      var value = styles.slice(1);\n\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n\n      return acc;\n    }, {});\n  }\n\n  return val;\n}\n\nfunction classParser (node) {\n  var existingPrefix = node.getAttribute('data-prefix');\n  var existingIconName = node.getAttribute('data-icon');\n  var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  var val = getCanonicalIcon(classArray(node));\n\n  if (!val.prefix) {\n    val.prefix = getDefaultUsablePrefix();\n  }\n\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n\n  if (val.iconName && val.prefix) {\n    return val;\n  }\n\n  if (val.prefix && innerText.length > 0) {\n    val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n  }\n\n  return val;\n}\n\nfunction attributesParser (node) {\n  var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n\n    return acc;\n  }, {});\n  var title = node.getAttribute('title');\n  var titleId = node.getAttribute('data-fa-title-id');\n\n  if (config.autoA11y) {\n    if (title) {\n      extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n    } else {\n      extraAttributes['aria-hidden'] = 'true';\n      extraAttributes['focusable'] = 'false';\n    }\n  }\n\n  return extraAttributes;\n}\n\nfunction blankMeta() {\n  return {\n    iconName: null,\n    title: null,\n    titleId: null,\n    prefix: null,\n    transform: meaninglessTransform,\n    symbol: false,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    extra: {\n      classes: [],\n      styles: {},\n      attributes: {}\n    }\n  };\n}\nfunction parseMeta(node) {\n  var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    styleParser: true\n  };\n\n  var _classParser = classParser(node),\n      iconName = _classParser.iconName,\n      prefix = _classParser.prefix,\n      extraClasses = _classParser.rest;\n\n  var extraAttributes = attributesParser(node);\n  var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n  var extraStyles = parser.styleParser ? styleParser(node) : [];\n  return _objectSpread2({\n    iconName: iconName,\n    title: node.getAttribute('title'),\n    titleId: node.getAttribute('data-fa-title-id'),\n    prefix: prefix,\n    transform: meaninglessTransform,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    symbol: false,\n    extra: {\n      classes: extraClasses,\n      styles: extraStyles,\n      attributes: extraAttributes\n    }\n  }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n  var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n    styleParser: false\n  }) : parseMeta(node);\n\n  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n    return callProvided('generateLayersText', node, nodeMeta);\n  } else {\n    return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n  }\n}\n\nfunction onTree(root) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return Promise.resolve();\n  var htmlClassList = DOCUMENT.documentElement.classList;\n\n  var hclAdd = function hclAdd(suffix) {\n    return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var hclRemove = function hclRemove(suffix) {\n    return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$2);\n  var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n    return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n  })).join(', ');\n\n  if (prefixesDomQuery.length === 0) {\n    return Promise.resolve();\n  }\n\n  var candidates = [];\n\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e) {// noop\n  }\n\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return Promise.resolve();\n  }\n\n  var mark = perf.begin('onTree');\n  var mutations = candidates.reduce(function (acc, node) {\n    try {\n      var mutation = generateMutation(node);\n\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e) {\n      if (!PRODUCTION) {\n        if (e.name === 'MissingIcon') {\n          console.error(e);\n        }\n      }\n    }\n\n    return acc;\n  }, []);\n  return new Promise(function (resolve, reject) {\n    Promise.all(mutations).then(function (resolvedMutations) {\n      perform(resolvedMutations, function () {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(function (e) {\n      mark();\n      reject(e);\n    });\n  });\n}\n\nfunction onNode(node) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(function (mutation) {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\n\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    var mask = params.mask;\n\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n\n    return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n      mask: mask\n    }));\n  };\n}\n\nvar render = function render(iconDefinition) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform = params.transform,\n      transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n      _params$symbol = params.symbol,\n      symbol = _params$symbol === void 0 ? false : _params$symbol,\n      _params$mask = params.mask,\n      mask = _params$mask === void 0 ? null : _params$mask,\n      _params$maskId = params.maskId,\n      maskId = _params$maskId === void 0 ? null : _params$maskId,\n      _params$title = params.title,\n      title = _params$title === void 0 ? null : _params$title,\n      _params$titleId = params.titleId,\n      titleId = _params$titleId === void 0 ? null : _params$titleId,\n      _params$classes = params.classes,\n      classes = _params$classes === void 0 ? [] : _params$classes,\n      _params$attributes = params.attributes,\n      attributes = _params$attributes === void 0 ? {} : _params$attributes,\n      _params$styles = params.styles,\n      styles = _params$styles === void 0 ? {} : _params$styles;\n  if (!iconDefinition) return;\n  var prefix = iconDefinition.prefix,\n      iconName = iconDefinition.iconName,\n      icon = iconDefinition.icon;\n  return domVariants(_objectSpread2({\n    type: 'icon'\n  }, iconDefinition), function () {\n    callHooks('beforeDOMElementCreation', {\n      iconDefinition: iconDefinition,\n      params: params\n    });\n\n    if (config.autoA11y) {\n      if (title) {\n        attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n      } else {\n        attributes['aria-hidden'] = 'true';\n        attributes['focusable'] = 'false';\n      }\n    }\n\n    return makeInlineSvgAbstract({\n      icons: {\n        main: asFoundIcon(icon),\n        mask: mask ? asFoundIcon(mask.icon) : {\n          found: false,\n          width: null,\n          height: null,\n          icon: {}\n        }\n      },\n      prefix: prefix,\n      iconName: iconName,\n      transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n      symbol: symbol,\n      title: title,\n      maskId: maskId,\n      titleId: titleId,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: classes\n      }\n    });\n  });\n};\nvar ReplaceElements = {\n  mixout: function mixout() {\n    return {\n      icon: resolveIcons(render)\n    };\n  },\n  hooks: function hooks() {\n    return {\n      mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n        accumulator.treeCallback = onTree;\n        accumulator.nodeCallback = onNode;\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.i2svg = function (params) {\n      var _params$node = params.node,\n          node = _params$node === void 0 ? DOCUMENT : _params$node,\n          _params$callback = params.callback,\n          callback = _params$callback === void 0 ? function () {} : _params$callback;\n      return onTree(node, callback);\n    };\n\n    providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n      var iconName = nodeMeta.iconName,\n          title = nodeMeta.title,\n          titleId = nodeMeta.titleId,\n          prefix = nodeMeta.prefix,\n          transform = nodeMeta.transform,\n          symbol = nodeMeta.symbol,\n          mask = nodeMeta.mask,\n          maskId = nodeMeta.maskId,\n          extra = nodeMeta.extra;\n      return new Promise(function (resolve, reject) {\n        Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n          found: false,\n          width: 512,\n          height: 512,\n          icon: {}\n        })]).then(function (_ref) {\n          var _ref2 = _slicedToArray(_ref, 2),\n              main = _ref2[0],\n              mask = _ref2[1];\n\n          resolve([node, makeInlineSvgAbstract({\n            icons: {\n              main: main,\n              mask: mask\n            },\n            prefix: prefix,\n            iconName: iconName,\n            transform: transform,\n            symbol: symbol,\n            maskId: maskId,\n            title: title,\n            titleId: titleId,\n            extra: extra,\n            watchable: true\n          })]);\n        }).catch(reject);\n      });\n    };\n\n    providers$$1.generateAbstractIcon = function (_ref3) {\n      var children = _ref3.children,\n          attributes = _ref3.attributes,\n          main = _ref3.main,\n          transform = _ref3.transform,\n          styles = _ref3.styles;\n      var styleString = joinStyles(styles);\n\n      if (styleString.length > 0) {\n        attributes['style'] = styleString;\n      }\n\n      var nextChild;\n\n      if (transformIsMeaningful(transform)) {\n        nextChild = callProvided('generateAbstractTransformGrouping', {\n          main: main,\n          transform: transform,\n          containerWidth: main.width,\n          iconWidth: main.width\n        });\n      }\n\n      children.push(nextChild || main.icon);\n      return {\n        children: children,\n        attributes: attributes\n      };\n    };\n  }\n};\n\nvar Layers = {\n  mixout: function mixout() {\n    return {\n      layer: function layer(assembler) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$classes = params.classes,\n            classes = _params$classes === void 0 ? [] : _params$classes;\n        return domVariants({\n          type: 'layer'\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            assembler: assembler,\n            params: params\n          });\n          var children = [];\n          assembler(function (args) {\n            Array.isArray(args) ? args.map(function (a) {\n              children = children.concat(a.abstract);\n            }) : children = children.concat(args.abstract);\n          });\n          return [{\n            tag: 'span',\n            attributes: {\n              class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n            },\n            children: children\n          }];\n        });\n      }\n    };\n  }\n};\n\nvar LayersCounter = {\n  mixout: function mixout() {\n    return {\n      counter: function counter(content) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$title = params.title,\n            title = _params$title === void 0 ? null : _params$title,\n            _params$classes = params.classes,\n            classes = _params$classes === void 0 ? [] : _params$classes,\n            _params$attributes = params.attributes,\n            attributes = _params$attributes === void 0 ? {} : _params$attributes,\n            _params$styles = params.styles,\n            styles = _params$styles === void 0 ? {} : _params$styles;\n        return domVariants({\n          type: 'counter',\n          content: content\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            content: content,\n            params: params\n          });\n          return makeLayersCounterAbstract({\n            content: content.toString(),\n            title: title,\n            extra: {\n              attributes: attributes,\n              styles: styles,\n              classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n            }\n          });\n        });\n      }\n    };\n  }\n};\n\nvar LayersText = {\n  mixout: function mixout() {\n    return {\n      text: function text(content) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$transform = params.transform,\n            transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n            _params$title = params.title,\n            title = _params$title === void 0 ? null : _params$title,\n            _params$classes = params.classes,\n            classes = _params$classes === void 0 ? [] : _params$classes,\n            _params$attributes = params.attributes,\n            attributes = _params$attributes === void 0 ? {} : _params$attributes,\n            _params$styles = params.styles,\n            styles = _params$styles === void 0 ? {} : _params$styles;\n        return domVariants({\n          type: 'text',\n          content: content\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            content: content,\n            params: params\n          });\n          return makeLayersTextAbstract({\n            content: content,\n            transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n            title: title,\n            extra: {\n              attributes: attributes,\n              styles: styles,\n              classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n            }\n          });\n        });\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.generateLayersText = function (node, nodeMeta) {\n      var title = nodeMeta.title,\n          transform = nodeMeta.transform,\n          extra = nodeMeta.extra;\n      var width = null;\n      var height = null;\n\n      if (IS_IE) {\n        var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n        var boundingClientRect = node.getBoundingClientRect();\n        width = boundingClientRect.width / computedFontSize;\n        height = boundingClientRect.height / computedFontSize;\n      }\n\n      if (config.autoA11y && !title) {\n        extra.attributes['aria-hidden'] = 'true';\n      }\n\n      return Promise.resolve([node, makeLayersTextAbstract({\n        content: node.innerHTML,\n        width: width,\n        height: height,\n        transform: transform,\n        title: title,\n        extra: extra,\n        watchable: true\n      })]);\n    };\n  }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n  var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n  var codePoint = codePointAt(cleaned, 0);\n  var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n  var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n  return {\n    value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n    isSecondary: isPrependTen || isDoubled\n  };\n}\n\nfunction replaceForPosition(node, position) {\n  var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new Promise(function (resolve, reject) {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n\n    var children = toArray(node.children);\n    var alreadyProcessedPseudoElement = children.filter(function (c) {\n      return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n    })[0];\n    var styles = WINDOW.getComputedStyle(node, position);\n    var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n    var fontWeight = styles.getPropertyValue('font-weight');\n    var content = styles.getPropertyValue('content');\n\n    if (alreadyProcessedPseudoElement && !fontFamily) {\n      // If we've already processed it but the current computed style does not result in a font-family,\n      // that probably means that a class name that was previously present to make the icon has been\n      // removed. So we now should delete the icon.\n      node.removeChild(alreadyProcessedPseudoElement);\n      return resolve();\n    } else if (fontFamily && content !== 'none' && content !== '') {\n      var _content = styles.getPropertyValue('content');\n\n      var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n\n      var _hexValueFromContent = hexValueFromContent(_content),\n          hexValue = _hexValueFromContent.value,\n          isSecondary = _hexValueFromContent.isSecondary;\n\n      var isV4 = fontFamily[0].startsWith('FontAwesome');\n      var iconName = byUnicode(prefix, hexValue);\n      var iconIdentifier = iconName;\n\n      if (isV4) {\n        var iconName4 = byOldUnicode(hexValue);\n\n        if (iconName4.iconName && iconName4.prefix) {\n          iconName = iconName4.iconName;\n          prefix = iconName4.prefix;\n        }\n      } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n      // already done so with the same prefix and iconName\n\n\n      if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n\n        var meta = blankMeta();\n        var extra = meta.extra;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(function (main) {\n          var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n            icons: {\n              main: main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix: prefix,\n            iconName: iconIdentifier,\n            extra: extra,\n            watchable: true\n          }));\n          var element = DOCUMENT.createElement('svg');\n\n          if (position === '::before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n\n          element.outerHTML = abstract.map(function (a) {\n            return toHtml(a);\n          }).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\n\nfunction replace(node) {\n  return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n  if (!IS_DOM) return;\n  return new Promise(function (resolve, reject) {\n    var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n    var end = perf.begin('searchPseudoElements');\n    disableObservation();\n    Promise.all(operations).then(function () {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(function () {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\n\nvar PseudoElements = {\n  hooks: function hooks() {\n    return {\n      mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n        accumulator.pseudoElementsCallback = searchPseudoElements;\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.pseudoElements2svg = function (params) {\n      var _params$node = params.node,\n          node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n    };\n  }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n  mixout: function mixout() {\n    return {\n      dom: {\n        unwatch: function unwatch() {\n          disableObservation();\n          _unwatched = true;\n        }\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      bootstrap: function bootstrap() {\n        observe(chainHooks('mutationObserverCallbacks', {}));\n      },\n      noAuto: function noAuto() {\n        disconnect();\n      },\n      watch: function watch(params) {\n        var observeMutationsRoot = params.observeMutationsRoot;\n\n        if (_unwatched) {\n          enableObservation();\n        } else {\n          observe(chainHooks('mutationObserverCallbacks', {\n            observeMutationsRoot: observeMutationsRoot\n          }));\n        }\n      }\n    };\n  }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n  var transform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    flipX: false,\n    flipY: false,\n    rotate: 0\n  };\n  return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n    var parts = n.toLowerCase().split('-');\n    var first = parts[0];\n    var rest = parts.slice(1).join('-');\n\n    if (first && rest === 'h') {\n      acc.flipX = true;\n      return acc;\n    }\n\n    if (first && rest === 'v') {\n      acc.flipY = true;\n      return acc;\n    }\n\n    rest = parseFloat(rest);\n\n    if (isNaN(rest)) {\n      return acc;\n    }\n\n    switch (first) {\n      case 'grow':\n        acc.size = acc.size + rest;\n        break;\n\n      case 'shrink':\n        acc.size = acc.size - rest;\n        break;\n\n      case 'left':\n        acc.x = acc.x - rest;\n        break;\n\n      case 'right':\n        acc.x = acc.x + rest;\n        break;\n\n      case 'up':\n        acc.y = acc.y - rest;\n        break;\n\n      case 'down':\n        acc.y = acc.y + rest;\n        break;\n\n      case 'rotate':\n        acc.rotate = acc.rotate + rest;\n        break;\n    }\n\n    return acc;\n  }, transform);\n};\nvar PowerTransforms = {\n  mixout: function mixout() {\n    return {\n      parse: {\n        transform: function transform(transformString) {\n          return parseTransformString(transformString);\n        }\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var transformString = node.getAttribute('data-fa-transform');\n\n        if (transformString) {\n          accumulator.transform = parseTransformString(transformString);\n        }\n\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.generateAbstractTransformGrouping = function (_ref) {\n      var main = _ref.main,\n          transform = _ref.transform,\n          containerWidth = _ref.containerWidth,\n          iconWidth = _ref.iconWidth;\n      var outer = {\n        transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n      };\n      var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n      var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n      var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n      var inner = {\n        transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n      };\n      var path = {\n        transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n      };\n      var operations = {\n        outer: outer,\n        inner: inner,\n        path: path\n      };\n      return {\n        tag: 'g',\n        attributes: _objectSpread2({}, operations.outer),\n        children: [{\n          tag: 'g',\n          attributes: _objectSpread2({}, operations.inner),\n          children: [{\n            tag: main.icon.tag,\n            children: main.icon.children,\n            attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n          }]\n        }]\n      };\n    };\n  }\n};\n\nvar ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\n\nfunction fillBlack(abstract) {\n  var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n\n  return abstract;\n}\n\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\n\nvar Masks = {\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var maskData = node.getAttribute('data-fa-mask');\n        var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n          return i.trim();\n        }));\n\n        if (!mask.prefix) {\n          mask.prefix = getDefaultUsablePrefix();\n        }\n\n        accumulator.mask = mask;\n        accumulator.maskId = node.getAttribute('data-fa-mask-id');\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.generateAbstractMask = function (_ref) {\n      var children = _ref.children,\n          attributes = _ref.attributes,\n          main = _ref.main,\n          mask = _ref.mask,\n          explicitMaskId = _ref.maskId,\n          transform = _ref.transform;\n      var mainWidth = main.width,\n          mainPath = main.icon;\n      var maskWidth = mask.width,\n          maskPath = mask.icon;\n      var trans = transformForSvg({\n        transform: transform,\n        containerWidth: maskWidth,\n        iconWidth: mainWidth\n      });\n      var maskRect = {\n        tag: 'rect',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          fill: 'white'\n        })\n      };\n      var maskInnerGroupChildrenMixin = mainPath.children ? {\n        children: mainPath.children.map(fillBlack)\n      } : {};\n      var maskInnerGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.inner),\n        children: [fillBlack(_objectSpread2({\n          tag: mainPath.tag,\n          attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n        }, maskInnerGroupChildrenMixin))]\n      };\n      var maskOuterGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.outer),\n        children: [maskInnerGroup]\n      };\n      var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n      var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n      var maskTag = {\n        tag: 'mask',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          id: maskId,\n          maskUnits: 'userSpaceOnUse',\n          maskContentUnits: 'userSpaceOnUse'\n        }),\n        children: [maskRect, maskOuterGroup]\n      };\n      var defs = {\n        tag: 'defs',\n        children: [{\n          tag: 'clipPath',\n          attributes: {\n            id: clipId\n          },\n          children: deGroup(maskPath)\n        }, maskTag]\n      };\n      children.push(defs, {\n        tag: 'rect',\n        attributes: _objectSpread2({\n          fill: 'currentColor',\n          'clip-path': \"url(#\".concat(clipId, \")\"),\n          mask: \"url(#\".concat(maskId, \")\")\n        }, ALL_SPACE)\n      });\n      return {\n        children: children,\n        attributes: attributes\n      };\n    };\n  }\n};\n\nvar MissingIconIndicator = {\n  provides: function provides(providers) {\n    var reduceMotion = false;\n\n    if (WINDOW.matchMedia) {\n      reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    }\n\n    providers.missingIconAbstract = function () {\n      var gChildren = [];\n      var FILL = {\n        fill: 'currentColor'\n      };\n      var ANIMATION_BASE = {\n        attributeType: 'XML',\n        repeatCount: 'indefinite',\n        dur: '2s'\n      }; // Ring\n\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n        })\n      });\n\n      var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n        attributeName: 'opacity'\n      });\n\n      var dot = {\n        tag: 'circle',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          cx: '256',\n          cy: '364',\n          r: '28'\n        }),\n        children: []\n      };\n\n      if (!reduceMotion) {\n        dot.children.push({\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n            attributeName: 'r',\n            values: '28;14;28;28;14;28;'\n          })\n        }, {\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;1;1;0;1;'\n          })\n        });\n      }\n\n      gChildren.push(dot);\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          opacity: '1',\n          d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n        }),\n        children: reduceMotion ? [] : [{\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;0;0;0;1;'\n          })\n        }]\n      });\n\n      if (!reduceMotion) {\n        // Exclamation\n        gChildren.push({\n          tag: 'path',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            opacity: '0',\n            d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n          }),\n          children: [{\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n              values: '0;0;1;1;0;0;'\n            })\n          }]\n        });\n      }\n\n      return {\n        tag: 'g',\n        attributes: {\n          'class': 'missing'\n        },\n        children: gChildren\n      };\n    };\n  }\n};\n\nvar SvgSymbols = {\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var symbolData = node.getAttribute('data-fa-symbol');\n        var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n        accumulator['symbol'] = symbol;\n        return accumulator;\n      }\n    };\n  }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n  mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\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}","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n  (global = global || self, factory(global.ReactStripe = {}, global.React));\n}(this, (function (exports, React) { 'use strict';\n\n  React = React && Object.prototype.hasOwnProperty.call(React, 'default') ? React['default'] : React;\n\n  function 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\n  function _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\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\n  function _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\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    var _i = arr && (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\n  function _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\n  function _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\n  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  }\n\n  function createCommonjsModule(fn, module) {\n  \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n  }\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  var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n  var ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\n  function emptyFunction() {}\n\n  function emptyFunctionWithReset() {}\n\n  emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n  var factoryWithThrowingShims = function () {\n    function shim(props, propName, componentName, location, propFullName, secret) {\n      if (secret === ReactPropTypesSecret_1) {\n        // It is still safe when called from React.\n        return;\n      }\n\n      var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n      err.name = 'Invariant Violation';\n      throw err;\n    }\n    shim.isRequired = shim;\n\n    function getShim() {\n      return shim;\n    }\n    // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n    var ReactPropTypes = {\n      array: shim,\n      bool: shim,\n      func: shim,\n      number: shim,\n      object: shim,\n      string: shim,\n      symbol: shim,\n      any: shim,\n      arrayOf: getShim,\n      element: shim,\n      elementType: shim,\n      instanceOf: getShim,\n      node: shim,\n      objectOf: getShim,\n      oneOf: getShim,\n      oneOfType: getShim,\n      shape: getShim,\n      exact: getShim,\n      checkPropTypes: emptyFunctionWithReset,\n      resetWarningCache: emptyFunction\n    };\n    ReactPropTypes.PropTypes = ReactPropTypes;\n    return ReactPropTypes;\n  };\n\n  var propTypes = createCommonjsModule(function (module) {\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    // By explicitly using `prop-types` you are opting into new production behavior.\n    // http://fb.me/prop-types-in-prod\n    module.exports = factoryWithThrowingShims();\n  }\n  });\n\n  var usePrevious = function usePrevious(value) {\n    var ref = React.useRef(value);\n    React.useEffect(function () {\n      ref.current = value;\n    }, [value]);\n    return ref.current;\n  };\n\n  var isUnknownObject = function isUnknownObject(raw) {\n    return raw !== null && _typeof(raw) === 'object';\n  };\n  var isPromise = function isPromise(raw) {\n    return isUnknownObject(raw) && typeof raw.then === 'function';\n  }; // We are using types to enforce the `stripe` prop in this lib,\n  // but in an untyped integration `stripe` could be anything, so we need\n  // to do some sanity validation to prevent type errors.\n\n  var isStripe = function isStripe(raw) {\n    return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n  };\n\n  var PLAIN_OBJECT_STR = '[object Object]';\n  var isEqual = function isEqual(left, right) {\n    if (!isUnknownObject(left) || !isUnknownObject(right)) {\n      return left === right;\n    }\n\n    var leftArray = Array.isArray(left);\n    var rightArray = Array.isArray(right);\n    if (leftArray !== rightArray) return false;\n    var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n    var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n    if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n    // fallback to reference check.\n\n    if (!leftPlainObject && !leftArray) return left === right;\n    var leftKeys = Object.keys(left);\n    var rightKeys = Object.keys(right);\n    if (leftKeys.length !== rightKeys.length) return false;\n    var keySet = {};\n\n    for (var i = 0; i < leftKeys.length; i += 1) {\n      keySet[leftKeys[i]] = true;\n    }\n\n    for (var _i = 0; _i < rightKeys.length; _i += 1) {\n      keySet[rightKeys[_i]] = true;\n    }\n\n    var allKeys = Object.keys(keySet);\n\n    if (allKeys.length !== leftKeys.length) {\n      return false;\n    }\n\n    var l = left;\n    var r = right;\n\n    var pred = function pred(key) {\n      return isEqual(l[key], r[key]);\n    };\n\n    return allKeys.every(pred);\n  };\n\n  var extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n    if (!isUnknownObject(options)) {\n      return null;\n    }\n\n    return Object.keys(options).reduce(function (newOptions, key) {\n      var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n      if (immutableKeys.includes(key)) {\n        if (isUpdated) {\n          console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n        }\n\n        return newOptions;\n      }\n\n      if (!isUpdated) {\n        return newOptions;\n      }\n\n      return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n    }, null);\n  };\n\n  var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n  // integration `stripe` could be anything, so we need to do some sanity\n  // validation to prevent type errors.\n\n  var validateStripe = function validateStripe(maybeStripe) {\n    if (maybeStripe === null || isStripe(maybeStripe)) {\n      return maybeStripe;\n    }\n\n    throw new Error(INVALID_STRIPE_ERROR);\n  };\n\n  var parseStripeProp = function parseStripeProp(raw) {\n    if (isPromise(raw)) {\n      return {\n        tag: 'async',\n        stripePromise: Promise.resolve(raw).then(validateStripe)\n      };\n    }\n\n    var stripe = validateStripe(raw);\n\n    if (stripe === null) {\n      return {\n        tag: 'empty'\n      };\n    }\n\n    return {\n      tag: 'sync',\n      stripe: stripe\n    };\n  };\n\n  var ElementsContext = /*#__PURE__*/React.createContext(null);\n  ElementsContext.displayName = 'ElementsContext';\n  var parseElementsContext = function parseElementsContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n    }\n\n    return ctx;\n  };\n  var CartElementContext = /*#__PURE__*/React.createContext(null);\n  CartElementContext.displayName = 'CartElementContext';\n  var parseCartElementContext = function parseCartElementContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n    }\n\n    return ctx;\n  };\n  /**\n   * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n   * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n   *\n   * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n   * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n   * Pass the returned `Promise` to `Elements`.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n   */\n\n  var Elements = function Elements(_ref) {\n    var rawStripeProp = _ref.stripe,\n        options = _ref.options,\n        children = _ref.children;\n    var parsed = React.useMemo(function () {\n      return parseStripeProp(rawStripeProp);\n    }, [rawStripeProp]);\n\n    var _React$useState = React.useState(null),\n        _React$useState2 = _slicedToArray(_React$useState, 2),\n        cart = _React$useState2[0],\n        setCart = _React$useState2[1];\n\n    var _React$useState3 = React.useState(null),\n        _React$useState4 = _slicedToArray(_React$useState3, 2),\n        cartState = _React$useState4[0],\n        setCartState = _React$useState4[1]; // For a sync stripe instance, initialize into context\n\n\n    var _React$useState5 = React.useState(function () {\n      return {\n        stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n        elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n      };\n    }),\n        _React$useState6 = _slicedToArray(_React$useState5, 2),\n        ctx = _React$useState6[0],\n        setContext = _React$useState6[1];\n\n    React.useEffect(function () {\n      var isMounted = true;\n\n      var safeSetContext = function safeSetContext(stripe) {\n        setContext(function (ctx) {\n          // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n          if (ctx.stripe) return ctx;\n          return {\n            stripe: stripe,\n            elements: stripe.elements(options)\n          };\n        });\n      }; // For an async stripePromise, store it in context once resolved\n\n\n      if (parsed.tag === 'async' && !ctx.stripe) {\n        parsed.stripePromise.then(function (stripe) {\n          if (stripe && isMounted) {\n            // Only update Elements context if the component is still mounted\n            // and stripe is not null. We allow stripe to be null to make\n            // handling SSR easier.\n            safeSetContext(stripe);\n          }\n        });\n      } else if (parsed.tag === 'sync' && !ctx.stripe) {\n        // Or, handle a sync stripe instance going from null -> populated\n        safeSetContext(parsed.stripe);\n      }\n\n      return function () {\n        isMounted = false;\n      };\n    }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n    var prevStripe = usePrevious(rawStripeProp);\n    React.useEffect(function () {\n      if (prevStripe !== null && prevStripe !== rawStripeProp) {\n        console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n      }\n    }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n    var prevOptions = usePrevious(options);\n    React.useEffect(function () {\n      if (!ctx.elements) {\n        return;\n      }\n\n      var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n      if (updates) {\n        ctx.elements.update(updates);\n      }\n    }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n    React.useEffect(function () {\n      var anyStripe = ctx.stripe;\n\n      if (!anyStripe || !anyStripe._registerWrapper || !anyStripe.registerAppInfo) {\n        return;\n      }\n\n      anyStripe._registerWrapper({\n        name: 'react-stripe-js',\n        version: \"1.16.4\"\n      });\n\n      anyStripe.registerAppInfo({\n        name: 'react-stripe-js',\n        version: \"1.16.4\",\n        url: 'https://stripe.com/docs/stripe-js/react'\n      });\n    }, [ctx.stripe]);\n    return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n      value: ctx\n    }, /*#__PURE__*/React.createElement(CartElementContext.Provider, {\n      value: {\n        cart: cart,\n        setCart: setCart,\n        cartState: cartState,\n        setCartState: setCartState\n      }\n    }, children));\n  };\n  Elements.propTypes = {\n    stripe: propTypes.any,\n    options: propTypes.object\n  };\n  var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n    var ctx = React.useContext(ElementsContext);\n    return parseElementsContext(ctx, useCaseMessage);\n  };\n  var useCartElementContextWithUseCase = function useCartElementContextWithUseCase(useCaseMessage) {\n    var ctx = React.useContext(CartElementContext);\n    return parseCartElementContext(ctx, useCaseMessage);\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n   */\n\n  var useElements = function useElements() {\n    var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n        elements = _useElementsContextWi.elements;\n\n    return elements;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n   */\n\n  var useStripe = function useStripe() {\n    var _useElementsContextWi2 = useElementsContextWithUseCase('calls useStripe()'),\n        stripe = _useElementsContextWi2.stripe;\n\n    return stripe;\n  };\n  /**\n   * @docs https://stripe.com/docs/payments/checkout/cart-element\n   */\n\n  var useCartElement = function useCartElement() {\n    var _useCartElementContex = useCartElementContextWithUseCase('calls useCartElement()'),\n        cart = _useCartElementContex.cart;\n\n    return cart;\n  };\n  /**\n   * @docs https://stripe.com/docs/payments/checkout/cart-element\n   */\n\n  var useCartElementState = function useCartElementState() {\n    var _useCartElementContex2 = useCartElementContextWithUseCase('calls useCartElementState()'),\n        cartState = _useCartElementContex2.cartState;\n\n    return cartState;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n   */\n\n  var ElementsConsumer = function ElementsConsumer(_ref2) {\n    var children = _ref2.children;\n    var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>'); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n    return children(ctx);\n  };\n  ElementsConsumer.propTypes = {\n    children: propTypes.func.isRequired\n  };\n\n  var useAttachEvent = function useAttachEvent(element, event, cb) {\n    var cbDefined = !!cb;\n    var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n    // Using a ref saves us from calling element.on/.off every render.\n\n    React.useEffect(function () {\n      cbRef.current = cb;\n    }, [cb]);\n    React.useEffect(function () {\n      if (!cbDefined || !element) {\n        return function () {};\n      }\n\n      var decoratedCb = function decoratedCb() {\n        if (cbRef.current) {\n          cbRef.current.apply(cbRef, arguments);\n        }\n      };\n\n      element.on(event, decoratedCb);\n      return function () {\n        element.off(event, decoratedCb);\n      };\n    }, [cbDefined, event, element, cbRef]);\n  };\n\n  var capitalized = function capitalized(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  };\n\n  var createElementComponent = function createElementComponent(type, isServer) {\n    var displayName = \"\".concat(capitalized(type), \"Element\");\n\n    var ClientElement = function ClientElement(_ref) {\n      var id = _ref.id,\n          className = _ref.className,\n          _ref$options = _ref.options,\n          options = _ref$options === void 0 ? {} : _ref$options,\n          onBlur = _ref.onBlur,\n          onFocus = _ref.onFocus,\n          onReady = _ref.onReady,\n          onChange = _ref.onChange,\n          onEscape = _ref.onEscape,\n          onClick = _ref.onClick,\n          onLoadError = _ref.onLoadError,\n          onLoaderStart = _ref.onLoaderStart,\n          onNetworksChange = _ref.onNetworksChange,\n          onCheckout = _ref.onCheckout,\n          onLineItemClick = _ref.onLineItemClick,\n          onConfirm = _ref.onConfirm,\n          onCancel = _ref.onCancel,\n          onShippingAddressChange = _ref.onShippingAddressChange,\n          onShippingRateChange = _ref.onShippingRateChange;\n\n      var _useElementsContextWi = useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n          elements = _useElementsContextWi.elements;\n\n      var _React$useState = React.useState(null),\n          _React$useState2 = _slicedToArray(_React$useState, 2),\n          element = _React$useState2[0],\n          setElement = _React$useState2[1];\n\n      var elementRef = React.useRef(null);\n      var domNode = React.useRef(null);\n\n      var _useCartElementContex = useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n          setCart = _useCartElementContex.setCart,\n          setCartState = _useCartElementContex.setCartState; // For every event where the merchant provides a callback, call element.on\n      // with that callback. If the merchant ever changes the callback, removes\n      // the old callback with element.off and then call element.on with the new one.\n\n\n      useAttachEvent(element, 'blur', onBlur);\n      useAttachEvent(element, 'focus', onFocus);\n      useAttachEvent(element, 'escape', onEscape);\n      useAttachEvent(element, 'click', onClick);\n      useAttachEvent(element, 'loaderror', onLoadError);\n      useAttachEvent(element, 'loaderstart', onLoaderStart);\n      useAttachEvent(element, 'networkschange', onNetworksChange);\n      useAttachEvent(element, 'lineitemclick', onLineItemClick);\n      useAttachEvent(element, 'confirm', onConfirm);\n      useAttachEvent(element, 'cancel', onCancel);\n      useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n      useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n      var readyCallback;\n\n      if (type === 'cart') {\n        readyCallback = function readyCallback(event) {\n          setCartState(event);\n          onReady && onReady(event);\n        };\n      } else if (onReady) {\n        if (type === 'payButton') {\n          // Passes through the event, which includes visible PM types\n          readyCallback = onReady;\n        } else {\n          // For other Elements, pass through the Element itself.\n          readyCallback = function readyCallback() {\n            onReady(element);\n          };\n        }\n      }\n\n      useAttachEvent(element, 'ready', readyCallback);\n      var changeCallback = type === 'cart' ? function (event) {\n        setCartState(event);\n        onChange && onChange(event);\n      } : onChange;\n      useAttachEvent(element, 'change', changeCallback);\n      var checkoutCallback = type === 'cart' ? function (event) {\n        setCartState(event);\n        onCheckout && onCheckout(event);\n      } : onCheckout;\n      useAttachEvent(element, 'checkout', checkoutCallback);\n      React.useLayoutEffect(function () {\n        if (elementRef.current === null && elements && domNode.current !== null) {\n          var newElement = elements.create(type, options);\n\n          if (type === 'cart' && setCart) {\n            // we know that elements.create return value must be of type StripeCartElement if type is 'cart',\n            // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n            setCart(newElement);\n          } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n          elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n          setElement(newElement);\n          newElement.mount(domNode.current);\n        }\n      }, [elements, options, setCart]);\n      var prevOptions = usePrevious(options);\n      React.useEffect(function () {\n        if (!elementRef.current) {\n          return;\n        }\n\n        var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n        if (updates) {\n          elementRef.current.update(updates);\n        }\n      }, [options, prevOptions]);\n      React.useLayoutEffect(function () {\n        return function () {\n          if (elementRef.current) {\n            elementRef.current.destroy();\n            elementRef.current = null;\n          }\n        };\n      }, []);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className,\n        ref: domNode\n      });\n    }; // Only render the Element wrapper in a server environment.\n\n\n    var ServerElement = function ServerElement(props) {\n      // Validate that we are in the right context by calling useElementsContextWithUseCase.\n      useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      var id = props.id,\n          className = props.className;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className\n      });\n    };\n\n    var Element = isServer ? ServerElement : ClientElement;\n    Element.propTypes = {\n      id: propTypes.string,\n      className: propTypes.string,\n      onChange: propTypes.func,\n      onBlur: propTypes.func,\n      onFocus: propTypes.func,\n      onReady: propTypes.func,\n      onEscape: propTypes.func,\n      onClick: propTypes.func,\n      onLoadError: propTypes.func,\n      onLoaderStart: propTypes.func,\n      onNetworksChange: propTypes.func,\n      onCheckout: propTypes.func,\n      onLineItemClick: propTypes.func,\n      onConfirm: propTypes.func,\n      onCancel: propTypes.func,\n      onShippingAddressChange: propTypes.func,\n      onShippingRateChange: propTypes.func,\n      options: propTypes.object\n    };\n    Element.displayName = displayName;\n    Element.__elementType = type;\n    return Element;\n  };\n\n  var isServer = typeof window === 'undefined';\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardElement = createElementComponent('card', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardNumberElement = createElementComponent('cardNumber', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardCvcElement = createElementComponent('cardCvc', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var FpxBankElement = createElementComponent('fpxBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IbanElement = createElementComponent('iban', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IdealBankElement = createElementComponent('idealBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var P24BankElement = createElementComponent('p24Bank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var EpsBankElement = createElementComponent('epsBank', isServer);\n  var PaymentElement = createElementComponent('payment', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PayButtonElement = createElementComponent('payButton', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AddressElement = createElementComponent('address', isServer);\n  /**\n   * @deprecated\n   * Use `AddressElement` instead.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/elements/cart-element\n   */\n\n  var CartElement = createElementComponent('cart', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n  exports.AddressElement = AddressElement;\n  exports.AffirmMessageElement = AffirmMessageElement;\n  exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n  exports.AuBankAccountElement = AuBankAccountElement;\n  exports.CardCvcElement = CardCvcElement;\n  exports.CardElement = CardElement;\n  exports.CardExpiryElement = CardExpiryElement;\n  exports.CardNumberElement = CardNumberElement;\n  exports.CartElement = CartElement;\n  exports.Elements = Elements;\n  exports.ElementsConsumer = ElementsConsumer;\n  exports.EpsBankElement = EpsBankElement;\n  exports.FpxBankElement = FpxBankElement;\n  exports.IbanElement = IbanElement;\n  exports.IdealBankElement = IdealBankElement;\n  exports.LinkAuthenticationElement = LinkAuthenticationElement;\n  exports.P24BankElement = P24BankElement;\n  exports.PayButtonElement = PayButtonElement;\n  exports.PaymentElement = PaymentElement;\n  exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n  exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n  exports.ShippingAddressElement = ShippingAddressElement;\n  exports.useCartElement = useCartElement;\n  exports.useCartElementState = useCartElementState;\n  exports.useElements = useElements;\n  exports.useStripe = useStripe;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/|  +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","\"use strict\";\nexports.__esModule = true;\nexports.joinClassNames = void 0;\nexports.joinClassNames = function () {\n    var classNames = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        classNames[_i] = arguments[_i];\n    }\n    return classNames.filter(function (c) { return c; }).join(' ');\n};\n","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 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\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.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 (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\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};","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};","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 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 – 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 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\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\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 { 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 function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\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 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\";\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 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}","module.exports = require('./lib/index.js');\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}","module.exports = require('./lib/axios');","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n    if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n        return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n    }\r\n    return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n    var _a;\r\n    if (evtNamespace) {\r\n        var theNamespace_1 = STR_EMPTY;\r\n        if (isArray(evtNamespace)) {\r\n            theNamespace_1 = STR_EMPTY;\r\n            arrForEach(evtNamespace, function (name) {\r\n                name = _normalizeNamespace(name);\r\n                if (name) {\r\n                    if (name[0] !== \".\") {\r\n                        name = \".\" + name;\r\n                    }\r\n                    theNamespace_1 += name;\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n        }\r\n        if (theNamespace_1) {\r\n            if (theNamespace_1[0] !== \".\") {\r\n                theNamespace_1 = \".\" + theNamespace_1;\r\n            }\r\n            // We may only have the namespace and not an eventName\r\n            eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n        }\r\n    }\r\n    var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n    return _a = {},\r\n        _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n        _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n        _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n    var theEvents = [];\r\n    var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n    var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n    objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n        arrForEach(registeredEvents, function (value) {\r\n            var _a;\r\n            if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n                if (!evtName.ns || evtName.ns === evtName.ns) {\r\n                    theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n                        _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n                        _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n                        _a));\r\n                }\r\n            }\r\n        });\r\n    });\r\n    return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n    if (addDefault === void 0) { addDefault = true; }\r\n    var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n    var registeredEvents = aiEvts[evtName];\r\n    if (!registeredEvents) {\r\n        registeredEvents = aiEvts[evtName] = [];\r\n    }\r\n    return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n    if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n        if (obj[strRemoveEventListener]) {\r\n            obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n        }\r\n        else if (obj[strDetachEvent]) {\r\n            obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n        }\r\n    }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n    var result = false;\r\n    if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n        if (obj[strAddEventHelper]) {\r\n            // all browsers except IE before version 9\r\n            obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n            result = true;\r\n        }\r\n        else if (obj[strAttachEvent]) {\r\n            // IE before version 9\r\n            obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n            result = true;\r\n        }\r\n    }\r\n    return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n    var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n    while (idx--) {\r\n        var theEvent = events[idx];\r\n        if (theEvent) {\r\n            if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n                if (!unRegFn || unRegFn(theEvent)) {\r\n                    _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n                    // Remove the registered event\r\n                    events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n    if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n        _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n    }\r\n    else {\r\n        var eventCache = elmNodeData.get(target, strEvents, {});\r\n        objForEachKey(eventCache, function (evtType, events) {\r\n            _doUnregister(target, events, evtName, unRegFn);\r\n        });\r\n        // Cleanup\r\n        if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n            elmNodeData.kill(target, strEvents);\r\n        }\r\n    }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n    var newNamespaces;\r\n    if (namespaces) {\r\n        if (isArray(namespaces)) {\r\n            newNamespaces = [theNamespace].concat(namespaces);\r\n        }\r\n        else {\r\n            newNamespaces = [theNamespace, namespaces];\r\n        }\r\n        // resort the namespaces so they are always in order\r\n        newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n    }\r\n    else {\r\n        newNamespaces = theNamespace;\r\n    }\r\n    return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n    var _a;\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    var result = false;\r\n    if (target) {\r\n        try {\r\n            var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n            result = _doAttach(target, evtName, handlerRef, useCapture);\r\n            if (result && elmNodeData.accept(target)) {\r\n                var registeredEvent = (_a = {\r\n                        guid: _guid++,\r\n                        evtName: evtName\r\n                    },\r\n                    _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n                    _a.capture = useCapture,\r\n                    _a);\r\n                _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Just Ignore any error so that we don't break any execution path\r\n        }\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    if (target) {\r\n        try {\r\n            var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n            var found_1 = false;\r\n            _unregisterEvents(target, evtName_1, function (regEvent) {\r\n                if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n                    found_1 = true;\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            if (!found_1) {\r\n                // fallback to try and remove as requested\r\n                _doDetach(target, evtName_1, handlerRef, useCapture);\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Just Ignore any error so that we don't break any execution path\r\n        }\r\n    }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n    var result = false;\r\n    var w = getWindow();\r\n    if (w) {\r\n        result = eventOn(w, eventName, callback, evtNamespace);\r\n        result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n    }\r\n    var doc = getDocument();\r\n    if (doc) {\r\n        result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n    var w = getWindow();\r\n    if (w) {\r\n        eventOff(w, eventName, callback, evtNamespace);\r\n        eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n    }\r\n    var doc = getDocument();\r\n    if (doc) {\r\n        eventOff(doc, eventName, callback, evtNamespace);\r\n    }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n    var added = false;\r\n    if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        arrForEach(events, function (name) {\r\n            if (name) {\r\n                if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n                    added = addEventHandler(name, listener, evtNamespace) || added;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n    var added = false;\r\n    if (listener && events && isArray(events)) {\r\n        added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n        if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n            added = _addEventListeners(events, listener, null, evtNamespace);\r\n        }\r\n    }\r\n    return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n    if (events && isArray(events)) {\r\n        arrForEach(events, function (name) {\r\n            if (name) {\r\n                removeEventHandler(name, listener, evtNamespace);\r\n            }\r\n        });\r\n    }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n    // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n    // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n    return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n    removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n    function _handlePageVisibility(evt) {\r\n        var doc = getDocument();\r\n        if (listener && doc && doc.visibilityState === \"hidden\") {\r\n            listener(evt);\r\n        }\r\n    }\r\n    // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n    var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n    var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n    if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n        pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n    }\r\n    if (!pageUnloadAdded && excludeEvents) {\r\n        // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n        pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n    }\r\n    return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n    // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n    var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n    removeEventListeners([strPageHide], listener, newNamespaces);\r\n    removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n    function _handlePageVisibility(evt) {\r\n        var doc = getDocument();\r\n        if (listener && doc && doc.visibilityState === \"visible\") {\r\n            listener(evt);\r\n        }\r\n    }\r\n    // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n    var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n    var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n    pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n    if (!pageShowAdded && excludeEvents) {\r\n        // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n        pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n    }\r\n    return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n    // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n    var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n    removeEventListeners([strPageShow], listener, newNamespaces);\r\n    removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n//# sourceMappingURL=EventHelpers.js.map","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (!it) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      var F = function F() {};\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var normalCompletion = true,\n    didErr = false,\n    err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(object)\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getElementFromSelector,\n  getjQuery,\n  getNextActiveElement,\n  getSelectorFromElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","// @flow\nimport type { Interpolation } from '../types';\n\nexport default (\n  strings: Array<string>,\n  interpolations: Array<Interpolation>\n): Array<Interpolation> => {\n  const result = [strings[0]];\n\n  for (let i = 0, len = interpolations.length; i < len; i += 1) {\n    result.push(interpolations[i], strings[i + 1]);\n  }\n\n  return result;\n};\n","// @flow\nimport { typeOf } from 'react-is';\n\nexport default (x: any): boolean =>\n  x !== null &&\n  typeof x === 'object' &&\n  (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' &&\n  !typeOf(x);\n","// @flow\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});\n","// @flow\nexport default function isFunction(test: any): boolean %checks {\n  return typeof test === 'function';\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function getComponentName(\n  target: $PropertyType<IStyledComponent, 'target'>\n): string {\n  return (\n    (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n    // $FlowFixMe\n    target.displayName ||\n    // $FlowFixMe\n    target.name ||\n    'Component'\n  );\n}\n","// @flow\nexport default function isStyledComponent(target: any): boolean %checks {\n  return target && typeof target.styledComponentId === 'string';\n}\n","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n  (typeof process !== 'undefined' &&\n    typeof process.env !== 'undefined' &&\n    (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n  'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n  typeof SC_DISABLE_SPEEDY === 'boolean'\n    ? SC_DISABLE_SPEEDY\n    : typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n      process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n      ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n        ? false\n        : process.env.REACT_APP_SC_DISABLE_SPEEDY\n      : typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n      ? process.env.SC_DISABLE_SPEEDY === 'false'\n        ? false\n        : process.env.SC_DISABLE_SPEEDY\n      : process.env.NODE_ENV !== 'production'\n    : false\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\nimport errorMap from './errors';\n\nconst ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args) {\n  let a = args[0];\n  const b = [];\n\n  for (let c = 1, len = args.length; c < len; c += 1) {\n    b.push(args[c]);\n  }\n\n  b.forEach(d => {\n    a = a.replace(/%[a-z]/, d);\n  });\n\n  return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n  code: string | number,\n  ...interpolations: Array<any>\n) {\n  if (process.env.NODE_ENV === 'production') {\n    throw new Error(\n      `An error occurred. See https://git.io/JUIaE#${code} for more information.${\n        interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n      }`\n    );\n  } else {\n    throw new Error(format(ERRORS[code], ...interpolations).trim());\n  }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n  return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n  groupSizes: Uint32Array;\n\n  length: number;\n\n  tag: Tag;\n\n  constructor(tag: Tag) {\n    this.groupSizes = new Uint32Array(BASE_SIZE);\n    this.length = BASE_SIZE;\n    this.tag = tag;\n  }\n\n  indexOfGroup(group: number): number {\n    let index = 0;\n    for (let i = 0; i < group; i++) {\n      index += this.groupSizes[i];\n    }\n\n    return index;\n  }\n\n  insertRules(group: number, rules: string[]): void {\n    if (group >= this.groupSizes.length) {\n      const oldBuffer = this.groupSizes;\n      const oldSize = oldBuffer.length;\n\n      let newSize = oldSize;\n      while (group >= newSize) {\n        newSize <<= 1;\n        if (newSize < 0) {\n          throwStyledError(16, `${group}`);\n        }\n      }\n\n      this.groupSizes = new Uint32Array(newSize);\n      this.groupSizes.set(oldBuffer);\n      this.length = newSize;\n\n      for (let i = oldSize; i < newSize; i++) {\n        this.groupSizes[i] = 0;\n      }\n    }\n\n    let ruleIndex = this.indexOfGroup(group + 1);\n    for (let i = 0, l = rules.length; i < l; i++) {\n      if (this.tag.insertRule(ruleIndex, rules[i])) {\n        this.groupSizes[group]++;\n        ruleIndex++;\n      }\n    }\n  }\n\n  clearGroup(group: number): void {\n    if (group < this.length) {\n      const length = this.groupSizes[group];\n      const startIndex = this.indexOfGroup(group);\n      const endIndex = startIndex + length;\n\n      this.groupSizes[group] = 0;\n\n      for (let i = startIndex; i < endIndex; i++) {\n        this.tag.deleteRule(startIndex);\n      }\n    }\n  }\n\n  getGroup(group: number): string {\n    let css = '';\n    if (group >= this.length || this.groupSizes[group] === 0) {\n      return css;\n    }\n\n    const length = this.groupSizes[group];\n    const startIndex = this.indexOfGroup(group);\n    const endIndex = startIndex + length;\n\n    for (let i = startIndex; i < endIndex; i++) {\n      css += `${this.tag.getRule(i)}${SPLITTER}`;\n    }\n\n    return css;\n  }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n  groupIDRegister = new Map();\n  reverseRegister = new Map();\n  nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n  if (groupIDRegister.has(id)) {\n    return (groupIDRegister.get(id): any);\n  }\n\n  while (reverseRegister.has(nextFreeGroup)) {\n    nextFreeGroup++;\n  }\n\n  const group = nextFreeGroup++;\n\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    ((group | 0) < 0 || group > MAX_SMI)\n  ) {\n    throwStyledError(16, `${group}`);\n  }\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n  return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n  return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n  if (group >= nextFreeGroup) {\n    nextFreeGroup = group + 1;\n  }\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n};\n","// @flow\n\nimport { SPLITTER, SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport type { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n  const tag = sheet.getTag();\n  const { length } = tag;\n\n  let css = '';\n  for (let group = 0; group < length; group++) {\n    const id = getIdForGroup(group);\n    if (id === undefined) continue;\n\n    const names = sheet.names.get(id);\n    const rules = tag.getGroup(group);\n    if (!names || !rules || !names.size) continue;\n\n    const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n    let content = '';\n    if (names !== undefined) {\n      names.forEach(name => {\n        if (name.length > 0) {\n          content += `${name},`;\n        }\n      });\n    }\n\n    // NOTE: It's easier to collect rules and have the marker\n    // after the actual rules to simplify the rehydration\n    css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n  }\n\n  return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n  const names = content.split(',');\n  let name;\n\n  for (let i = 0, l = names.length; i < l; i++) {\n    // eslint-disable-next-line\n    if ((name = names[i])) {\n      sheet.registerName(id, name);\n    }\n  }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n  const parts = (style.textContent || '').split(SPLITTER);\n  const rules: string[] = [];\n\n  for (let i = 0, l = parts.length; i < l; i++) {\n    const part = parts[i].trim();\n    if (!part) continue;\n\n    const marker = part.match(MARKER_RE);\n\n    if (marker) {\n      const group = parseInt(marker[1], 10) | 0;\n      const id = marker[2];\n\n      if (group !== 0) {\n        // Rehydrate componentId to group index mapping\n        setGroupForId(id, group);\n        // Rehydrate names and rules\n        // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n        rehydrateNamesFromContent(sheet, id, marker[3]);\n        sheet.getTag().insertRules(group, rules);\n      }\n\n      rules.length = 0;\n    } else {\n      rules.push(part);\n    }\n  }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n  const nodes = document.querySelectorAll(SELECTOR);\n\n  for (let i = 0, l = nodes.length; i < l; i++) {\n    const node = ((nodes[i]: any): HTMLStyleElement);\n    if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n      rehydrateSheetFromTag(sheet, node);\n\n      if (node.parentNode) {\n        node.parentNode.removeChild(node);\n      }\n    }\n  }\n};\n","// @flow\n/* eslint-disable camelcase, no-undef */\n\ndeclare var __webpack_nonce__: string;\n\nconst getNonce = () => {\n  return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\nexport default getNonce;\n","// @flow\n\nimport { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport getNonce from '../utils/nonce';\nimport throwStyledError from '../utils/error';\n\nconst ELEMENT_TYPE = 1; /* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n  const { childNodes } = target;\n\n  for (let i = childNodes.length; i >= 0; i--) {\n    const child = ((childNodes[i]: any): ?HTMLElement);\n    if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n      return ((child: any): HTMLStyleElement);\n    }\n  }\n\n  return undefined;\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: HTMLElement): HTMLStyleElement => {\n  const head = ((document.head: any): HTMLElement);\n  const parent = target || head;\n  const style = document.createElement('style');\n  const prevStyle = findLastStyleTag(parent);\n  const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n  style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n  style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n  const nonce = getNonce();\n\n  if (nonce) style.setAttribute('nonce', nonce);\n\n  parent.insertBefore(style, nextSibling);\n\n  return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n  if (tag.sheet) {\n    return ((tag.sheet: any): CSSStyleSheet);\n  }\n\n  // Avoid Firefox quirk where the style element might not have a sheet property\n  const { styleSheets } = document;\n  for (let i = 0, l = styleSheets.length; i < l; i++) {\n    const sheet = styleSheets[i];\n    if (sheet.ownerNode === tag) {\n      return ((sheet: any): CSSStyleSheet);\n    }\n  }\n\n  throwStyledError(17);\n  return (undefined: any);\n};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n  if (isServer) {\n    return new VirtualTag(target);\n  } else if (useCSSOMInjection) {\n    return new CSSOMTag(target);\n  } else {\n    return new TextTag(target);\n  }\n};\n\nexport class CSSOMTag implements Tag {\n  element: HTMLStyleElement;\n\n  sheet: CSSStyleSheet;\n\n  length: number;\n\n  constructor(target?: HTMLElement) {\n    const element = (this.element = makeStyleTag(target));\n\n    // Avoid Edge bug where empty style elements don't create sheets\n    element.appendChild(document.createTextNode(''));\n\n    this.sheet = getSheet(element);\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    try {\n      this.sheet.insertRule(rule, index);\n      this.length++;\n      return true;\n    } catch (_error) {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.sheet.deleteRule(index);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    const rule = this.sheet.cssRules[index];\n    // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n    if (rule !== undefined && typeof rule.cssText === 'string') {\n      return rule.cssText;\n    } else {\n      return '';\n    }\n  }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n  element: HTMLStyleElement;\n\n  nodes: NodeList<Node>;\n\n  length: number;\n\n  constructor(target?: HTMLElement) {\n    const element = (this.element = makeStyleTag(target));\n    this.nodes = element.childNodes;\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    if (index <= this.length && index >= 0) {\n      const node = document.createTextNode(rule);\n      const refNode = this.nodes[index];\n      this.element.insertBefore(node, refNode || null);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.element.removeChild(this.nodes[index]);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    if (index < this.length) {\n      return this.nodes[index].textContent;\n    } else {\n      return '';\n    }\n  }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n  rules: string[];\n\n  length: number;\n\n  constructor(_target?: HTMLElement) {\n    this.rules = [];\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    if (index <= this.length) {\n      this.rules.splice(index, 0, rule);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.rules.splice(index, 1);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    if (index < this.length) {\n      return this.rules[index];\n    } else {\n      return '';\n    }\n  }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n  isServer?: boolean,\n  useCSSOMInjection?: boolean,\n  target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n  isServer: !IS_BROWSER,\n  useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n  gs: GlobalStylesAllocationMap;\n\n  names: NamesAllocationMap;\n\n  options: SheetOptions;\n\n  server: boolean;\n\n  tag: void | GroupedTag;\n\n  /** Register a group ID to give it an index */\n  static registerId(id: string): number {\n    return getGroupForId(id);\n  }\n\n  constructor(\n    options: SheetConstructorArgs = EMPTY_OBJECT,\n    globalStyles?: GlobalStylesAllocationMap = {},\n    names?: NamesAllocationMap\n  ) {\n    this.options = {\n      ...defaultOptions,\n      ...options,\n    };\n\n    this.gs = globalStyles;\n    this.names = new Map(names);\n    this.server = !!options.isServer;\n\n    // We rehydrate only once and use the sheet that is created first\n    if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n      SHOULD_REHYDRATE = false;\n      rehydrateSheet(this);\n    }\n  }\n\n  reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n    return new StyleSheet(\n      { ...this.options, ...options },\n      this.gs,\n      (withNames && this.names) || undefined\n    );\n  }\n\n  allocateGSInstance(id: string) {\n    return (this.gs[id] = (this.gs[id] || 0) + 1);\n  }\n\n  /** Lazily initialises a GroupedTag for when it's actually needed */\n  getTag(): GroupedTag {\n    return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n  }\n\n  /** Check whether a name is known for caching */\n  hasNameForId(id: string, name: string): boolean {\n    return this.names.has(id) && (this.names.get(id): any).has(name);\n  }\n\n  /** Mark a group's name as known for caching */\n  registerName(id: string, name: string) {\n    getGroupForId(id);\n\n    if (!this.names.has(id)) {\n      const groupNames = new Set();\n      groupNames.add(name);\n      this.names.set(id, groupNames);\n    } else {\n      (this.names.get(id): any).add(name);\n    }\n  }\n\n  /** Insert new rules which also marks the name as known */\n  insertRules(id: string, name: string, rules: string[]) {\n    this.registerName(id, name);\n    this.getTag().insertRules(getGroupForId(id), rules);\n  }\n\n  /** Clears all cached names for a given group ID */\n  clearNames(id: string) {\n    if (this.names.has(id)) {\n      (this.names.get(id): any).clear();\n    }\n  }\n\n  /** Clears all rules for a given group ID */\n  clearRules(id: string) {\n    this.getTag().clearGroup(getGroupForId(id));\n    this.clearNames(id);\n  }\n\n  /** Clears the entire tag which deletes all rules but not its names */\n  clearTag() {\n    // NOTE: This does not clear the names, since it's only used during SSR\n    // so that we can continuously output only new rules\n    this.tag = undefined;\n  }\n\n  /** Outputs the current sheet as a CSS string with markers for SSR */\n  toString(): string {\n    return outputSheet(this);\n  }\n}\n","// @flow\n/* eslint-disable no-bitwise */\n\nconst AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number): string =>\n  String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number): string {\n  let name = '';\n  let x;\n\n  /* get a char and divide by alphabet-length */\n  for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n    name = getAlphabeticChar(x % charsLength) + name;\n  }\n\n  return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","// @flow\n/* eslint-disable */\n\nexport const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string): number => {\n  let i = x.length;\n\n  while (i) {\n    h = (h * 33) ^ x.charCodeAt(--i);\n  }\n\n  return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string): number => {\n  return phash(SEED, x);\n};\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n  for (let i = 0; i < rules.length; i += 1) {\n    const rule = rules[i];\n\n    if (isFunction(rule) && !isStyledComponent(rule)) {\n      // functions are allowed to be static if they're just being\n      // used to get the classname of a nested styled component\n      return false;\n    }\n  }\n\n  return true;\n}\n","// @flow\nimport { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n  baseHash: number;\n\n  baseStyle: ?ComponentStyle;\n\n  componentId: string;\n\n  isStatic: boolean;\n\n  rules: RuleSet;\n\n  staticRulesId: string;\n\n  constructor(rules: RuleSet, componentId: string, baseStyle?: ComponentStyle) {\n    this.rules = rules;\n    this.staticRulesId = '';\n    this.isStatic = process.env.NODE_ENV === 'production' &&\n      (baseStyle === undefined || baseStyle.isStatic) &&\n      isStaticRules(rules);\n    this.componentId = componentId;\n\n    // SC_VERSION gives us isolation between multiple runtimes on the page at once\n    // this is improved further with use of the babel plugin \"namespace\" feature\n    this.baseHash = phash(SEED, componentId);\n\n    this.baseStyle = baseStyle;\n\n    // NOTE: This registers the componentId, which ensures a consistent order\n    // for this component's styles compared to others\n    StyleSheet.registerId(componentId);\n  }\n\n  /*\n   * Flattens a rule set into valid CSS\n   * Hashes it, wraps the whole chunk in a .hash1234 {}\n   * Returns the hash to be injected on render()\n   * */\n  generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n    const { componentId } = this;\n\n    const names = [];\n\n    if (this.baseStyle) {\n      names.push(this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis));\n    }\n\n    // force dynamic classnames if user-supplied stylis plugins are in use\n    if (this.isStatic && !stylis.hash) {\n      if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n        names.push(this.staticRulesId);\n      } else {\n        const cssStatic = flatten(this.rules, executionContext, styleSheet, stylis).join('');\n        const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n        if (!styleSheet.hasNameForId(componentId, name)) {\n          const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n          styleSheet.insertRules(componentId, name, cssStaticFormatted);\n        }\n\n        names.push(name);\n        this.staticRulesId = name;\n      }\n    } else {\n      const { length } = this.rules;\n      let dynamicHash = phash(this.baseHash, stylis.hash);\n      let css = '';\n\n      for (let i = 0; i < length; i++) {\n        const partRule = this.rules[i];\n\n        if (typeof partRule === 'string') {\n          css += partRule;\n\n          if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n        } else if (partRule) {\n          const partChunk = flatten(partRule, executionContext, styleSheet, stylis);\n          const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n          dynamicHash = phash(dynamicHash, partString + i);\n          css += partString;\n        }\n      }\n\n      if (css) {\n        const name = generateName(dynamicHash >>> 0);\n\n        if (!styleSheet.hasNameForId(componentId, name)) {\n          const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n          styleSheet.insertRules(componentId, name, cssFormatted);\n        }\n\n        names.push(name);\n      }\n    }\n\n    return names.join(' ');\n  }\n}\n","import Stylis from '@emotion/stylis';\nimport { type Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { phash, SEED } from './hash';\nimport insertRulePlugin from './stylisPluginInsertRule';\n\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nconst COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#'];\n\ntype StylisInstanceConstructorArgs = {\n  options?: Object,\n  plugins?: Array<Function>,\n};\n\nexport default function createStylisInstance({\n  options = EMPTY_OBJECT,\n  plugins = EMPTY_ARRAY,\n}: StylisInstanceConstructorArgs = EMPTY_OBJECT) {\n  const stylis = new Stylis(options);\n\n  // Wrap `insertRulePlugin to build a list of rules,\n  // and then make our own plugin to return the rules. This\n  // makes it easier to hook into the existing SSR architecture\n\n  let parsingRules = [];\n\n  // eslint-disable-next-line consistent-return\n  const returnRulesPlugin = context => {\n    if (context === -2) {\n      const parsedRules = parsingRules;\n      parsingRules = [];\n      return parsedRules;\n    }\n  };\n\n  const parseRulesPlugin = insertRulePlugin(rule => {\n    parsingRules.push(rule);\n  });\n\n  let _componentId: string;\n  let _selector: string;\n  let _selectorRegexp: RegExp;\n  let _consecutiveSelfRefRegExp: RegExp;\n\n  const selfReferenceReplacer = (match, offset, string) => {\n    if (\n      // do not replace the first occurrence if it is complex (has a modifier)\n      (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) &&\n      // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n      !string.match(_consecutiveSelfRefRegExp)\n    ) {\n      return `.${_componentId}`;\n    }\n\n    return match;\n  };\n\n  /**\n   * When writing a style like\n   *\n   * & + & {\n   *   color: red;\n   * }\n   *\n   * The second ampersand should be a reference to the static component class. stylis\n   * has no knowledge of static class so we have to intelligently replace the base selector.\n   *\n   * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values\n   * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n   */\n  const selfReferenceReplacementPlugin = (context, _, selectors) => {\n    if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n      // eslint-disable-next-line no-param-reassign\n      selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n    }\n  };\n\n  stylis.use([...plugins, selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\n\n  function stringifyRules(css, selector, prefix, componentId = '&'): Stringifier {\n    const flatCSS = css.replace(COMMENT_REGEX, '');\n    const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;\n\n    // stylis has no concept of state to be passed to plugins\n    // but since JS is single-threaded, we can rely on that to ensure\n    // these properties stay in sync with the current stylis run\n    _componentId = componentId;\n    _selector = selector;\n    _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n    _consecutiveSelfRefRegExp = new RegExp(`(\\\\${_selector}\\\\b){2,}`);\n\n    return stylis(prefix || !selector ? '' : selector, cssStr);\n  }\n\n  stringifyRules.hash = plugins.length\n    ? plugins\n        .reduce((acc, plugin) => {\n          if (!plugin.name) {\n            throwStyledError(15);\n          }\n\n          return phash(acc, plugin.name);\n        }, SEED)\n        .toString()\n    : '';\n\n  return stringifyRules;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the 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 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\n * OR 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 LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable */\n\nexport default function(insertRule) {\n  const delimiter = '/*|*/';\n  const needle = `${delimiter}}`;\n\n  function toSheet(block) {\n    if (block) {\n      try {\n        insertRule(`${block}}`);\n      } catch (e) {}\n    }\n  }\n\n  return function ruleSheet(\n    context,\n    content,\n    selectors,\n    parents,\n    line,\n    column,\n    length,\n    ns,\n    depth,\n    at\n  ) {\n    switch (context) {\n      // property\n      case 1:\n        // @import\n        if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(`${content};`), '';\n        break;\n      // selector\n      case 2:\n        if (ns === 0) return content + delimiter;\n        break;\n      // at-rule\n      case 3:\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            return insertRule(selectors[0] + content), '';\n          default:\n            return content + (at === 0 ? delimiter : '');\n        }\n      case -2:\n        content.split(needle).forEach(toSheet);\n    }\n  };\n}\n","// @flow\nimport React, { type Context, type Node, useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport StyleSheet from '../sheet';\nimport type { Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\ntype Props = {\n  children?: Node,\n  disableCSSOMInjection?: boolean,\n  disableVendorPrefixes?: boolean,\n  sheet?: StyleSheet,\n  stylisPlugins?: Array<Function>,\n  target?: HTMLElement,\n};\n\nexport const StyleSheetContext: Context<StyleSheet | void> = React.createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\nexport const StylisContext: Context<Stringifier | void> = React.createContext();\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport const masterSheet: StyleSheet = new StyleSheet();\nexport const masterStylis: Stringifier = createStylisInstance();\n\nexport function useStyleSheet(): StyleSheet {\n  return useContext(StyleSheetContext) || masterSheet;\n}\n\nexport function useStylis(): Stringifier {\n  return useContext(StylisContext) || masterStylis;\n}\n\nexport default function StyleSheetManager(props: Props) {\n  const [plugins, setPlugins] = useState(props.stylisPlugins);\n  const contextStyleSheet = useStyleSheet();\n\n  const styleSheet = useMemo(() => {\n    let sheet = contextStyleSheet;\n\n    if (props.sheet) {\n      // eslint-disable-next-line prefer-destructuring\n      sheet = props.sheet;\n    } else if (props.target) {\n      sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n    }\n\n    if (props.disableCSSOMInjection) {\n      sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n    }\n\n    return sheet;\n  }, [props.disableCSSOMInjection, props.sheet, props.target]);\n\n  const stylis = useMemo(\n    () =>\n      createStylisInstance({\n        options: { prefix: !props.disableVendorPrefixes },\n        plugins,\n      }),\n    [props.disableVendorPrefixes, plugins]\n  );\n\n  useEffect(() => {\n    if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n  }, [props.stylisPlugins]);\n\n  return (\n    <StyleSheetContext.Provider value={styleSheet}>\n      <StylisContext.Provider value={stylis}>\n        {process.env.NODE_ENV !== 'production'\n          ? React.Children.only(props.children)\n          : props.children}\n      </StylisContext.Provider>\n    </StyleSheetContext.Provider>\n  );\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n  id: string;\n\n  name: string;\n\n  rules: string;\n\n  constructor(name: string, rules: string) {\n    this.name = name;\n    this.id = `sc-keyframes-${name}`;\n    this.rules = rules;\n  }\n\n  inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n    const resolvedName = this.name + stylisInstance.hash;\n\n    if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n      styleSheet.insertRules(\n        this.id,\n        resolvedName,\n        stylisInstance(this.rules, resolvedName, '@keyframes')\n      );\n    }\n  };\n\n  toString = () => {\n    return throwStyledError(12, String(this.name));\n  };\n\n  getName(stylisInstance: Stringifier = masterStylis) {\n    return this.name + stylisInstance.hash;\n  }\n}\n","// @flow\n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nconst uppercaseCheck = /([A-Z])/;\nconst uppercasePattern = /([A-Z])/g;\nconst msPattern = /^ms-/;\nconst prefixAndLowerCase = (char: string): string => `-${char.toLowerCase()}`;\n\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 * @param {string} string\n * @return {string}\n */\nexport default function hyphenateStyleName(string: string): string {\n  return uppercaseCheck.test(string)\n  ? string\n    .replace(uppercasePattern, prefixAndLowerCase)\n    .replace(msPattern, '-ms-')\n  : string;\n}\n","// @flow\nimport { isElement } from 'react-is';\nimport getComponentName from './getComponentName';\nimport isFunction from './isFunction';\nimport isStatelessFunction from './isStatelessFunction';\nimport isPlainObject from './isPlainObject';\nimport isStyledComponent from './isStyledComponent';\nimport Keyframes from '../models/Keyframes';\nimport hyphenate from './hyphenateStyleName';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { type Stringifier } from '../types';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = chunk => chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Object, prevKey?: string): Array<string | Function> => {\n  const rules = [];\n\n  for (const key in obj) {\n    if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue;\n\n    if ((Array.isArray(obj[key]) && obj[key].isCss) || isFunction(obj[key])) {\n      rules.push(`${hyphenate(key)}:`, obj[key], ';');\n    } else if (isPlainObject(obj[key])) {\n      rules.push(...objToCssArray(obj[key], key));\n    } else {\n      rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, obj[key])};`);\n    }\n  }\n\n  return prevKey ? [`${prevKey} {`, ...rules, '}'] : rules;\n};\n\nexport default function flatten(\n  chunk: any,\n  executionContext: ?Object,\n  styleSheet: ?Object,\n  stylisInstance: ?Stringifier\n): any {\n  if (Array.isArray(chunk)) {\n    const ruleSet = [];\n\n    for (let i = 0, len = chunk.length, result; i < len; i += 1) {\n      result = flatten(chunk[i], executionContext, styleSheet, stylisInstance);\n\n      if (result === '') continue;\n      else if (Array.isArray(result)) ruleSet.push(...result);\n      else ruleSet.push(result);\n    }\n\n    return ruleSet;\n  }\n\n  if (isFalsish(chunk)) {\n    return '';\n  }\n\n  /* Handle other components */\n  if (isStyledComponent(chunk)) {\n    return `.${chunk.styledComponentId}`;\n  }\n\n  /* Either execute or defer the function */\n  if (isFunction(chunk)) {\n    if (isStatelessFunction(chunk) && executionContext) {\n      const result = chunk(executionContext);\n\n      if (process.env.NODE_ENV !== 'production' && isElement(result)) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `${getComponentName(\n            chunk\n          )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n        );\n      }\n\n      return flatten(result, executionContext, styleSheet, stylisInstance);\n    } else return chunk;\n  }\n\n  if (chunk instanceof Keyframes) {\n    if (styleSheet) {\n      chunk.inject(styleSheet, stylisInstance);\n      return chunk.getName(stylisInstance);\n    } else return chunk;\n  }\n\n  /* Handle objects */\n  return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n","// @flow\nexport default function isStatelessFunction(test: any): boolean {\n  return (\n    typeof test === 'function'\n    && !(\n      test.prototype\n      && test.prototype.isReactComponent\n    )\n  );\n}\n","// @flow\nimport unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any): any {\n  // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n  // $FlowFixMe\n  if (value == null || typeof value === 'boolean' || value === '') {\n    return '';\n  }\n\n  if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n    return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n  }\n\n  return String(value).trim();\n}\n","// @flow\nimport interleave from '../utils/interleave';\nimport isPlainObject from '../utils/isPlainObject';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport isFunction from '../utils/isFunction';\nimport flatten from '../utils/flatten';\nimport type { Interpolation, RuleSet, Styles } from '../types';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = arg => {\n  if (Array.isArray(arg)) {\n    // eslint-disable-next-line no-param-reassign\n    arg.isCss = true;\n  }\n  return arg;\n};\n\nexport default function css(styles: Styles, ...interpolations: Array<Interpolation>): RuleSet {\n  if (isFunction(styles) || isPlainObject(styles)) {\n    // $FlowFixMe\n    return addTag(flatten(interleave(EMPTY_ARRAY, [styles, ...interpolations])));\n  }\n\n  if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') {\n    // $FlowFixMe\n    return styles;\n  }\n\n  // $FlowFixMe\n  return addTag(flatten(interleave(styles, interpolations)));\n}\n","// @flow\n\nimport { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string) => {\n  if (process.env.NODE_ENV !== 'production') {\n    const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n    const message =\n      `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n      \"You may see this warning because you've called styled inside another component.\\n\" +\n      'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n    // If a hook is called outside of a component:\n    // React 17 and earlier throw an error\n    // React 18 and above use console.error\n\n    const originalConsoleError = console.error // eslint-disable-line no-console\n    try {\n      let didNotCallInvalidHook = true\n      /* $FlowIgnore[cannot-write] */\n      console.error = (consoleErrorMessage, ...consoleErrorArgs) => { // eslint-disable-line no-console\n      // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n      // be called outside of a React component.\n        if (invalidHookCallRe.test(consoleErrorMessage)) {\n          didNotCallInvalidHook = false\n          // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n          seen.delete(message);\n        } else {\n          originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n        }\n      }\n      // We purposefully call `useRef` outside of a component and expect it to throw\n      // If it doesn't, then we're inside another component.\n      // eslint-disable-next-line react-hooks/rules-of-hooks\n      useRef();\n\n      if (didNotCallInvalidHook && !seen.has(message)) {\n        // eslint-disable-next-line no-console\n        console.warn(message);\n        seen.add(message);\n      }\n    } catch (error) {\n      // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n      // be called outside of a React component.\n      if (invalidHookCallRe.test(error.message)) {\n        // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n        seen.delete(message);\n      }\n    } finally {\n      /* $FlowIgnore[cannot-write] */\n      console.error = originalConsoleError; // eslint-disable-line no-console\n    }\n  }\n};\n","// @flow\nimport { EMPTY_OBJECT } from './empties';\n\ntype Props = {\n  theme?: any,\n};\n\nexport default (props: Props, providedTheme: any, defaultProps: any = EMPTY_OBJECT) => {\n  return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n};\n","// @flow\n\n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string): string {\n  return (\n    str\n      // Replace all possible CSS selectors\n      .replace(escapeRegex, '-')\n\n      // Remove extraneous hyphens at the start and end\n      .replace(dashesAtEnds, '')\n  );\n}\n","// @flow\n/* eslint-disable */\nimport generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default (str: string): string => {\n  return generateAlphabeticName(hash(str) >>> 0);\n};\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function isTag(target: $PropertyType<IStyledComponent, 'target'>): boolean %checks {\n  return (\n    typeof target === 'string' &&\n    (process.env.NODE_ENV !== 'production'\n      ? target.charAt(0) === target.charAt(0).toLowerCase()\n      : true)\n  );\n}\n","/* eslint-disable */\n/**\n  mixin-deep; https://github.com/jonschlinkert/mixin-deep\n  Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n  The MIT License (MIT)\n\n  Copyright (c) 2014-present, Jon Schlinkert.\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\nconst isObject = val => {\n  return (\n    typeof val === 'function' || (typeof val === 'object' && val !== null && !Array.isArray(val))\n  );\n};\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n  const obj = target[key];\n  if (isObject(val) && isObject(obj)) {\n    mixinDeep(obj, val);\n  } else {\n    target[key] = val;\n  }\n}\n\nexport default function mixinDeep(target, ...rest) {\n  for (const obj of rest) {\n    if (isObject(obj)) {\n      for (const key in obj) {\n        if (isValidKey(key)) {\n          mixin(target, obj[key], key);\n        }\n      }\n    }\n  }\n\n  return target;\n}\n","// @flow\nimport React, { useContext, useMemo, type Element, type Context } from 'react';\nimport throwStyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype ThemeArgument = Theme | ((outerTheme?: Theme) => Theme);\n\ntype Props = {\n  children?: Element<any>,\n  theme: ThemeArgument,\n};\n\nexport const ThemeContext: Context<Theme | void> = React.createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: Theme): Theme {\n  if (!theme) {\n    return throwStyledError(14);\n  }\n\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      return throwStyledError(7);\n    }\n\n    return mergedTheme;\n  }\n\n  if (Array.isArray(theme) || typeof theme !== 'object') {\n    return throwStyledError(8);\n  }\n\n  return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props) {\n  const outerTheme = useContext(ThemeContext);\n  const themeContext = useMemo(() => mergeTheme(props.theme, outerTheme), [\n    props.theme,\n    outerTheme,\n  ]);\n\n  if (!props.children) {\n    return null;\n  }\n\n  return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n  Attrs,\n  IStyledComponent,\n  IStyledStatics,\n  RuleSet,\n  ShouldForwardProp,\n  Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n  const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n  // Ensure that no displayName can lead to duplicate componentIds\n  identifiers[name] = (identifiers[name] || 0) + 1;\n\n  const componentId = `${name}-${generateComponentId(\n    // SC_VERSION gives us isolation between multiple runtimes on the page at once\n    // this is improved further with use of the babel plugin \"namespace\" feature\n    SC_VERSION + name + identifiers[name]\n  )}`;\n\n  return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs<Config>(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n  // NOTE: can't memoize this\n  // returns [context, resolvedAttrs]\n  // where resolvedAttrs is only the things injected by the attrs themselves\n  const context = { ...props, theme };\n  const resolvedAttrs = {};\n\n  attrs.forEach(attrDef => {\n    let resolvedAttrDef = attrDef;\n    let key;\n\n    if (isFunction(resolvedAttrDef)) {\n      resolvedAttrDef = resolvedAttrDef(context);\n    }\n\n    /* eslint-disable guard-for-in */\n    for (key in resolvedAttrDef) {\n      context[key] = resolvedAttrs[key] =\n        key === 'className'\n          ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n          : resolvedAttrDef[key];\n    }\n    /* eslint-enable guard-for-in */\n  });\n\n  return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle<T>(\n  componentStyle: ComponentStyle,\n  isStatic: boolean,\n  resolvedAttrs: T,\n  warnTooManyClasses?: $Call<typeof createWarnTooManyClasses, string, string>\n) {\n  const styleSheet = useStyleSheet();\n  const stylis = useStylis();\n\n  const className = isStatic\n    ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n    : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n  if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n    warnTooManyClasses(className);\n  }\n\n  return className;\n}\n\nfunction useStyledComponentImpl(\n  forwardedComponent: IStyledComponent,\n  props: Object,\n  forwardedRef: Ref<any>,\n  isStatic: boolean\n) {\n  const {\n    attrs: componentAttrs,\n    componentStyle,\n    defaultProps,\n    foldedComponentIds,\n    shouldForwardProp,\n    styledComponentId,\n    target,\n  } = forwardedComponent;\n\n  // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n  // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n  // should be an immutable value, but behave for now.\n  const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n  const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n  const generatedClassName = useInjectedStyle(\n    componentStyle,\n    isStatic,\n    context,\n    process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n  );\n\n  const refToForward = forwardedRef;\n\n  const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n  const isTargetTag = isTag(elementToBeCreated);\n  const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n  const propsForElement = {};\n\n  // eslint-disable-next-line guard-for-in\n  for (const key in computedProps) {\n    if (key[0] === '$' || key === 'as') continue;\n    else if (key === 'forwardedAs') {\n      propsForElement.as = computedProps[key];\n    } else if (\n      shouldForwardProp\n        ? shouldForwardProp(key, validAttr, elementToBeCreated)\n        : isTargetTag\n        ? validAttr(key)\n        : true\n    ) {\n      // Don't pass through non HTML tags through to HTML elements\n      propsForElement[key] = computedProps[key];\n    }\n  }\n\n  if (props.style && attrs.style !== props.style) {\n    propsForElement.style = { ...props.style, ...attrs.style };\n  }\n\n  propsForElement.className = Array.prototype\n    .concat(\n      foldedComponentIds,\n      styledComponentId,\n      generatedClassName !== styledComponentId ? generatedClassName : null,\n      props.className,\n      attrs.className\n    )\n    .filter(Boolean)\n    .join(' ');\n\n  propsForElement.ref = refToForward;\n\n  return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n  target: $PropertyType<IStyledComponent, 'target'>,\n  options: {\n    attrs?: Attrs,\n    componentId: string,\n    displayName?: string,\n    parentComponentId?: string,\n    shouldForwardProp?: ShouldForwardProp,\n  },\n  rules: RuleSet\n) {\n  const isTargetStyledComp = isStyledComponent(target);\n  const isCompositeComponent = !isTag(target);\n\n  const {\n    attrs = EMPTY_ARRAY,\n    componentId = generateId(options.displayName, options.parentComponentId),\n    displayName = generateDisplayName(target),\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    isTargetStyledComp && ((target: any): IStyledComponent).attrs\n      ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n      : attrs;\n\n  // eslint-disable-next-line prefer-destructuring\n  let shouldForwardProp = options.shouldForwardProp;\n\n  if (isTargetStyledComp && target.shouldForwardProp) {\n    if (options.shouldForwardProp) {\n      // compose nested shouldForwardProp calls\n      shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n        ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n          prop,\n          filterFn,\n          elementToBeCreated\n        ) &&\n        ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n    } else {\n      // eslint-disable-next-line prefer-destructuring\n      shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n    }\n  }\n\n  const componentStyle = new ComponentStyle(\n    rules,\n    styledComponentId,\n    isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n  );\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  const isStatic = componentStyle.isStatic && attrs.length === 0;\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: IStyledComponent;\n\n  const forwardRef = (props, ref) =>\n    // eslint-disable-next-line\n    useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n  forwardRef.displayName = displayName;\n\n  WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n  WrappedStyledComponent.attrs = finalAttrs;\n  WrappedStyledComponent.componentStyle = componentStyle;\n  WrappedStyledComponent.displayName = displayName;\n  WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n  // this static is used to preserve the cascade of static classes for component selector\n  // purposes; this is especially important with usage of the css prop\n  WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n    ? Array.prototype.concat(\n        ((target: any): IStyledComponent).foldedComponentIds,\n        ((target: any): IStyledComponent).styledComponentId\n      )\n    : EMPTY_ARRAY;\n\n  WrappedStyledComponent.styledComponentId = styledComponentId;\n\n  // fold the underlying StyledComponent target up since we folded the styles\n  WrappedStyledComponent.target = isTargetStyledComp\n    ? ((target: any): IStyledComponent).target\n    : target;\n\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    };\n\n    return createStyledComponent(tag, newOptions, rules);\n  };\n\n  Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n    get() {\n      return this._foldedDefaultProps;\n    },\n\n    set(obj) {\n      this._foldedDefaultProps = isTargetStyledComp\n        ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n        : obj;\n    },\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    checkDynamicCreation(displayName, styledComponentId);\n\n    WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n      displayName,\n      styledComponentId\n    );\n  }\n\n  // If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n  // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n  // mode, attempting that will be silently ignored.\n  // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n  Object.defineProperty(WrappedStyledComponent, 'toString', { value: () => `.${WrappedStyledComponent.styledComponentId}` });\n\n  if (isCompositeComponent) {\n    hoist<\n      IStyledStatics,\n      $PropertyType<IStyledComponent, 'target'>,\n      { [key: $Keys<IStyledStatics>]: true }\n    >(WrappedStyledComponent, ((target: any): $PropertyType<IStyledComponent, 'target'>), {\n      // all SC-specific things should not be hoisted\n      attrs: true,\n      componentStyle: true,\n      displayName: true,\n      foldedComponentIds: true,\n      shouldForwardProp: true,\n      styledComponentId: true,\n      target: true,\n      withComponent: true,\n    });\n  }\n\n  return WrappedStyledComponent;\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(\n  target: $PropertyType<IStyledComponent, 'target'>\n): string {\n  return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport default function joinStrings(a: ?String, b: ?String): ?String {\n  return a && b ? `${a} ${b}` : a || b;\n}\n","// @flow\n// Thanks to ReactDOMFactories for this handy list!\n\nexport default [\n  'a',\n  'abbr',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'base',\n  'bdi',\n  'bdo',\n  'big',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'data',\n  'datalist',\n  'dd',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'div',\n  'dl',\n  'dt',\n  'em',\n  'embed',\n  'fieldset',\n  'figcaption',\n  'figure',\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  'iframe',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'keygen',\n  'label',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meta',\n  'meter',\n  'nav',\n  'noscript',\n  'object',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'param',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'script',\n  'section',\n  'select',\n  'small',\n  'source',\n  'span',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'title',\n  'tr',\n  'track',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n\n  // SVG\n  'circle',\n  'clipPath',\n  'defs',\n  'ellipse',\n  'foreignObject',\n  'g',\n  'image',\n  'line',\n  'linearGradient',\n  'marker',\n  'mask',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialGradient',\n  'rect',\n  'stop',\n  'svg',\n  'text',\n  'textPath',\n  'tspan',\n];\n","// @flow\nimport constructWithOptions from './constructWithOptions';\nimport StyledComponent from '../models/StyledComponent';\nimport domElements from '../utils/domElements';\n\nimport type { Target } from '../types';\n\nconst styled = (tag: Target) => constructWithOptions(StyledComponent, tag);\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n  styled[domElement] = styled(domElement);\n});\n\nexport default styled;\n","// @flow\nimport { isValidElementType } from 'react-is';\nimport css from './css';\nimport throwStyledError from '../utils/error';\nimport { EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Target } from '../types';\n\nexport default function constructWithOptions(\n  componentConstructor: Function,\n  tag: Target,\n  options: Object = EMPTY_OBJECT\n) {\n  if (!isValidElementType(tag)) {\n    return throwStyledError(1, String(tag));\n  }\n\n  /* This is callable directly as a template function */\n  // $FlowFixMe: Not typed to avoid destructuring arguments\n  const templateFunction = (...args) => componentConstructor(tag, options, css(...args));\n\n  /* If config methods are called, wrap up a new template function and merge options */\n  templateFunction.withConfig = config =>\n    constructWithOptions(componentConstructor, tag, { ...options, ...config });\n\n  /* Modify/inject new props at runtime */\n  templateFunction.attrs = attrs =>\n    constructWithOptions(componentConstructor, tag, {\n      ...options,\n      attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n    });\n\n  return templateFunction;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\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);\n\n    // pre-register the first instance to ensure global styles\n    // load before component ones\n    StyleSheet.registerId(this.componentId + 1);\n  }\n\n  createStyles(\n    instance: number,\n    executionContext: Object,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ) {\n    const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n    const css = stylis(flatCSS.join(''), '');\n    const id = this.componentId + instance;\n\n    // NOTE: We use the id as a name as well, since these rules never change\n    styleSheet.insertRules(id, id, css);\n  }\n\n  removeStyles(instance: number, styleSheet: StyleSheet) {\n    styleSheet.clearRules(this.componentId + instance);\n  }\n\n  renderStyles(\n    instance: number,\n    executionContext: Object,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ) {\n    if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n    // NOTE: Remove old styles, then inject the new ones\n    this.removeStyles(instance, styleSheet);\n    this.createStyles(instance, executionContext, styleSheet, stylis);\n  }\n}\n","// @flow\nimport React, { useContext, useLayoutEffect, useRef } from 'react';\nimport { STATIC_EXECUTION_CONTEXT } from '../constants';\nimport GlobalStyle from '../models/GlobalStyle';\nimport { useStyleSheet, useStylis } from '../models/StyleSheetManager';\nimport { ThemeContext } from '../models/ThemeProvider';\nimport type { Interpolation } from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport determineTheme from '../utils/determineTheme';\nimport generateComponentId from '../utils/generateComponentId';\nimport css from './css';\n\ndeclare var __SERVER__: boolean;\n\ntype GlobalStyleComponentPropsType = Object;\n\nexport default function createGlobalStyle(\n  strings: Array<string>,\n  ...interpolations: Array<Interpolation>\n) {\n  const rules = css(strings, ...interpolations);\n  const styledComponentId = `sc-global-${generateComponentId(JSON.stringify(rules))}`;\n  const globalStyle = new GlobalStyle(rules, styledComponentId);\n\n  if (process.env.NODE_ENV !== 'production') {\n    checkDynamicCreation(styledComponentId);\n  }\n\n  function GlobalStyleComponent(props: GlobalStyleComponentPropsType) {\n    const styleSheet = useStyleSheet();\n    const stylis = useStylis();\n    const theme = useContext(ThemeContext);\n    const instanceRef = useRef(styleSheet.allocateGSInstance(styledComponentId));\n\n    const instance = instanceRef.current;\n\n    if (process.env.NODE_ENV !== 'production' && React.Children.count(props.children)) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `The global style component ${styledComponentId} was given child JSX. createGlobalStyle does not render children.`\n      );\n    }\n\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      rules.some(rule => typeof rule === 'string' && rule.indexOf('@import') !== -1)\n    ) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app.`\n      );\n    }\n\n    if (styleSheet.server) {\n      renderStyles(instance, props, styleSheet, theme, stylis);\n    }\n\n    if (!__SERVER__) {\n      // this conditional is fine because it is compiled away for the relevant builds during minification,\n      // resulting in a single unguarded hook call\n      // eslint-disable-next-line react-hooks/rules-of-hooks\n      useLayoutEffect(() => {\n        if (!styleSheet.server) {\n          renderStyles(instance, props, styleSheet, theme, stylis);\n          return () => globalStyle.removeStyles(instance, styleSheet);\n        }\n      }, [instance, props, styleSheet, theme, stylis]);\n    }\n\n    return null;\n  }\n\n  function renderStyles(instance, props, styleSheet, theme, stylis) {\n    if (globalStyle.isStatic) {\n      globalStyle.renderStyles(instance, STATIC_EXECUTION_CONTEXT, styleSheet, stylis);\n    } else {\n      const context = {\n        ...props,\n        theme: determineTheme(props, theme, GlobalStyleComponent.defaultProps),\n      };\n\n      globalStyle.renderStyles(instance, context, styleSheet, stylis);\n    }\n  }\n\n  // $FlowFixMe\n  return React.memo(GlobalStyleComponent);\n}\n","// @flow\n\nimport css from './css';\nimport generateComponentId from '../utils/generateComponentId';\nimport Keyframes from '../models/Keyframes';\n\nimport type { Interpolation, Styles } from '../types';\n\nexport default function keyframes(\n  strings: Styles,\n  ...interpolations: Array<Interpolation>\n): Keyframes {\n  /* Warning if you've used keyframes on React Native */\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    typeof navigator !== 'undefined' &&\n    navigator.product === 'ReactNative'\n  ) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n    );\n  }\n\n  const rules = css(strings, ...interpolations).join('');\n  const name = generateComponentId(rules);\n  return new Keyframes(name, rules);\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n  isStreaming: boolean;\n\n  instance: StyleSheet;\n\n  sealed: boolean;\n\n  constructor() {\n    this.instance = new StyleSheet({ isServer: true });\n    this.sealed = false;\n  }\n\n  _emitSheetCSS = (): string => {\n    const css = this.instance.toString();\n    if (!css) return '';\n\n    const nonce = getNonce();\n    const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n    const htmlAttr = attrs.filter(Boolean).join(' ');\n\n    return `<style ${htmlAttr}>${css}</style>`;\n  };\n\n  collectStyles(children: any) {\n    if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n  }\n\n  getStyleTags = (): string => {\n    if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    return this._emitSheetCSS();\n  };\n\n  getStyleElement = () => {\n    if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    const props = {\n      [SC_ATTR]: '',\n      [SC_ATTR_VERSION]: SC_VERSION,\n      dangerouslySetInnerHTML: {\n        __html: this.instance.toString(),\n      },\n    };\n\n    const nonce = getNonce();\n    if (nonce) {\n      (props: any).nonce = nonce;\n    }\n\n    // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n    return [<style {...props} key=\"sc-0-0\" />];\n  };\n\n  // eslint-disable-next-line consistent-return\n  interleaveWithNodeStream(input: any) {\n    if (!__SERVER__ || IS_BROWSER) {\n      return throwStyledError(3);\n    } else if (this.sealed) {\n      return throwStyledError(2);\n    }\n\n    if (__SERVER__) {\n      this.seal();\n\n      // eslint-disable-next-line global-require\n      const { Readable, Transform } = require('stream');\n\n      const readableStream: Readable = input;\n      const { instance: sheet, _emitSheetCSS } = this;\n\n      const transformer = new Transform({\n        transform: function appendStyleChunks(chunk, /* encoding */ _, callback) {\n          // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n          // then reset its rules so we get only new ones for the next chunk\n          const renderedHtml = chunk.toString();\n          const html = _emitSheetCSS();\n\n          sheet.clearTag();\n\n          // prepend style html to chunk, unless the start of the chunk is a\n          // closing tag in which case append right after that\n          if (CLOSING_TAG_R.test(renderedHtml)) {\n            const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n            const before = renderedHtml.slice(0, endOfClosingTag);\n            const after = renderedHtml.slice(endOfClosingTag);\n\n            this.push(before + html + after);\n          } else {\n            this.push(html + renderedHtml);\n          }\n\n          callback();\n        },\n      });\n\n      readableStream.on('error', err => {\n        // forward the error to the transform stream\n        transformer.emit('error', err);\n      });\n\n      return readableStream.pipe(transformer);\n    }\n  }\n\n  seal = () => {\n    this.sealed = true;\n  };\n}\n","// @flow\nimport React, { useContext, type AbstractComponent } from 'react';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { ThemeContext } from '../models/ThemeProvider';\nimport determineTheme from '../utils/determineTheme';\nimport getComponentName from '../utils/getComponentName';\n\n// NOTE: this would be the correct signature:\n// export default <Config: { theme?: any }, Instance>(\n//  Component: AbstractComponent<Config, Instance>\n// ): AbstractComponent<$Diff<Config, { theme?: any }> & { theme?: any }, Instance>\n//\n// but the old build system tooling doesn't support the syntax\n\nexport default (Component: AbstractComponent<*, *>) => {\n  // $FlowFixMe This should be React.forwardRef<Config, Instance>\n  const WithTheme = React.forwardRef((props, ref) => {\n    const theme = useContext(ThemeContext);\n    // $FlowFixMe defaultProps isn't declared so it can be inferrable\n    const { defaultProps } = Component;\n    const themeProp = determineTheme(props, theme, defaultProps);\n\n    if (process.env.NODE_ENV !== 'production' && themeProp === undefined) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"${getComponentName(\n          Component\n        )}\"`\n      );\n    }\n\n    return <Component {...props} theme={themeProp} ref={ref} />;\n  });\n\n  hoistStatics(WithTheme, Component);\n\n  WithTheme.displayName = `WithTheme(${getComponentName(Component)})`;\n\n  return WithTheme;\n};\n","// @flow\nimport { useContext } from 'react';\nimport { ThemeContext } from '../models/ThemeProvider';\n\nconst useTheme = () => useContext(ThemeContext);\n\nexport default useTheme;\n","// @flow\n/* eslint-disable */\n\nimport StyleSheet from './sheet';\nimport { masterSheet } from './models/StyleSheetManager';\n\nexport const __PRIVATE__ = {\n  StyleSheet,\n  masterSheet,\n};\n","// @flow\n/* Import singletons */\nimport isStyledComponent from './utils/isStyledComponent';\nimport css from './constructors/css';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport keyframes from './constructors/keyframes';\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport { SC_VERSION } from './constants';\n\nimport StyleSheetManager, {\n  StyleSheetContext,\n  StyleSheetConsumer,\n} from './models/StyleSheetManager';\n\n/* Import components */\nimport ThemeProvider, { ThemeContext, ThemeConsumer } from './models/ThemeProvider';\n\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n\n/* Import hooks */\nimport useTheme from './hooks/useTheme';\n\ndeclare var __SERVER__: boolean;\n\n/* Warning if you've imported this file on React Native */\nif (\n  process.env.NODE_ENV !== 'production' &&\n  typeof navigator !== 'undefined' &&\n  navigator.product === 'ReactNative'\n) {\n  // eslint-disable-next-line no-console\n  console.warn(\n    \"It looks like you've imported 'styled-components' on React Native.\\n\" +\n      \"Perhaps you're looking to import 'styled-components/native'?\\n\" +\n      'Read more about this at https://www.styled-components.com/docs/basics#react-native'\n  );\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined') {\n  window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n\n  if (window['__styled-components-init__'] === 1) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      \"It looks like there are several instances of 'styled-components' initialized in this application. \" +\n        'This may cause dynamic styles to not render properly, errors during the rehydration process, ' +\n        'a missing theme prop, and makes your application bigger without good reason.\\n\\n' +\n        'See https://s-c.sh/2BAXzed for more info.'\n    );\n  }\n\n  window['__styled-components-init__'] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport {\n  createGlobalStyle,\n  css,\n  isStyledComponent,\n  keyframes,\n  ServerStyleSheet,\n  StyleSheetConsumer,\n  StyleSheetContext,\n  StyleSheetManager,\n  ThemeConsumer,\n  ThemeContext,\n  ThemeProvider,\n  useTheme,\n  SC_VERSION as version,\n  withTheme,\n};\n","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\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, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'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","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\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","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && 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 { toast } from './core/toast';\n\nexport * from './headless';\n\nexport { ToastBar } from './components/toast-bar';\nexport { ToastIcon } from './components/toast-icon';\nexport { Toaster } from './components/toaster';\nexport { CheckmarkIcon } from './components/checkmark';\nexport { ErrorIcon } from './components/error';\nexport { LoaderIcon } from './components/loader';\n\nexport { toast };\nexport default toast;\n","import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n  | 'top-left'\n  | 'top-center'\n  | 'top-right'\n  | 'bottom-left'\n  | 'bottom-center'\n  | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n  primary: string;\n  secondary: string;\n}\n\nexport type ValueFunction<TValue, TArg> = (arg: TArg) => TValue;\nexport type ValueOrFunction<TValue, TArg> =\n  | TValue\n  | ValueFunction<TValue, TArg>;\n\nconst isFunction = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>\n): valOrFunction is ValueFunction<TValue, TArg> =>\n  typeof valOrFunction === 'function';\n\nexport const resolveValue = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>,\n  arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n  type: ToastType;\n  id: string;\n  message: ValueOrFunction<Renderable, Toast>;\n  icon?: Renderable;\n  duration?: number;\n  pauseDuration: number;\n  position?: ToastPosition;\n\n  ariaProps: {\n    role: 'status' | 'alert';\n    'aria-live': 'assertive' | 'off' | 'polite';\n  };\n\n  style?: CSSProperties;\n  className?: string;\n  iconTheme?: IconTheme;\n\n  createdAt: number;\n  visible: boolean;\n  height?: number;\n}\n\nexport type ToastOptions = Partial<\n  Pick<\n    Toast,\n    | 'id'\n    | 'icon'\n    | 'duration'\n    | 'ariaProps'\n    | 'className'\n    | 'style'\n    | 'position'\n    | 'iconTheme'\n  >\n>;\n\nexport type DefaultToastOptions = ToastOptions & {\n  [key in ToastType]?: ToastOptions;\n};\n\nexport interface ToasterProps {\n  position?: ToastPosition;\n  toastOptions?: DefaultToastOptions;\n  reverseOrder?: boolean;\n  gutter?: number;\n  containerStyle?: React.CSSProperties;\n  containerClassName?: string;\n  children?: (toast: Toast) => JSX.Element;\n}\n\nexport interface ToastWrapperProps {\n  id: string;\n  className?: string;\n  style?: React.CSSProperties;\n  onHeightUpdate: (id: string, height: number) => void;\n  children?: React.ReactNode;\n}\n","export const genId = (() => {\n  let count = 0;\n  return () => {\n    return (++count).toString();\n  };\n})();\n\nexport const prefersReducedMotion = (() => {\n  // Cache result\n  let shouldReduceMotion: boolean | undefined = undefined;\n\n  return () => {\n    if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n      const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n      shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n    }\n    return shouldReduceMotion;\n  };\n})();\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n  ADD_TOAST,\n  UPDATE_TOAST,\n  UPSERT_TOAST,\n  DISMISS_TOAST,\n  REMOVE_TOAST,\n  START_PAUSE,\n  END_PAUSE,\n}\n\ntype Action =\n  | {\n      type: ActionType.ADD_TOAST;\n      toast: Toast;\n    }\n  | {\n      type: ActionType.UPSERT_TOAST;\n      toast: Toast;\n    }\n  | {\n      type: ActionType.UPDATE_TOAST;\n      toast: Partial<Toast>;\n    }\n  | {\n      type: ActionType.DISMISS_TOAST;\n      toastId?: string;\n    }\n  | {\n      type: ActionType.REMOVE_TOAST;\n      toastId?: string;\n    }\n  | {\n      type: ActionType.START_PAUSE;\n      time: number;\n    }\n  | {\n      type: ActionType.END_PAUSE;\n      time: number;\n    };\n\ninterface State {\n  toasts: Toast[];\n  pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map<Toast['id'], ReturnType<typeof setTimeout>>();\n\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return;\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId);\n    dispatch({\n      type: ActionType.REMOVE_TOAST,\n      toastId: toastId,\n    });\n  }, TOAST_EXPIRE_DISMISS_DELAY);\n\n  toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n  const timeout = toastTimeouts.get(toastId);\n  if (timeout) {\n    clearTimeout(timeout);\n  }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case ActionType.ADD_TOAST:\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      };\n\n    case ActionType.UPDATE_TOAST:\n      //  ! Side effects !\n      if (action.toast.id) {\n        clearFromRemoveQueue(action.toast.id);\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      };\n\n    case ActionType.UPSERT_TOAST:\n      const { toast } = action;\n      return state.toasts.find((t) => t.id === toast.id)\n        ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n        : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n    case ActionType.DISMISS_TOAST:\n      const { toastId } = action;\n\n      // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId);\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id);\n        });\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                visible: false,\n              }\n            : t\n        ),\n      };\n    case ActionType.REMOVE_TOAST:\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        };\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      };\n\n    case ActionType.START_PAUSE:\n      return {\n        ...state,\n        pausedAt: action.time,\n      };\n\n    case ActionType.END_PAUSE:\n      const diff = action.time - (state.pausedAt || 0);\n\n      return {\n        ...state,\n        pausedAt: undefined,\n        toasts: state.toasts.map((t) => ({\n          ...t,\n          pauseDuration: t.pauseDuration + diff,\n        })),\n      };\n  }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n  memoryState = reducer(memoryState, action);\n  listeners.forEach((listener) => {\n    listener(memoryState);\n  });\n};\n\nexport const defaultTimeouts: {\n  [key in ToastType]: number;\n} = {\n  blank: 4000,\n  error: 4000,\n  success: 2000,\n  loading: Infinity,\n  custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n  const [state, setState] = useState<State>(memoryState);\n  useEffect(() => {\n    listeners.push(setState);\n    return () => {\n      const index = listeners.indexOf(setState);\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  }, [state]);\n\n  const mergedToasts = state.toasts.map((t) => ({\n    ...toastOptions,\n    ...toastOptions[t.type],\n    ...t,\n    duration:\n      t.duration ||\n      toastOptions[t.type]?.duration ||\n      toastOptions?.duration ||\n      defaultTimeouts[t.type],\n    style: {\n      ...toastOptions.style,\n      ...toastOptions[t.type]?.style,\n      ...t.style,\n    },\n  }));\n\n  return {\n    ...state,\n    toasts: mergedToasts,\n  };\n};\n","import {\n  Renderable,\n  Toast,\n  ToastOptions,\n  ToastType,\n  DefaultToastOptions,\n  ValueOrFunction,\n  resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction<Renderable, Toast>;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n  message: Message,\n  type: ToastType = 'blank',\n  opts?: ToastOptions\n): Toast => ({\n  createdAt: Date.now(),\n  visible: true,\n  type,\n  ariaProps: {\n    role: 'status',\n    'aria-live': 'polite',\n  },\n  message,\n  pauseDuration: 0,\n  ...opts,\n  id: opts?.id || genId(),\n});\n\nconst createHandler =\n  (type?: ToastType): ToastHandler =>\n  (message, options) => {\n    const toast = createToast(message, type, options);\n    dispatch({ type: ActionType.UPSERT_TOAST, toast });\n    return toast.id;\n  };\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n  createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n  dispatch({\n    type: ActionType.DISMISS_TOAST,\n    toastId,\n  });\n};\n\ntoast.remove = (toastId?: string) =>\n  dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = <T>(\n  promise: Promise<T>,\n  msgs: {\n    loading: Renderable;\n    success: ValueOrFunction<Renderable, T>;\n    error: ValueOrFunction<Renderable, any>;\n  },\n  opts?: DefaultToastOptions\n) => {\n  const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n  promise\n    .then((p) => {\n      toast.success(resolveValue(msgs.success, p), {\n        id,\n        ...opts,\n        ...opts?.success,\n      });\n      return p;\n    })\n    .catch((e) => {\n      toast.error(resolveValue(msgs.error, e), {\n        id,\n        ...opts,\n        ...opts?.error,\n      });\n    });\n\n  return promise;\n};\n\nexport { toast };\n","import { useEffect, useCallback } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nconst updateHeight = (toastId: string, height: number) => {\n  dispatch({\n    type: ActionType.UPDATE_TOAST,\n    toast: { id: toastId, height },\n  });\n};\nconst startPause = () => {\n  dispatch({\n    type: ActionType.START_PAUSE,\n    time: Date.now(),\n  });\n};\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n  const { toasts, pausedAt } = useStore(toastOptions);\n\n  useEffect(() => {\n    if (pausedAt) {\n      return;\n    }\n\n    const now = Date.now();\n    const timeouts = toasts.map((t) => {\n      if (t.duration === Infinity) {\n        return;\n      }\n\n      const durationLeft =\n        (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n      if (durationLeft < 0) {\n        if (t.visible) {\n          toast.dismiss(t.id);\n        }\n        return;\n      }\n      return setTimeout(() => toast.dismiss(t.id), durationLeft);\n    });\n\n    return () => {\n      timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n    };\n  }, [toasts, pausedAt]);\n\n  const endPause = useCallback(() => {\n    if (pausedAt) {\n      dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n    }\n  }, [pausedAt]);\n\n  const calculateOffset = useCallback(\n    (\n      toast: Toast,\n      opts?: {\n        reverseOrder?: boolean;\n        gutter?: number;\n        defaultPosition?: ToastPosition;\n      }\n    ) => {\n      const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\n\n      const relevantToasts = toasts.filter(\n        (t) =>\n          (t.position || defaultPosition) ===\n            (toast.position || defaultPosition) && t.height\n      );\n      const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n      const toastsBefore = relevantToasts.filter(\n        (toast, i) => i < toastIndex && toast.visible\n      ).length;\n\n      const offset = relevantToasts\n        .filter((t) => t.visible)\n        .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n        .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n      return offset;\n    },\n    [toasts]\n  );\n\n  return {\n    toasts,\n    handlers: {\n      updateHeight,\n      startPause,\n      endPause,\n      calculateOffset,\n    },\n  };\n};\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\nimport { ToastIcon } from './toast-icon';\nimport { prefersReducedMotion } from '../core/utils';\n\nconst enterAnimation = (factor: number) => `\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`;\n\nconst exitAnimation = (factor: number) => `\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\n`;\n\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\n\nconst ToastBarBase = styled('div')`\n  display: flex;\n  align-items: center;\n  background: #fff;\n  color: #363636;\n  line-height: 1.3;\n  will-change: transform;\n  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n  max-width: 350px;\n  pointer-events: auto;\n  padding: 8px 10px;\n  border-radius: 8px;\n`;\n\nconst Message = styled('div')`\n  display: flex;\n  justify-content: center;\n  margin: 4px 10px;\n  color: inherit;\n  flex: 1 1 auto;\n  white-space: pre-line;\n`;\n\ninterface ToastBarProps {\n  toast: Toast;\n  position?: ToastPosition;\n  style?: React.CSSProperties;\n  children?: (components: {\n    icon: Renderable;\n    message: Renderable;\n  }) => Renderable;\n}\n\nconst getAnimationStyle = (\n  position: ToastPosition,\n  visible: boolean\n): React.CSSProperties => {\n  const top = position.includes('top');\n  const factor = top ? 1 : -1;\n\n  const [enter, exit] = prefersReducedMotion()\n    ? [fadeInAnimation, fadeOutAnimation]\n    : [enterAnimation(factor), exitAnimation(factor)];\n\n  return {\n    animation: visible\n      ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\n      : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\n  };\n};\n\nexport const ToastBar: React.FC<ToastBarProps> = React.memo(\n  ({ toast, position, style, children }) => {\n    const animationStyle: React.CSSProperties = toast.height\n      ? getAnimationStyle(\n          toast.position || position || 'top-center',\n          toast.visible\n        )\n      : { opacity: 0 };\n\n    const icon = <ToastIcon toast={toast} />;\n    const message = (\n      <Message {...toast.ariaProps}>\n        {resolveValue(toast.message, toast)}\n      </Message>\n    );\n\n    return (\n      <ToastBarBase\n        className={toast.className}\n        style={{\n          ...animationStyle,\n          ...style,\n          ...toast.style,\n        }}\n      >\n        {typeof children === 'function' ? (\n          children({\n            icon,\n            message,\n          })\n        ) : (\n          <>\n            {icon}\n            {message}\n          </>\n        )}\n      </ToastBarBase>\n    );\n  }\n);\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast } from '../core/types';\nimport { ErrorIcon, ErrorTheme } from './error';\nimport { LoaderIcon, LoaderTheme } from './loader';\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\n\nconst StatusWrapper = styled('div')`\n  position: absolute;\n`;\n\nconst IndicatorWrapper = styled('div')`\n  position: relative;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  min-width: 20px;\n  min-height: 20px;\n`;\n\nconst enter = keyframes`\nfrom {\n  transform: scale(0.6);\n  opacity: 0.4;\n}\nto {\n  transform: scale(1);\n  opacity: 1;\n}`;\n\nexport const AnimatedIconWrapper = styled('div')`\n  position: relative;\n  transform: scale(0.6);\n  opacity: 0.4;\n  min-width: 20px;\n  animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n    forwards;\n`;\n\nexport type IconThemes = Partial<{\n  success: CheckmarkTheme;\n  error: ErrorTheme;\n  loading: LoaderTheme;\n}>;\n\nexport const ToastIcon: React.FC<{\n  toast: Toast;\n}> = ({ toast }) => {\n  const { icon, type, iconTheme } = toast;\n  if (icon !== undefined) {\n    if (typeof icon === 'string') {\n      return <AnimatedIconWrapper>{icon}</AnimatedIconWrapper>;\n    } else {\n      return icon;\n    }\n  }\n\n  if (type === 'blank') {\n    return null;\n  }\n\n  return (\n    <IndicatorWrapper>\n      <LoaderIcon {...iconTheme} />\n      {type !== 'loading' && (\n        <StatusWrapper>\n          {type === 'error' ? (\n            <ErrorIcon {...iconTheme} />\n          ) : (\n            <CheckmarkIcon {...iconTheme} />\n          )}\n        </StatusWrapper>\n      )}\n    </IndicatorWrapper>\n  );\n};\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n  transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n  opacity: 1;\n}`;\n\nconst firstLineAnimation = keyframes`\nfrom {\n  transform: scale(0);\n  opacity: 0;\n}\nto {\n  transform: scale(1);\n  opacity: 1;\n}`;\n\nconst secondLineAnimation = keyframes`\nfrom {\n  transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n  transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`;\n\nexport interface ErrorTheme {\n  primary?: string;\n  secondary?: string;\n}\n\nexport const ErrorIcon = styled('div')<ErrorTheme>`\n  width: 20px;\n  opacity: 0;\n  height: 20px;\n  border-radius: 10px;\n  background: ${(p) => p.primary || '#ff4b4b'};\n  position: relative;\n  transform: rotate(45deg);\n\n  animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n    forwards;\n  animation-delay: 100ms;\n\n  &:after,\n  &:before {\n    content: '';\n    animation: ${firstLineAnimation} 0.15s ease-out forwards;\n    animation-delay: 150ms;\n    position: absolute;\n    border-radius: 3px;\n    opacity: 0;\n    background: ${(p) => p.secondary || '#fff'};\n    bottom: 9px;\n    left: 4px;\n    height: 2px;\n    width: 12px;\n  }\n\n  &:before {\n    animation: ${secondLineAnimation} 0.15s ease-out forwards;\n    animation-delay: 180ms;\n    transform: rotate(90deg);\n  }\n`;\n","import { styled, keyframes } from 'goober';\n\nconst rotate = keyframes`\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n`;\n\nexport interface LoaderTheme {\n  primary?: string;\n  secondary?: string;\n}\n\nexport const LoaderIcon = styled('div')<LoaderTheme>`\n  width: 12px;\n  height: 12px;\n  box-sizing: border-box;\n  border: 2px solid;\n  border-radius: 100%;\n  border-color: ${(p) => p.secondary || '#e0e0e0'};\n  border-right-color: ${(p) => p.primary || '#616161'};\n  animation: ${rotate} 1s linear infinite;\n`;\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n  transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n  transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`;\n\nconst checkmarkAnimation = keyframes`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n  height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n  opacity: 1;\n  height: 10px;\n}`;\n\nexport interface CheckmarkTheme {\n  primary?: string;\n  secondary?: string;\n}\n\nexport const CheckmarkIcon = styled('div')<CheckmarkTheme>`\n  width: 20px;\n  opacity: 0;\n  height: 20px;\n  border-radius: 10px;\n  background: ${(p) => p.primary || '#61d345'};\n  position: relative;\n  transform: rotate(45deg);\n\n  animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n    forwards;\n  animation-delay: 100ms;\n  &:after {\n    content: '';\n    box-sizing: border-box;\n    animation: ${checkmarkAnimation} 0.2s ease-out forwards;\n    opacity: 0;\n    animation-delay: 200ms;\n    position: absolute;\n    border-right: 2px solid;\n    border-bottom: 2px solid;\n    border-color: ${(p) => p.secondary || '#fff'};\n    bottom: 6px;\n    left: 6px;\n    height: 10px;\n    width: 6px;\n  }\n`;\n","import { css, setup } from 'goober';\nimport * as React from 'react';\nimport {\n  resolveValue,\n  ToasterProps,\n  ToastPosition,\n  ToastWrapperProps,\n} from '../core/types';\nimport { useToaster } from '../core/use-toaster';\nimport { prefersReducedMotion } from '../core/utils';\nimport { ToastBar } from './toast-bar';\n\nsetup(React.createElement);\n\nconst ToastWrapper = ({\n  id,\n  className,\n  style,\n  onHeightUpdate,\n  children,\n}: ToastWrapperProps) => {\n  const ref = React.useCallback(\n    (el: HTMLElement | null) => {\n      if (el) {\n        const updateHeight = () => {\n          const height = el.getBoundingClientRect().height;\n          onHeightUpdate(id, height);\n        };\n        updateHeight();\n        new MutationObserver(updateHeight).observe(el, {\n          subtree: true,\n          childList: true,\n          characterData: true,\n        });\n      }\n    },\n    [id, onHeightUpdate]\n  );\n\n  return (\n    <div ref={ref} className={className} style={style}>\n      {children}\n    </div>\n  );\n};\n\nconst getPositionStyle = (\n  position: ToastPosition,\n  offset: number\n): React.CSSProperties => {\n  const top = position.includes('top');\n  const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 };\n  const horizontalStyle: React.CSSProperties = position.includes('center')\n    ? {\n        justifyContent: 'center',\n      }\n    : position.includes('right')\n    ? {\n        justifyContent: 'flex-end',\n      }\n    : {};\n  return {\n    left: 0,\n    right: 0,\n    display: 'flex',\n    position: 'absolute',\n    transition: prefersReducedMotion()\n      ? undefined\n      : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n    transform: `translateY(${offset * (top ? 1 : -1)}px)`,\n    ...verticalStyle,\n    ...horizontalStyle,\n  };\n};\n\nconst activeClass = css`\n  z-index: 9999;\n  > * {\n    pointer-events: auto;\n  }\n`;\n\nconst DEFAULT_OFFSET = 16;\n\nexport const Toaster: React.FC<ToasterProps> = ({\n  reverseOrder,\n  position = 'top-center',\n  toastOptions,\n  gutter,\n  children,\n  containerStyle,\n  containerClassName,\n}) => {\n  const { toasts, handlers } = useToaster(toastOptions);\n\n  return (\n    <div\n      style={{\n        position: 'fixed',\n        zIndex: 9999,\n        top: DEFAULT_OFFSET,\n        left: DEFAULT_OFFSET,\n        right: DEFAULT_OFFSET,\n        bottom: DEFAULT_OFFSET,\n        pointerEvents: 'none',\n        ...containerStyle,\n      }}\n      className={containerClassName}\n      onMouseEnter={handlers.startPause}\n      onMouseLeave={handlers.endPause}\n    >\n      {toasts.map((t) => {\n        const toastPosition = t.position || position;\n        const offset = handlers.calculateOffset(t, {\n          reverseOrder,\n          gutter,\n          defaultPosition: position,\n        });\n        const positionStyle = getPositionStyle(toastPosition, offset);\n\n        return (\n          <ToastWrapper\n            id={t.id}\n            key={t.id}\n            onHeightUpdate={handlers.updateHeight}\n            className={t.visible ? activeClass : ''}\n            style={positionStyle}\n          >\n            {t.type === 'custom' ? (\n              resolveValue(t.message, t)\n            ) : children ? (\n              children(t)\n            ) : (\n              <ToastBar toast={t} position={toastPosition} />\n            )}\n          </ToastWrapper>\n        );\n      })}\n    </div>\n  );\n};\n","import { _DYN_COOKIE_CFG, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_SET_ENABLED, _DYN_SPLIT, _DYN_SUBSTRING, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isArray, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n    // Stash the global instance against the BaseCookieMgr class\r\n    var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n    if (!inst) {\r\n        // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n        // that ultimately is never used\r\n        inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n        _globalCookieConfig[strConfigCookieMgr] = inst;\r\n    }\r\n    return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n    if (cookieMgr) {\r\n        return cookieMgr.isEnabled();\r\n    }\r\n    return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n    var cookieMgrCfg = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] || {};\r\n    // Sets the values from the root config if not already present on the cookieMgrCfg\r\n    setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n    setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n    if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n        // Set the enabled from the provided setting or the legacy root values\r\n        var cookieEnabled = void 0;\r\n        if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n            cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n        }\r\n        if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n            cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n        }\r\n        cookieMgrCfg[strEnabled] = cookieEnabled;\r\n    }\r\n    return cookieMgrCfg;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n    if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n        return cookieMgrCfg.ignoreCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1;\r\n    }\r\n    return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n    if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n        if (cookieMgrCfg.blockedCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1) {\r\n            return true;\r\n        }\r\n    }\r\n    return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n    var cookieMgr;\r\n    if (core) {\r\n        // Always returns an instance\r\n        cookieMgr = core.getCookieMgr();\r\n    }\r\n    else if (config) {\r\n        var cookieCfg = config[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */];\r\n        if (cookieCfg[strConfigCookieMgr]) {\r\n            cookieMgr = cookieCfg[strConfigCookieMgr];\r\n        }\r\n        else {\r\n            cookieMgr = createCookieMgr(config);\r\n        }\r\n    }\r\n    if (!cookieMgr) {\r\n        // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n        cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n    }\r\n    return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n    var _a;\r\n    var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n    var _path = cookieMgrConfig.path || \"/\";\r\n    var _domain = cookieMgrConfig.domain;\r\n    // Explicitly checking against false, so that setting to undefined will === true\r\n    var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n    var cookieMgr = (_a = {\r\n            isEnabled: function () {\r\n                var enabled = _enabled && areCookiesSupported(logger);\r\n                // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n                // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n                var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n                if (enabled && gblManager && cookieMgr !== gblManager) {\r\n                    // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n                    // As the global (deprecated) functions may have been called (for backward compatibility)\r\n                    enabled = _isMgrEnabled(gblManager);\r\n                }\r\n                return enabled;\r\n            }\r\n        },\r\n        _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (value) {\r\n            // Explicitly checking against false, so that setting to undefined will === true\r\n            _enabled = value !== false;\r\n        },\r\n        _a.set = function (name, value, maxAgeSec, domain, path) {\r\n            var result = false;\r\n            if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n                var values = {};\r\n                var theValue = strTrim(value || STR_EMPTY);\r\n                var idx = theValue[_DYN_INDEX_OF /* @min:%2eindexOf */](\";\");\r\n                if (idx !== -1) {\r\n                    theValue = strTrim(value[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx));\r\n                    values = _extractParts(value[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n                }\r\n                // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n                setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n                if (!isNullOrUndefined(maxAgeSec)) {\r\n                    var _isIE = isIE();\r\n                    if (isUndefined(values[strExpires])) {\r\n                        var nowMs = dateNow();\r\n                        // Only add expires if not already present\r\n                        var expireMs = nowMs + (maxAgeSec * 1000);\r\n                        // Sanity check, if zero or -ve then ignore\r\n                        if (expireMs > 0) {\r\n                            var expiry = new Date();\r\n                            expiry.setTime(expireMs);\r\n                            setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n                        }\r\n                    }\r\n                    if (!_isIE) {\r\n                        // Only replace if not already present\r\n                        setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n                    }\r\n                }\r\n                var location_1 = getLocation();\r\n                if (location_1 && location_1.protocol === \"https:\") {\r\n                    setValue(values, \"secure\", null, null, isUndefined);\r\n                    // Only set same site if not also secure\r\n                    if (_allowUaSameSite === null) {\r\n                        _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n                    }\r\n                    if (_allowUaSameSite) {\r\n                        setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n                    }\r\n                }\r\n                setValue(values, \"path\", path || _path, null, isUndefined);\r\n                var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n                setCookieFn(name, _formatCookieValue(theValue, values));\r\n                result = true;\r\n            }\r\n            return result;\r\n        },\r\n        _a.get = function (name) {\r\n            var value = STR_EMPTY;\r\n            if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n                value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n            }\r\n            return value;\r\n        },\r\n        _a.del = function (name, path) {\r\n            var result = false;\r\n            if (_isMgrEnabled(cookieMgr)) {\r\n                // Only remove the cookie if the manager and cookie support has not been disabled\r\n                result = cookieMgr.purge(name, path);\r\n            }\r\n            return result;\r\n        },\r\n        _a.purge = function (name, path) {\r\n            var _a;\r\n            var result = false;\r\n            if (areCookiesSupported(logger)) {\r\n                // Setting the expiration date in the past immediately removes the cookie\r\n                var values = (_a = {},\r\n                    _a[\"path\"] = path ? path : \"/\",\r\n                    _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n                    _a);\r\n                if (!isIE()) {\r\n                    // Set max age to expire now\r\n                    values[\"max-age\"] = \"0\";\r\n                }\r\n                var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n                delCookie(name, _formatCookieValue(STR_EMPTY, values));\r\n                result = true;\r\n            }\r\n            return result;\r\n        },\r\n        _a);\r\n    // Associated this cookie manager with the config\r\n    cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n    return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n    if (_supportsCookies === null) {\r\n        _supportsCookies = false;\r\n        try {\r\n            var doc = _doc || {};\r\n            _supportsCookies = doc[strCookie] !== undefined;\r\n        }\r\n        catch (e) {\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n    var values = {};\r\n    if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n        var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n        arrForEach(parts, function (thePart) {\r\n            thePart = strTrim(thePart || STR_EMPTY);\r\n            if (thePart) {\r\n                var idx = thePart[_DYN_INDEX_OF /* @min:%2eindexOf */](\"=\");\r\n                if (idx === -1) {\r\n                    values[thePart] = null;\r\n                }\r\n                else {\r\n                    values[strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx))] = strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n    if (isFunction(theDate[func])) {\r\n        return theDate[func]();\r\n    }\r\n    return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n    var cookieValue = value || STR_EMPTY;\r\n    objForEachKey(values, function (name, theValue) {\r\n        cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n    });\r\n    return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n    var cookieValue = STR_EMPTY;\r\n    if (_doc) {\r\n        var theCookie = _doc[strCookie] || STR_EMPTY;\r\n        if (_parsedCookieValue !== theCookie) {\r\n            _cookieCache = _extractParts(theCookie);\r\n            _parsedCookieValue = theCookie;\r\n        }\r\n        cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n    }\r\n    return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n    if (_doc) {\r\n        _doc[strCookie] = name + \"=\" + cookieValue;\r\n    }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n    if (!isString(userAgent)) {\r\n        return false;\r\n    }\r\n    // Cover all iOS based browsers here. This includes:\r\n    // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n    // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n    // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n    // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n    if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n        return true;\r\n    }\r\n    // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n    // - Safari on Mac OS X\r\n    // This does not include:\r\n    // - Internal browser on Mac OS X\r\n    // - Chrome on Mac OS X\r\n    // - Chromium on Mac OS X\r\n    // Because they do not use the Mac OS networking stack.\r\n    if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n        return true;\r\n    }\r\n    // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n    // - Internal browser on Mac OS X\r\n    // This does not include:\r\n    // - Safari on Mac OS X\r\n    // - Chrome on Mac OS X\r\n    // - Chromium on Mac OS X\r\n    // Because they do not use the Mac OS networking stack.\r\n    if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n        return true;\r\n    }\r\n    // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n    // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n    // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n    if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n        return true;\r\n    }\r\n    // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n    // that don't specify their Chrome version as lacking support for SameSite=None.\r\n    if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n        return true;\r\n    }\r\n    // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n    // NB: this rule isn't complete - you need regex to make a complete rule.\r\n    // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n    if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, AccountInfo, Logger, PerformanceCallbackFunction } from \"@azure/msal-common\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { ITokenCache } from \"../cache/ITokenCache\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\n\nexport interface IPublicClientApplication {\n    initialize(): Promise<void>;\n    acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult>;\n    acquireTokenRedirect(request: RedirectRequest): Promise<void>;\n    acquireTokenSilent(silentRequest: SilentRequest): Promise<AuthenticationResult>;\n    acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult>;\n    addEventCallback(callback: Function): string | null;\n    removeEventCallback(callbackId: string): void;\n    addPerformanceCallback(callback: PerformanceCallbackFunction): string;\n    removePerformanceCallback(callbackId: string): boolean;\n    enableAccountStorageEvents(): void;\n    disableAccountStorageEvents(): void;\n    getAccountByHomeId(homeAccountId: string): AccountInfo | null;\n    getAccountByLocalId(localId: string): AccountInfo | null;\n    getAccountByUsername(userName: string): AccountInfo | null;\n    getAllAccounts(): AccountInfo[];\n    handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null>;\n    loginPopup(request?: PopupRequest): Promise<AuthenticationResult>;\n    loginRedirect(request?: RedirectRequest): Promise<void>;\n    logout(logoutRequest?: EndSessionRequest): Promise<void>;\n    logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void>;\n    logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void>;\n    ssoSilent(request: SsoSilentRequest): Promise<AuthenticationResult>;\n    getTokenCache(): ITokenCache;\n    getLogger(): Logger;\n    setLogger(logger: Logger): void;\n    setActiveAccount(account: AccountInfo | null): void;\n    getActiveAccount(): AccountInfo | null;\n    initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\n    setNavigationClient(navigationClient: INavigationClient): void;\n    getConfiguration(): BrowserConfiguration;\n}\n\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\n    initialize: () => {\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n    },\n    acquireTokenPopup: () => {\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n    },\n    acquireTokenRedirect: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\t\n    acquireTokenSilent: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\n    acquireTokenByCode: () => {\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n    },\n    getAllAccounts: () => {\n        return [];\t\n    },\t\n    getAccountByHomeId: () => {\n        return null;\n    },\n    getAccountByUsername: () => {\t\n        return null;\t\n    },\t\n    getAccountByLocalId: () => {\n        return null;\n    },\n    handleRedirectPromise: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\t\n    loginPopup: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\t\n    loginRedirect: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\t\n    logout: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\t\n    logoutRedirect: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\n    logoutPopup: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\n    ssoSilent: () => {\t\n        return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n    },\n    addEventCallback: () => {\n        return null;\n    },\n    removeEventCallback: () => {\n        return;\n    },\n    addPerformanceCallback: () => {\n        return \"\";\n    },\n    removePerformanceCallback: () => {\n        return false;\n    },\n    enableAccountStorageEvents: () => {\n        return;\n    },\n    disableAccountStorageEvents: () => {\n        return;\n    },\n    getTokenCache: () => {\n        throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n    },\n    getLogger: () => {\n        throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n    },\n    setLogger: () => {\n        return;\n    },\n    setActiveAccount: () => {\n        return;\n    },\n    getActiveAccount: () => {\n        return null;\n    },\n    initializeWrapperLibrary: () => {\n        return;\n    },\n    setNavigationClient: () => {\n        return;\n    },\n    getConfiguration: () => {\n        throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n    }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, AuthError, AccountInfo } from \"@azure/msal-common\";\nimport { EventType } from \"./EventType\";\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\n\nexport type EventMessage = {\n    eventType: EventType;\n    interactionType: InteractionType | null;\n    payload: EventPayload;\n    error: EventError;\n    timestamp: number;\n};\n\nexport type PopupEvent = {\n    popupWindow: Window;\n};\n\nexport type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\n\nexport type EventError = AuthError | Error | null;\n\nexport type EventCallbackFunction = (message: EventMessage) => void;\n\nexport class EventMessageUtils {\n\n    /**\n     * Gets interaction status from event message\n     * @param message\n     * @param currentStatus\n     */\n    static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus|null {\n        switch (message.eventType) {\n            case EventType.LOGIN_START:\n                return InteractionStatus.Login;\n            case EventType.SSO_SILENT_START:\n                return InteractionStatus.SsoSilent;\n            case EventType.ACQUIRE_TOKEN_START:\n                if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\n                    return InteractionStatus.AcquireToken;\n                }\n                break;\n            case EventType.HANDLE_REDIRECT_START:\n                return InteractionStatus.HandleRedirect;\n            case EventType.LOGOUT_START:\n                return InteractionStatus.Logout;\n            case EventType.SSO_SILENT_SUCCESS:\n            case EventType.SSO_SILENT_FAILURE:\n                if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\n                    // Prevent this event from clearing any status other than ssoSilent\n                    break;\n                }\n                return InteractionStatus.None;\n            case EventType.LOGOUT_END:\n                if (currentStatus && currentStatus !== InteractionStatus.Logout) {\n                    // Prevent this event from clearing any status other than logout\n                    break;\n                }\n                return InteractionStatus.None;\n            case EventType.HANDLE_REDIRECT_END:\n                if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\n                    // Prevent this event from clearing any status other than handleRedirect\n                    break;\n                }\n                return InteractionStatus.None;\n            case EventType.LOGIN_SUCCESS:\n            case EventType.LOGIN_FAILURE:\n            case EventType.ACQUIRE_TOKEN_SUCCESS:\n            case EventType.ACQUIRE_TOKEN_FAILURE:\n                if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\n                    if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\n                        // Prevent this event from clearing any status other than login or acquireToken\n                        break;\n                    }\n                    return InteractionStatus.None;\n                }\n                break;\n            default:\n                break;\n        }\n        return null;\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport * as React from \"react\";\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus, AccountInfo } from \"@azure/msal-browser\";\n\nexport interface IMsalContext {\n    instance: IPublicClientApplication;\n    inProgress: InteractionStatus;\n    accounts: AccountInfo[];\n    logger: Logger;\n}\n\n/*\n * Stubbed context implementation\n * Only used when there is no provider, which is an unsupported scenario\n */\nconst defaultMsalContext: IMsalContext = {\n    instance: stubbedPublicClientApplication,\n    inProgress: InteractionStatus.None,\n    accounts: [],\n    logger: new Logger({})\n};\n\nexport const MsalContext = React.createContext<IMsalContext>(\n    defaultMsalContext\n);\nexport const MsalConsumer = MsalContext.Consumer;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { AccountInfo } from \"@azure/msal-browser\";\n\ntype FaaCFunction = <T>(args: T) => React.ReactNode;\n\nexport function getChildrenOrFunction<T>(\n    children: React.ReactNode | FaaCFunction,\n    args: T\n): React.ReactNode {\n    if (typeof children === \"function\") {\n        return children(args);\n    }\n    return children;\n}\n\n/*\n * Utility types\n * Reference: https://github.com/piotrwitek/utility-types\n */\ntype SetDifference<A, B> = A extends B ? never : A;\ntype SetComplement<A, A1 extends A> = SetDifference<A, A1>;\nexport type Subtract<T extends T1, T1 extends object> = Pick<T,SetComplement<keyof T, keyof T1>>;\n\n/**\n * Helper function to determine whether 2 arrays are equal\n * Used to avoid unnecessary state updates\n * @param arrayA \n * @param arrayB \n */\nexport function accountArraysAreEqual(arrayA: Array<AccountIdentifiers>, arrayB: Array<AccountIdentifiers>): boolean {\n    if (arrayA.length !== arrayB.length) {\n        return false;\n    }\n\n    const comparisonArray = [...arrayB];\n\n    return arrayA.every((elementA) => {\n        const elementB = comparisonArray.shift();\n        if (!elementA || !elementB) {\n            return false;\n        }\n\n        return (elementA.homeAccountId === elementB.homeAccountId) && \n               (elementA.localAccountId === elementB.localAccountId) &&\n               (elementA.username === elementB.username);\n    });\n}\n\nexport function getAccountByIdentifiers(allAccounts: AccountInfo[], accountIdentifiers: AccountIdentifiers): AccountInfo | null {\n    if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\n        const matchedAccounts = allAccounts.filter(accountObj => {\n            if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\n                return false;\n            }\n            if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\n                return false;\n            }\n            if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\n                return false;\n            }\n\n            return true;\n        });\n\n        return matchedAccounts[0] || null;\n    } else {\n        return null;\n    }\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.33.0\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { useEffect, useReducer, PropsWithChildren, useMemo} from \"react\";\nimport {\n    IPublicClientApplication,\n    EventMessage,\n    EventMessageUtils,\n    InteractionStatus,\n    Logger,\n    WrapperSKU,\n    AccountInfo\n} from \"@azure/msal-browser\";\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\nimport { accountArraysAreEqual } from \"./utils/utilities\";\nimport { name as SKU, version } from \"./packageMetadata\";\n\nexport type MsalProviderProps = PropsWithChildren<{\n    instance: IPublicClientApplication;\n}>;\n\ntype MsalState = {\n    inProgress: InteractionStatus;\n    accounts: AccountInfo[];\n};\n\nenum MsalProviderActionType {\n    UNBLOCK_INPROGRESS = \"UNBLOCK_INPROGRESS\",\n    EVENT = \"EVENT\"\n}\n\ntype MsalProviderReducerAction = {\n    type: MsalProviderActionType,\n    payload: {\n        logger: Logger;\n        instance: IPublicClientApplication;\n        message?: EventMessage;\n    };\n};\n\n/**\n * Returns the next inProgress and accounts state based on event message\n * @param previousState \n * @param action \n */\nconst reducer = (previousState: MsalState, action: MsalProviderReducerAction): MsalState => {\n    const { type, payload } = action;\n    let newInProgress = previousState.inProgress;\n\n    switch (type) {\n        case MsalProviderActionType.UNBLOCK_INPROGRESS:\n            if (previousState.inProgress === InteractionStatus.Startup){\n                newInProgress = InteractionStatus.None;\n                payload.logger.info(\"MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'\");\n            }\n            break;\n        case MsalProviderActionType.EVENT:\n            const message = payload.message as EventMessage;\n            const status = EventMessageUtils.getInteractionStatusFromEvent(message, previousState.inProgress);\n            if (status) {\n                payload.logger.info(`MsalProvider - ${message.eventType} results in setting inProgress from ${previousState.inProgress} to ${status}`);\n                newInProgress = status;\n            }\n            break;\n        default:\n            throw new Error(`Unknown action type: ${type}`);\n    }\n    \n    const currentAccounts = payload.instance.getAllAccounts();\n    if (newInProgress !== previousState.inProgress && \n        !accountArraysAreEqual(currentAccounts, previousState.accounts)) {\n        // Both inProgress and accounts changed\n        return {\n            ...previousState,\n            inProgress: newInProgress,\n            accounts: currentAccounts\n        };\n    } else if (newInProgress !== previousState.inProgress) {\n        // Only only inProgress changed\n        return {\n            ...previousState,\n            inProgress: newInProgress\n        };\n    } else if (!accountArraysAreEqual(currentAccounts, previousState.accounts)) {\n        // Only accounts changed\n        return {\n            ...previousState,\n            accounts: currentAccounts\n        };\n    } else {\n        // Nothing changed\n        return previousState;\n    }\n};\n\n/**\n * MSAL context provider component. This must be rendered above any other components that use MSAL.\n */\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\n    useEffect(() => {\n        instance.initializeWrapperLibrary(WrapperSKU.React, version);\n    }, [instance]);\n    // Create a logger instance for msal-react with the same options as PublicClientApplication\n    const logger = useMemo(() => {\n        return instance.getLogger().clone(SKU, version);\n    }, [instance]);\n\n    const [state, updateState] = useReducer(reducer, undefined, () => {\n        // Lazy initialization of the initial state\n        return {\n            inProgress: InteractionStatus.Startup,\n            accounts: instance.getAllAccounts()\n        };\n    });\n    \n    useEffect(() => {\n        const callbackId = instance.addEventCallback((message: EventMessage) => {\n            updateState({\n                payload: {\n                    instance,\n                    logger,\n                    message\n                }, \n                type: MsalProviderActionType.EVENT\n            });\n        });\n        logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\n\n        instance.initialize().then(() => {\n            instance.handleRedirectPromise().catch(() => {\n                // Errors should be handled by listening to the LOGIN_FAILURE event\n                return;\n            }).finally(() => {\n                /*\n                 * If handleRedirectPromise returns a cached promise the necessary events may not be fired\n                 * This is a fallback to prevent inProgress from getting stuck in 'startup'\n                 */\n                updateState({\n                    payload: {\n                        instance,\n                        logger\n                    },\n                    type: MsalProviderActionType.UNBLOCK_INPROGRESS \n                });\n            });\n        });\n\n        return () => {\n            // Remove callback when component unmounts or accounts change\n            if (callbackId) {\n                logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\n                instance.removeEventCallback(callbackId);\n            }\n        };\n    }, [instance, logger]);\n\n    const contextValue: IMsalContext = {\n        instance,\n        inProgress: state.inProgress,\n        accounts: state.accounts,\n        logger\n    };\n\n    return (\n        <MsalContext.Provider value={contextValue}>\n            {children}\n        </MsalContext.Provider>\n    );\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { useContext } from \"react\";\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\n\n/**\n * Returns Msal Context values\n */\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { useState, useEffect } from \"react\";\nimport { useMsal } from \"./useMsal\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { AccountInfo, InteractionStatus } from \"@azure/msal-browser\";\nimport { getAccountByIdentifiers } from \"../utils/utilities\";\n\nfunction isAuthenticated(allAccounts: AccountInfo[], matchAccount?: AccountIdentifiers): boolean {\n    if(matchAccount && (matchAccount.username || matchAccount.homeAccountId || matchAccount.localAccountId)) {\n        return !!getAccountByIdentifiers(allAccounts, matchAccount);\n    }   \n\n    return allAccounts.length > 0;\n}\n\n/**\n * Returns whether or not a user is currently signed-in. Optionally provide 1 or more accountIdentifiers to determine if a specific user is signed-in\n * @param matchAccount \n */\nexport function useIsAuthenticated(matchAccount?: AccountIdentifiers): boolean {\n    const { accounts: allAccounts, inProgress } = useMsal();\n\n    const [hasAuthenticated, setHasAuthenticated] = useState<boolean>(() => {\n        if (inProgress === InteractionStatus.Startup) {\n            return false;\n        }\n        return isAuthenticated(allAccounts, matchAccount);\n    });\n\n    useEffect(() => {\n        setHasAuthenticated(isAuthenticated(allAccounts, matchAccount));\n    }, [allAccounts, matchAccount]);\n\n    return hasAuthenticated;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { PropsWithChildren, useMemo } from \"react\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { getChildrenOrFunction } from \"../utils/utilities\";\nimport { useMsal } from \"../hooks/useMsal\";\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\nimport { InteractionStatus } from \"@azure/msal-browser\";\n\nexport type AuthenticatedTemplateProps = PropsWithChildren<AccountIdentifiers>;\n\n/**\n * Renders child components if user is authenticated\n * @param props \n */\nexport function AuthenticatedTemplate({ username, homeAccountId, localAccountId, children }: AuthenticatedTemplateProps): React.ReactElement|null {\n    const context = useMsal();\n    const accountIdentifier: AccountIdentifiers = useMemo(() => {\n        return {\n            username,\n            homeAccountId,\n            localAccountId\n        };\n    }, [username, homeAccountId, localAccountId]);\n    const isAuthenticated = useIsAuthenticated(accountIdentifier);\n\n    if (isAuthenticated && context.inProgress !== InteractionStatus.Startup) {\n        return (\n            <React.Fragment>\n                {getChildrenOrFunction(children, context)}\n            </React.Fragment>\n        );\n    }\n    return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { PropsWithChildren, useMemo } from \"react\";\nimport { useMsal } from \"../hooks/useMsal\";\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\nimport { getChildrenOrFunction } from \"../utils/utilities\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { InteractionStatus } from \"@azure/msal-browser\";\n\nexport type UnauthenticatedTemplateProps = PropsWithChildren<AccountIdentifiers>;\n\n/**\n * Renders child components if user is unauthenticated\n * @param props \n */\nexport function UnauthenticatedTemplate({ username, homeAccountId, localAccountId, children }: UnauthenticatedTemplateProps): React.ReactElement|null {\n    const context = useMsal();\n    const accountIdentifier: AccountIdentifiers = useMemo(() => {\n        return {\n            username,\n            homeAccountId,\n            localAccountId\n        };\n    }, [username, homeAccountId, localAccountId]);\n    const isAuthenticated = useIsAuthenticated(accountIdentifier);\n\n    if (!isAuthenticated && context.inProgress !== InteractionStatus.Startup && context.inProgress !== InteractionStatus.HandleRedirect) {\n        return (\n            <React.Fragment>\n                {getChildrenOrFunction(children, context)}\n            </React.Fragment>\n        );\n    }\n    return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-browser\";\n\nexport const ReactAuthErrorMessage = {\n    invalidInteractionType: {\n        code: \"invalid_interaction_type\",\n        desc: \"The provided interaction type is invalid.\"\n    },\n    unableToFallbackToInteraction: {\n        code: \"unable_to_fallback_to_interaction\",\n        desc: \"Interaction is required but another interaction is already in progress. Please try again when the current interaction is complete.\"\n    }\n};\n\nexport class ReactAuthError extends AuthError {\n    constructor(errorCode: string, errorMessage?: string) {\n        super(errorCode, errorMessage);\n\n        Object.setPrototypeOf(this, ReactAuthError.prototype);\n        this.name = \"ReactAuthError\";\n    }\n\n    static createInvalidInteractionTypeError(): ReactAuthError {\n        return new ReactAuthError(ReactAuthErrorMessage.invalidInteractionType.code, ReactAuthErrorMessage.invalidInteractionType.desc);\n    }\n\n    static createUnableToFallbackToInteractionError(): ReactAuthError {\n        return new ReactAuthError(ReactAuthErrorMessage.unableToFallbackToInteraction.code, ReactAuthErrorMessage.unableToFallbackToInteraction.desc);\n    }\n}\n","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","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\";","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\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n *   fetchdata().then((newData) => {\n *      if (isMounted()) {\n *        setData(newData);\n *      }\n *   })\n * })\n * ```\n */\n\nexport default function useMounted() {\n  var mounted = useRef(true);\n  var isMounted = useRef(function () {\n    return mounted.current;\n  });\n  useEffect(function () {\n    mounted.current = true;\n    return function () {\n      mounted.current = false;\n    };\n  }, []);\n  return isMounted.current;\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\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        const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\n        this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback;\n        this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\n        this.level = typeof(setLoggerOptions.logLevel) === \"number\" ? setLoggerOptions.logLevel : LogLevel.Info;\n        this.correlationId = setLoggerOptions.correlationId || Constants.EMPTY_STRING;\n        this.packageName = packageName || Constants.EMPTY_STRING;\n        this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n    }\n    \n    private static createDefaultLoggerOptions(): LoggerOptions {\n        return {\n            loggerCallback: () => {\n                // allow users to not set loggerCallback\n            },\n            piiLoggingEnabled: false,\n            logLevel: LogLevel.Info\n        };\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","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\";","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\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 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 { 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\";","import { useEffect, useLayoutEffect } from 'react';\nvar isReactNative = typeof global !== 'undefined' && // @ts-ignore\nglobal.navigator && // @ts-ignore\nglobal.navigator.product === 'ReactNative';\nvar isDOM = typeof document !== 'undefined';\n/**\n * Is `useLayoutEffect` in a DOM or React Native environment, otherwise resolves to useEffect\n * Only useful to avoid the console warning.\n *\n * PREFER `useEffect` UNLESS YOU KNOW WHAT YOU ARE DOING.\n *\n * @category effects\n */\n\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n    return function () {\r\n        var args = arguments;\r\n        var dbgExt = getDebugExt(config);\r\n        if (dbgExt) {\r\n            var listener = dbgExt.listener;\r\n            if (listener && listener[name]) {\r\n                listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n            }\r\n        }\r\n    };\r\n}\r\nfunction _getExtensionNamespace() {\r\n    // Cache the lookup of the global namespace object\r\n    var target = getGlobalInst(\"Microsoft\");\r\n    if (target) {\r\n        _aiNamespace = target[\"ApplicationInsights\"];\r\n    }\r\n    return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n    var ns = _aiNamespace;\r\n    if (!ns && config.disableDbgExt !== true) {\r\n        ns = _aiNamespace || _getExtensionNamespace();\r\n    }\r\n    return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n    if (!_debugListener) {\r\n        _debugListener = {};\r\n        for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n            _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n        }\r\n    }\r\n    return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n    var handlers = [];\r\n    function _addHandler(handler) {\r\n        if (handler) {\r\n            handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n        }\r\n    }\r\n    function _runHandlers(unloadCtx, unloadState) {\r\n        arrForEach(handlers, function (handler) {\r\n            try {\r\n                handler(unloadCtx, unloadState);\r\n            }\r\n            catch (e) {\r\n                _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n            }\r\n        });\r\n        handlers = [];\r\n    }\r\n    return {\r\n        add: _addHandler,\r\n        run: _runHandlers\r\n    };\r\n}\r\n//# sourceMappingURL=UnloadHandlerContainer.js.map","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","export default __webpack_public_path__ + \"static/media/getFetch.5fde86e3.cjs\";","// 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\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n  transitional: {\n    silentJSONParsing: true,\n    forcedJSONParsing: true,\n    clarifyTimeoutError: false\n  },\n\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n      setContentTypeIfUnset(headers, 'application/json');\n      return stringifySafely(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    var transitional = this.transitional;\n    var silentJSONParsing = transitional && transitional.silentJSONParsing;\n    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw enhanceError(e, this, 'E_JSON_PARSE');\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(object)\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getElementFromSelector,\n  getjQuery,\n  getNextActiveElement,\n  getSelectorFromElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // todo: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const handlerKey of Object.keys(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const keyHandlers of Object.keys(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    let evt = new Event(event, { bubbles, cancelable: true })\n    evt = hydrateObj(evt, args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta) {\n  for (const [key, value] of Object.entries(meta || {})) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const property of Object.keys(configTypes)) {\n      const expectedTypes = configTypes[property]\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)', // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // todo: change tests that use empty divs to avoid this check\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config)\n\n      if (typeof config === 'number') {\n        data.to(config)\n        return\n      }\n\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getSelectorFromElement,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {}\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  for (const element of selectorElements) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._isTransitioning = true\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._backdrop.show(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    this._isTransitioning = true\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    for (const htmlElement of [window, this._dialog]) {\n      EventHandler.off(htmlElement, EVENT_KEY)\n    }\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        event.preventDefault()\n        this.hide()\n        return\n      }\n\n      this._triggerBackdropTransition()\n    })\n\n    EventHandler.on(window, EVENT_RESIZE, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog()\n      }\n    })\n\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n          return\n        }\n\n        if (this._config.backdrop) {\n          this.hide()\n        }\n      })\n    })\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const initialOverflowY = this._element.style.overflowY\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY\n      }, this._dialog)\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (!this._config.keyboard) {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return typeof arg === 'function' ? arg(this) : arg\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport { defineJQueryPlugin, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 0],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    this._activeTrigger.click = !this._activeTrigger.click\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // todo v6 remove this OR make it optional\n    this._disposePopper()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    this._popper = this._createPopper(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposePopper()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // todo: remove this check on v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // todo: on v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return typeof arg === 'function' ? arg.call(this._element) : arg\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(anchor.hash, this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(anchor.hash, anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // todo: should Throw exception on v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n    const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\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 = res[2] || defaultDelimiter\n    var pattern = capture || group\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 ? '.*' : '[^' + escapeString(delimiter) + ']+?')\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\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","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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  return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT0, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n    function BaseTelemetryPlugin() {\r\n        var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var _isinitialized;\r\n        var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n        var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n        var _unloadHandlerContainer;\r\n        var _hooks;\r\n        _initDefaults();\r\n        dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n                _setDefaults(config, core, pluginChain);\r\n                _isinitialized = true;\r\n            };\r\n            _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n                var _a;\r\n                // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n                // or the core being used for unload was not the same core used for initialization.\r\n                var core = _self[STR_CORE /* @min:%2ecore */];\r\n                if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n                    // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n                    return;\r\n                }\r\n                var result;\r\n                var unloadDone = false;\r\n                var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n                var theUnloadState = unloadState || (_a = {\r\n                        reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n                    },\r\n                    _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n                    _a);\r\n                function _unloadCallback() {\r\n                    if (!unloadDone) {\r\n                        unloadDone = true;\r\n                        _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n                        var oldHooks = _hooks;\r\n                        _hooks = [];\r\n                        // Remove all instrumentation hooks\r\n                        arrForEach(oldHooks, function (fn) {\r\n                            fn.rm();\r\n                        });\r\n                        if (result === true) {\r\n                            theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n                        }\r\n                        _initDefaults();\r\n                    }\r\n                }\r\n                if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n                    _unloadCallback();\r\n                }\r\n                else {\r\n                    // Tell the caller that we will be calling processNext()\r\n                    result = true;\r\n                }\r\n                return result;\r\n            };\r\n            _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n                // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n                // or the core being used for unload was not the same core used for initialization.\r\n                var core = _self[STR_CORE /* @min:%2ecore */];\r\n                if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n                    // Do Nothing\r\n                    return;\r\n                }\r\n                var result;\r\n                var updateDone = false;\r\n                var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n                var theUpdateState = updateState || {\r\n                    reason: 0 /* TelemetryUpdateReason.Unknown */\r\n                };\r\n                function _updateCallback() {\r\n                    if (!updateDone) {\r\n                        updateDone = true;\r\n                        _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n                    }\r\n                }\r\n                if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n                    _updateCallback();\r\n                }\r\n                else {\r\n                    result = true;\r\n                }\r\n                return result;\r\n            };\r\n            _self._addHook = function (hooks) {\r\n                if (hooks) {\r\n                    if (isArray(hooks)) {\r\n                        _hooks = _hooks.concat(hooks);\r\n                    }\r\n                    else {\r\n                        _hooks[_DYN_PUSH /* @min:%2epush */](hooks);\r\n                    }\r\n                }\r\n            };\r\n            proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n        });\r\n        // These are added after the dynamicProto so that are not moved to the prototype\r\n        _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n            return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n        };\r\n        _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n            return _isinitialized;\r\n        };\r\n        _self.setInitialized = function (isInitialized) {\r\n            _isinitialized = isInitialized;\r\n        };\r\n        // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n        // Sub-classes of this base class *should* not be relying on this value and instead\r\n        // should use processNext() function. If you require access to the plugin use the\r\n        // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n        _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n            _nextPlugin = next;\r\n        };\r\n        _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n            if (itemCtx) {\r\n                // Normal core execution sequence\r\n                itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n            }\r\n            else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n                // Looks like backward compatibility or out of band processing. And as it looks\r\n                // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n                _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n            }\r\n        };\r\n        _self._getTelCtx = _getTelCtx;\r\n        function _getTelCtx(currentCtx) {\r\n            if (currentCtx === void 0) { currentCtx = null; }\r\n            var itemCtx = currentCtx;\r\n            if (!itemCtx) {\r\n                var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n                // tslint:disable-next-line: prefer-conditional-expression\r\n                if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n                    // Looks like a chain object\r\n                    itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n                }\r\n                else {\r\n                    itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n                }\r\n            }\r\n            return itemCtx;\r\n        }\r\n        function _setDefaults(config, core, pluginChain) {\r\n            if (config) {\r\n                // Make sure the extensionConfig exists\r\n                setValue(config, STR_EXTENSION_CONFIG, [], null, isNullOrUndefined);\r\n            }\r\n            if (!pluginChain && core) {\r\n                // Get the first plugin from the core\r\n                pluginChain = core[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n            }\r\n            var nextPlugin = _nextPlugin;\r\n            if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n                // If it looks like a proxy/chain then get the plugin\r\n                nextPlugin = _nextPlugin[strGetPlugin]();\r\n            }\r\n            // Support legacy plugins where core was defined as a property\r\n            _self[STR_CORE /* @min:%2ecore */] = core;\r\n            _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n        }\r\n        function _initDefaults() {\r\n            _isinitialized = false;\r\n            _self[STR_CORE /* @min:%2ecore */] = null;\r\n            _rootCtx = null;\r\n            _nextPlugin = null;\r\n            _hooks = [];\r\n            _unloadHandlerContainer = createUnloadHandlerContainer();\r\n        }\r\n    }\r\n    BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Tear down the plugin and remove any hooked value, the plugin should be removed so that it is no longer initialized and\r\n     * therefore could be re-initialized after being torn down. The plugin should ensure that once this has been called any further\r\n     * processTelemetry calls are ignored and it just calls the processNext() with the provided context.\r\n     * @param unloadCtx - This is the context that should be used during unloading.\r\n     * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n     * @returns boolean - true if the plugin has or will call processNext(), this for backward compatibility as previously teardown was synchronous and returned nothing.\r\n     */\r\n    BaseTelemetryPlugin.prototype.teardown = function (unloadCtx, unloadState) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return false;\r\n    };\r\n    /**\r\n     * The the plugin should re-evaluate configuration and update any cached configuration settings.\r\n     * @param updateCtx - This is the context that should be used during updating.\r\n     * @param updateState - The details / state of the update process, it holds details like the current and previous configuration.\r\n     * @returns boolean - true if the plugin has or will call updateCtx.processNext(), this allows the plugin to perform any asynchronous operations.\r\n     */\r\n    BaseTelemetryPlugin.prototype.update = function (updateCtx, updateState) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add an unload handler that will be called when the SDK is being unloaded\r\n     * @param handler - the handler\r\n     */\r\n    BaseTelemetryPlugin.prototype._addUnloadCb = function (handler) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add this hook so that it is automatically removed during unloading\r\n     * @param hooks - The single hook or an array of IInstrumentHook objects\r\n     */\r\n    BaseTelemetryPlugin.prototype._addHook = function (hooks) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","import { _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SUBSTR, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]*)?$/;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n    if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n        return !!value.match(/^[\\da-f]*$/);\r\n    }\r\n    return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n    if (_isValid(value, len)) {\r\n        return value;\r\n    }\r\n    return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n    if (isNaN(value) || value < 0 || value > 255) {\r\n        value = 0x01;\r\n    }\r\n    var result = value.toString(16);\r\n    while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n        result = \"0\" + result;\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n    var _a;\r\n    return _a = {},\r\n        _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n        _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n        _a.spanId = isValidSpanId(spanId) ? spanId : generateW3CId()[_DYN_SUBSTR /* @min:%2esubstr */](0, 16),\r\n        _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n        _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value\r\n * @returns\r\n */\r\nexport function parseTraceParent(value) {\r\n    var _a;\r\n    if (!value) {\r\n        // Don't pass a null/undefined or empty string\r\n        return null;\r\n    }\r\n    if (isArray(value)) {\r\n        // The value may have been encoded on the page into an array so handle this automatically\r\n        value = value[0] || \"\";\r\n    }\r\n    if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n        // limit potential processing based on total length\r\n        return null;\r\n    }\r\n    // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n    var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n    if (!match || // No match\r\n        match[1] === INVALID_VERSION || // version ff is forbidden\r\n        match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n        match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n        return null;\r\n    }\r\n    return _a = {},\r\n        _a[_DYN_VERSION /* @min:version */] = match[1],\r\n        _a[_DYN_TRACE_ID /* @min:traceId */] = match[2],\r\n        _a[_DYN_SPAN_ID /* @min:spanId */] = match[3],\r\n        _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n        _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n    return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n    return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n    if (!value ||\r\n        !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n        !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n        !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n        !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n        // Each known field must contain a valid value\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n    if (isValidTraceParent(value)) {\r\n        return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n    if (value) {\r\n        // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n        // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n        var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n        if (!_isValid(flags, 2)) {\r\n            flags = \"01\";\r\n        }\r\n        var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n        if (version !== \"00\" && version !== \"ff\") {\r\n            // Reduce version to \"00\"\r\n            version = DEFAULT_VERSION;\r\n        }\r\n        // Format as version 00\r\n        return \"\".concat(version, \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID), \"-\").concat(flags);\r\n    }\r\n    return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @returns\r\n */\r\nexport function findW3cTraceParent() {\r\n    var name = \"traceparent\";\r\n    var traceParent = parseTraceParent(findMetaTag(name));\r\n    if (!traceParent) {\r\n        traceParent = parseTraceParent(findNamedServerTiming(name));\r\n    }\r\n    return traceParent;\r\n}\r\n//# sourceMappingURL=W3cTraceParent.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SET_ENABLED, _DYN_SUBSTR, _DYN_SUBSTRING } from \"../__DynamicConstants\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { mwcRandom32, mwcRandomSeed, newId, random32, randomValue } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n    var uuid = generateW3CId();\r\n    return uuid[_DYN_SUBSTRING /* @min:%2esubstring */](0, 8) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](8, 12) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](12, 16) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](16, 20) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](20);\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n    var perf = getPerformance();\r\n    if (perf && perf.now) {\r\n        return perf.now();\r\n    }\r\n    return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n    if (value && search) {\r\n        var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n        var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n        return value[_DYN_SUBSTRING /* @min:%2esubstring */](start >= 0 ? start : 0, len) === search;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n    var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n    // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n    var oct = STR_EMPTY, tmp;\r\n    for (var a = 0; a < 4; a++) {\r\n        tmp = random32();\r\n        oct +=\r\n            hexValues[tmp & 0xF] +\r\n                hexValues[tmp >> 4 & 0xF] +\r\n                hexValues[tmp >> 8 & 0xF] +\r\n                hexValues[tmp >> 12 & 0xF] +\r\n                hexValues[tmp >> 16 & 0xF] +\r\n                hexValues[tmp >> 20 & 0xF] +\r\n                hexValues[tmp >> 24 & 0xF] +\r\n                hexValues[tmp >> 28 & 0xF];\r\n    }\r\n    // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n    var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n    return oct[_DYN_SUBSTR /* @min:%2esubstr */](0, 8) + oct[_DYN_SUBSTR /* @min:%2esubstr */](9, 4) + \"4\" + oct[_DYN_SUBSTR /* @min:%2esubstr */](13, 3) + clockSequenceHi + oct[_DYN_SUBSTR /* @min:%2esubstr */](16, 3) + oct[_DYN_SUBSTR /* @min:%2esubstr */](19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n    _canUseCookies: undefined,\r\n    isTypeof: isTypeof,\r\n    isUndefined: isUndefined,\r\n    isNullOrUndefined: isNullOrUndefined,\r\n    hasOwnProperty: hasOwnProperty,\r\n    isFunction: isFunction,\r\n    isObject: isObject,\r\n    isDate: isDate,\r\n    isArray: isArray,\r\n    isError: isError,\r\n    isString: isString,\r\n    isNumber: isNumber,\r\n    isBoolean: isBoolean,\r\n    toISOString: toISOString,\r\n    arrForEach: arrForEach,\r\n    arrIndexOf: arrIndexOf,\r\n    arrMap: arrMap,\r\n    arrReduce: arrReduce,\r\n    strTrim: strTrim,\r\n    objCreate: objCreateFn,\r\n    objKeys: objKeys,\r\n    objDefineAccessors: objDefineAccessors,\r\n    addEventHandler: addEventHandler,\r\n    dateNow: dateNow,\r\n    isIE: isIE,\r\n    disableCookies: disableCookies,\r\n    newGuid: newGuid,\r\n    perfNow: perfNow,\r\n    newId: newId,\r\n    randomValue: randomValue,\r\n    random32: random32,\r\n    mwcRandomSeed: mwcRandomSeed,\r\n    mwcRandom32: mwcRandom32,\r\n    generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n    Attach: attachEvent,\r\n    AttachEvent: attachEvent,\r\n    Detach: detachEvent,\r\n    DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n    var cookieMgr = _gblCookieMgr(config, logger);\r\n    var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n    if (_cookieMgrs === null) {\r\n        _cookieMgrs = [];\r\n        _canUseCookies = legacyCanUseCookies;\r\n        // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n        // this WILL NOT work for ES3 browsers (< IE8)\r\n        objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n            return _canUseCookies;\r\n        }, function (value) {\r\n            _canUseCookies = value;\r\n            arrForEach(_cookieMgrs, function (mgr) {\r\n                mgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](value);\r\n            });\r\n        });\r\n    }\r\n    if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n        _cookieMgrs[_DYN_PUSH /* @min:%2epush */](cookieMgr);\r\n    }\r\n    if (isBoolean(legacyCanUseCookies)) {\r\n        cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](legacyCanUseCookies);\r\n    }\r\n    if (isBoolean(_canUseCookies)) {\r\n        cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](_canUseCookies);\r\n    }\r\n    return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n    _legacyCookieMgr()[_DYN_SET_ENABLED /* @min:%2esetEnabled */](false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n    return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n    return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n    _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n    return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","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\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|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|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","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n    var responseType = config.responseType;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?\n        request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(createError(\n        timeoutErrorMessage,\n        config,\n        config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  var valueFromConfig2Keys = ['url', 'method', 'data'];\n  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n  var defaultToConfig2Keys = [\n    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n  ];\n  var directMergeKeys = ['validateStatus'];\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    }\n  });\n\n  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  utils.forEach(directMergeKeys, function merge(prop) {\n    if (prop in config2) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  var axiosKeys = valueFromConfig2Keys\n    .concat(mergeDeepPropertiesKeys)\n    .concat(defaultToConfig2Keys)\n    .concat(directMergeKeys);\n\n  var otherKeys = Object\n    .keys(config1)\n    .concat(Object.keys(config2))\n    .filter(function filterAxiosKeys(key) {\n      return axiosKeys.indexOf(key) === -1;\n    });\n\n  utils.forEach(otherKeys, mergeDeepProperties);\n\n  return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\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  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\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  return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // todo: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const handlerKey of Object.keys(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const keyHandlers of Object.keys(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    let evt = new Event(event, { bubbles, cancelable: true })\n    evt = hydrateObj(evt, args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta) {\n  for (const [key, value] of Object.entries(meta || {})) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar isSafari = exports.isSafari = function isSafari() {\n  return (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n  );\n};\n\nvar isJsons = exports.isJsons = function isJsons(array) {\n  return Array.isArray(array) && array.every(function (row) {\n    return (typeof row === \"undefined\" ? \"undefined\" : _typeof(row)) === 'object' && !(row instanceof Array);\n  });\n};\n\nvar isArrays = exports.isArrays = function isArrays(array) {\n  return Array.isArray(array) && array.every(function (row) {\n    return Array.isArray(row);\n  });\n};\n\nvar jsonsHeaders = exports.jsonsHeaders = function jsonsHeaders(array) {\n  return Array.from(array.map(function (json) {\n    return Object.keys(json);\n  }).reduce(function (a, b) {\n    return new Set([].concat(_toConsumableArray(a), _toConsumableArray(b)));\n  }, []));\n};\n\nvar jsons2arrays = exports.jsons2arrays = function jsons2arrays(jsons, headers) {\n  headers = headers || jsonsHeaders(jsons);\n\n  var headerLabels = headers;\n  var headerKeys = headers;\n  if (isJsons(headers)) {\n    headerLabels = headers.map(function (header) {\n      return header.label;\n    });\n    headerKeys = headers.map(function (header) {\n      return header.key;\n    });\n  }\n\n  var data = jsons.map(function (object) {\n    return headerKeys.map(function (header) {\n      return getHeaderValue(header, object);\n    });\n  });\n  return [headerLabels].concat(_toConsumableArray(data));\n};\n\nvar getHeaderValue = exports.getHeaderValue = function getHeaderValue(property, obj) {\n  var foundValue = property.replace(/\\[([^\\]]+)]/g, \".$1\").split(\".\").reduce(function (o, p, i, arr) {\n    var value = o[p];\n    if (value === undefined || value === null) {\n      arr.splice(1);\n    } else {\n      return value;\n    }\n  }, obj);\n\n  return foundValue === undefined ? property in obj ? obj[property] : '' : foundValue;\n};\n\nvar elementOrEmpty = exports.elementOrEmpty = function elementOrEmpty(element) {\n  return typeof element === 'undefined' || element === null ? '' : element;\n};\n\nvar joiner = exports.joiner = function joiner(data) {\n  var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n  var enclosingCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '\"';\n\n  return data.filter(function (e) {\n    return e;\n  }).map(function (row) {\n    return row.map(function (element) {\n      return elementOrEmpty(element);\n    }).map(function (column) {\n      return \"\" + enclosingCharacter + column + enclosingCharacter;\n    }).join(separator);\n  }).join(\"\\n\");\n};\n\nvar arrays2csv = exports.arrays2csv = function arrays2csv(data, headers, separator, enclosingCharacter) {\n  return joiner(headers ? [headers].concat(_toConsumableArray(data)) : data, separator, enclosingCharacter);\n};\n\nvar jsons2csv = exports.jsons2csv = function jsons2csv(data, headers, separator, enclosingCharacter) {\n  return joiner(jsons2arrays(data, headers), separator, enclosingCharacter);\n};\n\nvar string2csv = exports.string2csv = function string2csv(data, headers, separator, enclosingCharacter) {\n  return headers ? headers.join(separator) + \"\\n\" + data : data.replace(/\"/g, '\"\"');\n};\n\nvar toCSV = exports.toCSV = function toCSV(data, headers, separator, enclosingCharacter) {\n  if (isJsons(data)) return jsons2csv(data, headers, separator, enclosingCharacter);\n  if (isArrays(data)) return arrays2csv(data, headers, separator, enclosingCharacter);\n  if (typeof data === 'string') return string2csv(data, headers, separator);\n  throw new TypeError(\"Data should be a \\\"String\\\", \\\"Array of arrays\\\" OR \\\"Array of objects\\\" \");\n};\n\nvar buildURI = exports.buildURI = function buildURI(data, uFEFF, headers, separator, enclosingCharacter) {\n  var csv = toCSV(data, headers, separator, enclosingCharacter);\n  var type = isSafari() ? 'application/csv' : 'text/csv';\n  var blob = new Blob([uFEFF ? \"\\uFEFF\" : '', csv], { type: type });\n  var dataURI = \"data:\" + type + \";charset=utf-8,\" + (uFEFF ? \"\\uFEFF\" : '') + csv;\n\n  var URL = window.URL || window.webkitURL;\n\n  return typeof URL.createObjectURL === 'undefined' ? dataURI : URL.createObjectURL(blob);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PropsNotForwarded = exports.defaultProps = exports.propTypes = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = exports.propTypes = {\n  data: (0, _propTypes.oneOfType)([_propTypes.string, _propTypes.array, _propTypes.func]).isRequired,\n  headers: _propTypes.array,\n  target: _propTypes.string,\n  separator: _propTypes.string,\n  filename: _propTypes.string,\n  uFEFF: _propTypes.bool,\n  onClick: _propTypes.func,\n  asyncOnClick: _propTypes.bool,\n  enclosingCharacter: _propTypes.string\n};\n\nvar defaultProps = exports.defaultProps = {\n  separator: ',',\n  filename: 'generatedBy_react-csv.csv',\n  uFEFF: true,\n  asyncOnClick: false,\n  enclosingCharacter: '\"'\n};\n\nvar PropsNotForwarded = exports.PropsNotForwarded = ['data', 'headers'];","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SearchIcon = void 0;\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar styled_components_1 = __importDefault(require(\"styled-components\"));\nvar SearchIcon = function (_a) {\n    var showIcon = _a.showIcon;\n    if (!showIcon) {\n        return null;\n    }\n    return ((0, jsx_runtime_1.jsx)(StyledSearchIcon, __assign({ className: \"search-icon\", width: 20, height: 20, focusable: \"false\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\" }, { children: (0, jsx_runtime_1.jsx)(\"path\", { d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" }) })));\n};\nexports.SearchIcon = SearchIcon;\nvar StyledSearchIcon = styled_components_1.default.svg(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n  flex-shrink: 0;\\n  margin: \", \";\\n  fill: \", \";\\n\"], [\"\\n  flex-shrink: 0;\\n  margin: \", \";\\n  fill: \", \";\\n\"])), function (props) { return props.theme.searchIconMargin; }, function (props) { return props.theme.iconColor; });\nvar templateObject_1;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar utils_1 = require(\"../utils\");\nvar TextRow = function (_a) {\n    var className = _a.className, maxHeight = _a.maxHeight, color = _a.color, _b = _a.lineSpacing, lineSpacing = _b === void 0 ? '0.7em' : _b, style = _a.style;\n    var defaultStyles = {\n        maxHeight: maxHeight,\n        width: '100%',\n        height: '1em',\n        backgroundColor: color,\n        marginTop: lineSpacing\n    };\n    return (React.createElement(\"div\", { className: utils_1.joinClassNames('text-row', className), style: __assign(__assign({}, defaultStyles), style) }));\n};\nexports[\"default\"] = TextRow;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar utils_1 = require(\"../utils\");\nvar RoundShape = function (_a) {\n    var className = _a.className, style = _a.style, color = _a.color;\n    var defaultStyles = {\n        backgroundColor: color,\n        borderRadius: '500rem',\n        width: '100%',\n        height: '100%'\n    };\n    return (React.createElement(\"div\", { className: utils_1.joinClassNames('round-shape', className), style: __assign(__assign({}, defaultStyles), style) }));\n};\nexports[\"default\"] = RoundShape;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar TextRow_1 = require(\"./TextRow\");\nvar utils_1 = require(\"../utils\");\nvar defaultStyles = {\n    width: '100%'\n};\nvar defaultWidths = [97, 100, 94, 90, 98, 95, 98, 40];\nvar TextBlock = function (_a) {\n    var rows = _a.rows, lineSpacing = _a.lineSpacing, color = _a.color, style = _a.style, className = _a.className, _b = _a.widths, widths = _b === void 0 ? defaultWidths : _b;\n    var getRowStyle = function (i) {\n        return {\n            maxHeight: 100 / (rows * 2 - 1) + \"%\",\n            width: widths[(i + widths.length) % widths.length] + \"%\"\n        };\n    };\n    return (React.createElement(\"div\", { className: utils_1.joinClassNames('text-block', className), style: __assign(__assign({}, defaultStyles), style) }, Array.apply(null, Array(rows)).map(function (_, i) { return (React.createElement(TextRow_1[\"default\"], { color: color, style: getRowStyle(i), lineSpacing: i !== 0 ? lineSpacing : 0, key: i })); })));\n};\nexports[\"default\"] = TextBlock;\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","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReactSearchAutocomplete = void 0;\nvar ReactSearchAutocomplete_js_1 = __importDefault(require(\"./components/ReactSearchAutocomplete.js\"));\nexports.ReactSearchAutocomplete = ReactSearchAutocomplete_js_1.default;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\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  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\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","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\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  \"link\": true,\n  \"meta\": true,\n  \"param\": true,\n  \"source\": true,\n  \"track\": true,\n  \"wbr\": true\n};\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n  var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n  for (var i = 0; i < scripts.length; i++) {\n    var script = scripts[i];\n\n    if (!V3_URL_REGEX.test(script.src)) {\n      continue;\n    }\n\n    return script;\n  }\n\n  return null;\n};\n\nvar injectScript = function injectScript(params) {\n  var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n  var script = document.createElement('script');\n  script.src = \"\".concat(V3_URL).concat(queryString);\n  var headOrBody = document.head || document.body;\n\n  if (!headOrBody) {\n    throw new Error('Expected document.body not to be null. Stripe.js requires a <body> element.');\n  }\n\n  headOrBody.appendChild(script);\n  return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n  if (!stripe || !stripe._registerWrapper) {\n    return;\n  }\n\n  stripe._registerWrapper({\n    name: 'stripe-js',\n    version: \"1.46.0\",\n    startTime: startTime\n  });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n  // Ensure that we only attempt to load Stripe.js at most once\n  if (stripePromise !== null) {\n    return stripePromise;\n  }\n\n  stripePromise = new Promise(function (resolve, reject) {\n    if (typeof window === 'undefined') {\n      // Resolve to null when imported server side. This makes the module\n      // safe to import in an isomorphic code base.\n      resolve(null);\n      return;\n    }\n\n    if (window.Stripe && params) {\n      console.warn(EXISTING_SCRIPT_MESSAGE);\n    }\n\n    if (window.Stripe) {\n      resolve(window.Stripe);\n      return;\n    }\n\n    try {\n      var script = findScript();\n\n      if (script && params) {\n        console.warn(EXISTING_SCRIPT_MESSAGE);\n      } else if (!script) {\n        script = injectScript(params);\n      }\n\n      script.addEventListener('load', function () {\n        if (window.Stripe) {\n          resolve(window.Stripe);\n        } else {\n          reject(new Error('Stripe.js not available'));\n        }\n      });\n      script.addEventListener('error', function () {\n        reject(new Error('Failed to load Stripe.js'));\n      });\n    } catch (error) {\n      reject(error);\n      return;\n    }\n  });\n  return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n  if (maybeStripe === null) {\n    return null;\n  }\n\n  var stripe = maybeStripe.apply(undefined, args);\n  registerWrapper(stripe, startTime);\n  return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n  return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n  if (!loadCalled) {\n    console.warn(err);\n  }\n});\nvar loadStripe = function loadStripe() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  loadCalled = true;\n  var startTime = Date.now();\n  return stripePromise$1.then(function (maybeStripe) {\n    return initStripe(maybeStripe, args, startTime);\n  });\n};\n\nexport { loadStripe };\n","\"use strict\";\nexports.__esModule = true;\nvar ReactPlaceholder_1 = require(\"./ReactPlaceholder\");\nexports[\"default\"] = ReactPlaceholder_1[\"default\"];\n","function _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, 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 _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; }\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\nvar getDefaults = function getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: function parse(data) {\n      return JSON.parse(data);\n    },\n    stringify: JSON.stringify,\n    parsePayload: function parsePayload(namespace, key, fallbackValue) {\n      return _defineProperty({}, key, fallbackValue || '');\n    },\n    request: request,\n    reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n    customHeaders: {},\n    queryStringParams: {},\n    crossDomain: false,\n    withCredentials: false,\n    overrideMimeType: false,\n    requestOptions: {\n      mode: 'cors',\n      credentials: 'same-origin',\n      cache: 'default'\n    }\n  };\n};\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    _classCallCheck(this, Backend);\n    this.services = services;\n    this.options = options;\n    this.allOptions = allOptions;\n    this.type = 'backend';\n    this.init(services, options, allOptions);\n  }\n  _createClass(Backend, [{\n    key: \"init\",\n    value: function init(services) {\n      var _this = this;\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.services = services;\n      this.options = defaults(options, this.options || {}, getDefaults());\n      this.allOptions = allOptions;\n      if (this.services && this.options.reloadInterval) {\n        setInterval(function () {\n          return _this.reload();\n        }, this.options.reloadInterval);\n      }\n    }\n  }, {\n    key: \"readMulti\",\n    value: function readMulti(languages, namespaces, callback) {\n      this._readAny(languages, languages, namespaces, namespaces, callback);\n    }\n  }, {\n    key: \"read\",\n    value: function read(language, namespace, callback) {\n      this._readAny([language], language, [namespace], namespace, callback);\n    }\n  }, {\n    key: \"_readAny\",\n    value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n      var _this2 = this;\n      var loadPath = this.options.loadPath;\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n      loadPath = makePromise(loadPath);\n      loadPath.then(function (resolvedLoadPath) {\n        if (!resolvedLoadPath) return callback(null, {});\n        var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n          lng: languages.join('+'),\n          ns: namespaces.join('+')\n        });\n        _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n      });\n    }\n  }, {\n    key: \"loadUrl\",\n    value: function loadUrl(url, callback, languages, namespaces) {\n      var _this3 = this;\n      this.options.request(this.options, url, undefined, function (err, res) {\n        if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n        if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n        if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n        if (err) return callback(err, false);\n        var ret, parseErr;\n        try {\n          if (typeof res.data === 'string') {\n            ret = _this3.options.parse(res.data, languages, namespaces);\n          } else {\n            ret = res.data;\n          }\n        } catch (e) {\n          parseErr = 'failed parsing ' + url + ' to json';\n        }\n        if (parseErr) return callback(parseErr, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: \"create\",\n    value: function create(languages, namespace, key, fallbackValue, callback) {\n      var _this4 = this;\n      if (!this.options.addPath) return;\n      if (typeof languages === 'string') languages = [languages];\n      var payload = this.options.parsePayload(namespace, key, fallbackValue);\n      var finished = 0;\n      var dataArray = [];\n      var resArray = [];\n      languages.forEach(function (lng) {\n        var addPath = _this4.options.addPath;\n        if (typeof _this4.options.addPath === 'function') {\n          addPath = _this4.options.addPath(lng, namespace);\n        }\n        var url = _this4.services.interpolator.interpolate(addPath, {\n          lng: lng,\n          ns: namespace\n        });\n        _this4.options.request(_this4.options, url, payload, function (data, res) {\n          finished += 1;\n          dataArray.push(data);\n          resArray.push(res);\n          if (finished === languages.length) {\n            if (callback) callback(dataArray, resArray);\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      var _this5 = this;\n      var _this$services = this.services,\n        backendConnector = _this$services.backendConnector,\n        languageUtils = _this$services.languageUtils,\n        logger = _this$services.logger;\n      var currentLanguage = backendConnector.language;\n      if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n\n      var toLoad = [];\n      var append = function append(lng) {\n        var lngs = languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      append(currentLanguage);\n      if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n        return append(l);\n      });\n      toLoad.forEach(function (lng) {\n        _this5.allOptions.ns.forEach(function (ns) {\n          backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n            if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n            if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n            backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n          });\n        });\n      });\n    }\n  }]);\n  return Backend;\n}();\nBackend.type = 'backend';\nexport default Backend;","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); }\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch;\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch;\n  } else {\n    fetchApi = fetch;\n  }\n}\nvar XmlHttpRequestApi;\nif (hasXMLHttpRequest()) {\n  if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n    XmlHttpRequestApi = global.XMLHttpRequest;\n  } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n    XmlHttpRequestApi = window.XMLHttpRequest;\n  }\n}\nvar ActiveXObjectApi;\nif (typeof ActiveXObject === 'function') {\n  if (typeof global !== 'undefined' && global.ActiveXObject) {\n    ActiveXObjectApi = global.ActiveXObject;\n  } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n    ActiveXObjectApi = window.ActiveXObject;\n  }\n}\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\nvar addQueryString = function addQueryString(url, params) {\n  if (params && _typeof(params) === 'object') {\n    var queryString = '';\n    for (var paramName in params) {\n      queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n    }\n    if (!queryString) return url;\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n  return url;\n};\nvar fetchIt = function fetchIt(url, fetchOptions, callback) {\n  fetchApi(url, fetchOptions).then(function (response) {\n    if (!response.ok) return callback(response.statusText || 'Error', {\n      status: response.status\n    });\n    response.text().then(function (data) {\n      callback(null, {\n        status: response.status,\n        data: data\n      });\n    }).catch(callback);\n  }).catch(callback);\n};\nvar omitFetchOptions = false;\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n  var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n  if (payload) headers['Content-Type'] = 'application/json';\n  var reqOptions = typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions;\n  var fetchOptions = defaults({\n    method: payload ? 'POST' : 'GET',\n    body: payload ? options.stringify(payload) : undefined,\n    headers: headers\n  }, omitFetchOptions ? {} : reqOptions);\n  try {\n    fetchIt(url, fetchOptions, callback);\n  } catch (e) {\n    if (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf('not implemented') < 0) {\n      return callback(e);\n    }\n    try {\n      Object.keys(reqOptions).forEach(function (opt) {\n        delete fetchOptions[opt];\n      });\n      fetchIt(url, fetchOptions, callback);\n      omitFetchOptions = true;\n    } catch (err) {\n      callback(err);\n    }\n  }\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n  if (payload && _typeof(payload) === 'object') {\n    payload = addQueryString('', payload).slice(1);\n  }\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n  try {\n    var x;\n    if (XmlHttpRequestApi) {\n      x = new XmlHttpRequestApi();\n    } else {\n      x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n    }\n    x.open(payload ? 'POST' : 'GET', url, 1);\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n    x.withCredentials = !!options.withCredentials;\n    if (payload) {\n      x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n    if (x.overrideMimeType) {\n      x.overrideMimeType('application/json');\n    }\n    var h = options.customHeaders;\n    h = typeof h === 'function' ? h() : h;\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n        status: x.status,\n        data: x.responseText\n      });\n    };\n    x.send(payload);\n  } catch (e) {\n    console && console.log(e);\n  }\n};\nvar request = function request(options, url, payload, callback) {\n  if (typeof payload === 'function') {\n    callback = payload;\n    payload = undefined;\n  }\n  callback = callback || function () {};\n  if (fetchApi) {\n    return requestWithFetch(options, url, payload, callback);\n  }\n  if (hasXMLHttpRequest() || typeof ActiveXObject === 'function') {\n    return requestWithXmlHttpRequest(options, url, payload, callback);\n  }\n  callback(new Error('No fetch and no xhr implementation found!'));\n};\nexport default request;","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"far\";\nvar faAddressBook = {\n  prefix: 'far',\n  iconName: 'address-book',\n  icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faAddressCard = {\n  prefix: 'far',\n  iconName: 'address-card',\n  icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z\"]\n};\nvar faAngry = {\n  prefix: 'far',\n  iconName: 'angry',\n  icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z\"]\n};\nvar faArrowAltCircleDown = {\n  prefix: 'far',\n  iconName: 'arrow-alt-circle-down',\n  icon: [512, 512, [], \"f358\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n  prefix: 'far',\n  iconName: 'arrow-alt-circle-left',\n  icon: [512, 512, [], \"f359\", \"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\"]\n};\nvar faArrowAltCircleRight = {\n  prefix: 'far',\n  iconName: 'arrow-alt-circle-right',\n  icon: [512, 512, [], \"f35a\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"]\n};\nvar faArrowAltCircleUp = {\n  prefix: 'far',\n  iconName: 'arrow-alt-circle-up',\n  icon: [512, 512, [], \"f35b\", \"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z\"]\n};\nvar faBell = {\n  prefix: 'far',\n  iconName: 'bell',\n  icon: [448, 512, [], \"f0f3\", \"M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBellSlash = {\n  prefix: 'far',\n  iconName: 'bell-slash',\n  icon: [640, 512, [], \"f1f6\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBookmark = {\n  prefix: 'far',\n  iconName: 'bookmark',\n  icon: [384, 512, [], \"f02e\", \"M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z\"]\n};\nvar faBuilding = {\n  prefix: 'far',\n  iconName: 'building',\n  icon: [448, 512, [], \"f1ad\", \"M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z\"]\n};\nvar faCalendar = {\n  prefix: 'far',\n  iconName: 'calendar',\n  icon: [448, 512, [], \"f133\", \"M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\"]\n};\nvar faCalendarAlt = {\n  prefix: 'far',\n  iconName: 'calendar-alt',\n  icon: [448, 512, [], \"f073\", \"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarCheck = {\n  prefix: 'far',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z\"]\n};\nvar faCalendarMinus = {\n  prefix: 'far',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarPlus = {\n  prefix: 'far',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarTimes = {\n  prefix: 'far',\n  iconName: 'calendar-times',\n  icon: [448, 512, [], \"f273\", \"M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareDown = {\n  prefix: 'far',\n  iconName: 'caret-square-down',\n  icon: [448, 512, [], \"f150\", \"M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareLeft = {\n  prefix: 'far',\n  iconName: 'caret-square-left',\n  icon: [448, 512, [], \"f191\", \"M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareRight = {\n  prefix: 'far',\n  iconName: 'caret-square-right',\n  icon: [448, 512, [], \"f152\", \"M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareUp = {\n  prefix: 'far',\n  iconName: 'caret-square-up',\n  icon: [448, 512, [], \"f151\", \"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChartBar = {\n  prefix: 'far',\n  iconName: 'chart-bar',\n  icon: [512, 512, [], \"f080\", \"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\"]\n};\nvar faCheckCircle = {\n  prefix: 'far',\n  iconName: 'check-circle',\n  icon: [512, 512, [], \"f058\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"]\n};\nvar faCheckSquare = {\n  prefix: 'far',\n  iconName: 'check-square',\n  icon: [448, 512, [], \"f14a\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z\"]\n};\nvar faCircle = {\n  prefix: 'far',\n  iconName: 'circle',\n  icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"]\n};\nvar faClipboard = {\n  prefix: 'far',\n  iconName: 'clipboard',\n  icon: [384, 512, [], \"f328\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z\"]\n};\nvar faClock = {\n  prefix: 'far',\n  iconName: 'clock',\n  icon: [512, 512, [], \"f017\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\"]\n};\nvar faClone = {\n  prefix: 'far',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z\"]\n};\nvar faClosedCaptioning = {\n  prefix: 'far',\n  iconName: 'closed-captioning',\n  icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z\"]\n};\nvar faComment = {\n  prefix: 'far',\n  iconName: 'comment',\n  icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentAlt = {\n  prefix: 'far',\n  iconName: 'comment-alt',\n  icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z\"]\n};\nvar faCommentDots = {\n  prefix: 'far',\n  iconName: 'comment-dots',\n  icon: [512, 512, [], \"f4ad\", \"M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faComments = {\n  prefix: 'far',\n  iconName: 'comments',\n  icon: [576, 512, [], \"f086\", \"M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z\"]\n};\nvar faCompass = {\n  prefix: 'far',\n  iconName: 'compass',\n  icon: [496, 512, [], \"f14e\", \"M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faCopy = {\n  prefix: 'far',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"]\n};\nvar faCopyright = {\n  prefix: 'far',\n  iconName: 'copyright',\n  icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z\"]\n};\nvar faCreditCard = {\n  prefix: 'far',\n  iconName: 'credit-card',\n  icon: [576, 512, [], \"f09d\", \"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\"]\n};\nvar faDizzy = {\n  prefix: 'far',\n  iconName: 'dizzy',\n  icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faDotCircle = {\n  prefix: 'far',\n  iconName: 'dot-circle',\n  icon: [512, 512, [], \"f192\", \"M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\"]\n};\nvar faEdit = {\n  prefix: 'far',\n  iconName: 'edit',\n  icon: [576, 512, [], \"f044\", \"M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z\"]\n};\nvar faEnvelope = {\n  prefix: 'far',\n  iconName: 'envelope',\n  icon: [512, 512, [], \"f0e0\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"]\n};\nvar faEnvelopeOpen = {\n  prefix: 'far',\n  iconName: 'envelope-open',\n  icon: [512, 512, [], \"f2b6\", \"M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z\"]\n};\nvar faEye = {\n  prefix: 'far',\n  iconName: 'eye',\n  icon: [576, 512, [], \"f06e\", \"M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.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 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z\"]\n};\nvar faEyeSlash = {\n  prefix: 'far',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z\"]\n};\nvar faFile = {\n  prefix: 'far',\n  iconName: 'file',\n  icon: [384, 512, [], \"f15b\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\"]\n};\nvar faFileAlt = {\n  prefix: 'far',\n  iconName: 'file-alt',\n  icon: [384, 512, [], \"f15c\", \"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"]\n};\nvar faFileArchive = {\n  prefix: 'far',\n  iconName: 'file-archive',\n  icon: [384, 512, [], \"f1c6\", \"M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z\"]\n};\nvar faFileAudio = {\n  prefix: 'far',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z\"]\n};\nvar faFileCode = {\n  prefix: 'far',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z\"]\n};\nvar faFileExcel = {\n  prefix: 'far',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z\"]\n};\nvar faFileImage = {\n  prefix: 'far',\n  iconName: 'file-image',\n  icon: [384, 512, [], \"f1c5\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"]\n};\nvar faFilePdf = {\n  prefix: 'far',\n  iconName: 'file-pdf',\n  icon: [384, 512, [], \"f1c1\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z\"]\n};\nvar faFilePowerpoint = {\n  prefix: 'far',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z\"]\n};\nvar faFileVideo = {\n  prefix: 'far',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z\"]\n};\nvar faFileWord = {\n  prefix: 'far',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z\"]\n};\nvar faFlag = {\n  prefix: 'far',\n  iconName: 'flag',\n  icon: [512, 512, [], \"f024\", \"M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z\"]\n};\nvar faFlushed = {\n  prefix: 'far',\n  iconName: 'flushed',\n  icon: [496, 512, [], \"f579\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faFolder = {\n  prefix: 'far',\n  iconName: 'folder',\n  icon: [512, 512, [], \"f07b\", \"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\"]\n};\nvar faFolderOpen = {\n  prefix: 'far',\n  iconName: 'folder-open',\n  icon: [576, 512, [], \"f07c\", \"M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z\"]\n};\nvar faFontAwesomeLogoFull = {\n  prefix: 'far',\n  iconName: 'font-awesome-logo-full',\n  icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFrown = {\n  prefix: 'far',\n  iconName: 'frown',\n  icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\"]\n};\nvar faFrownOpen = {\n  prefix: 'far',\n  iconName: 'frown-open',\n  icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z\"]\n};\nvar faFutbol = {\n  prefix: 'far',\n  iconName: 'futbol',\n  icon: [496, 512, [], \"f1e3\", \"M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z\"]\n};\nvar faGem = {\n  prefix: 'far',\n  iconName: 'gem',\n  icon: [576, 512, [], \"f3a5\", \"M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z\"]\n};\nvar faGrimace = {\n  prefix: 'far',\n  iconName: 'grimace',\n  icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z\"]\n};\nvar faGrin = {\n  prefix: 'far',\n  iconName: 'grin',\n  icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faGrinAlt = {\n  prefix: 'far',\n  iconName: 'grin-alt',\n  icon: [496, 512, [], \"f581\", \"M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z\"]\n};\nvar faGrinBeam = {\n  prefix: 'far',\n  iconName: 'grin-beam',\n  icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z\"]\n};\nvar faGrinBeamSweat = {\n  prefix: 'far',\n  iconName: 'grin-beam-sweat',\n  icon: [496, 512, [], \"f583\", \"M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinHearts = {\n  prefix: 'far',\n  iconName: 'grin-hearts',\n  icon: [496, 512, [], \"f584\", \"M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\"]\n};\nvar faGrinSquint = {\n  prefix: 'far',\n  iconName: 'grin-squint',\n  icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z\"]\n};\nvar faGrinSquintTears = {\n  prefix: 'far',\n  iconName: 'grin-squint-tears',\n  icon: [512, 512, [], \"f586\", \"M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z\"]\n};\nvar faGrinStars = {\n  prefix: 'far',\n  iconName: 'grin-stars',\n  icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z\"]\n};\nvar faGrinTears = {\n  prefix: 'far',\n  iconName: 'grin-tears',\n  icon: [640, 512, [], \"f588\", \"M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinTongue = {\n  prefix: 'far',\n  iconName: 'grin-tongue',\n  icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faGrinTongueSquint = {\n  prefix: 'far',\n  iconName: 'grin-tongue-squint',\n  icon: [496, 512, [], \"f58a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z\"]\n};\nvar faGrinTongueWink = {\n  prefix: 'far',\n  iconName: 'grin-tongue-wink',\n  icon: [496, 512, [], \"f58b\", \"M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z\"]\n};\nvar faGrinWink = {\n  prefix: 'far',\n  iconName: 'grin-wink',\n  icon: [496, 512, [], \"f58c\", \"M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faHandLizard = {\n  prefix: 'far',\n  iconName: 'hand-lizard',\n  icon: [576, 512, [], \"f258\", \"M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z\"]\n};\nvar faHandPaper = {\n  prefix: 'far',\n  iconName: 'hand-paper',\n  icon: [448, 512, [], \"f256\", \"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\"]\n};\nvar faHandPeace = {\n  prefix: 'far',\n  iconName: 'hand-peace',\n  icon: [448, 512, [], \"f25b\", \"M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z\"]\n};\nvar faHandPointDown = {\n  prefix: 'far',\n  iconName: 'hand-point-down',\n  icon: [448, 512, [], \"f0a7\", \"M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z\"]\n};\nvar faHandPointLeft = {\n  prefix: 'far',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointRight = {\n  prefix: 'far',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faHandPointUp = {\n  prefix: 'far',\n  iconName: 'hand-point-up',\n  icon: [448, 512, [], \"f0a6\", \"M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointer = {\n  prefix: 'far',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z\"]\n};\nvar faHandRock = {\n  prefix: 'far',\n  iconName: 'hand-rock',\n  icon: [512, 512, [], \"f255\", \"M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z\"]\n};\nvar faHandScissors = {\n  prefix: 'far',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z\"]\n};\nvar faHandSpock = {\n  prefix: 'far',\n  iconName: 'hand-spock',\n  icon: [512, 512, [], \"f259\", \"M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z\"]\n};\nvar faHandshake = {\n  prefix: 'far',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z\"]\n};\nvar faHdd = {\n  prefix: 'far',\n  iconName: 'hdd',\n  icon: [576, 512, [], \"f0a0\", \"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z\"]\n};\nvar faHeart = {\n  prefix: 'far',\n  iconName: 'heart',\n  icon: [512, 512, [], \"f004\", \"M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z\"]\n};\nvar faHospital = {\n  prefix: 'far',\n  iconName: 'hospital',\n  icon: [448, 512, [], \"f0f8\", \"M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z\"]\n};\nvar faHourglass = {\n  prefix: 'far',\n  iconName: 'hourglass',\n  icon: [384, 512, [], \"f254\", \"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\"]\n};\nvar faIdBadge = {\n  prefix: 'far',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faIdCard = {\n  prefix: 'far',\n  iconName: 'id-card',\n  icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faImage = {\n  prefix: 'far',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z\"]\n};\nvar faImages = {\n  prefix: 'far',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z\"]\n};\nvar faKeyboard = {\n  prefix: 'far',\n  iconName: 'keyboard',\n  icon: [576, 512, [], \"f11c\", \"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z\"]\n};\nvar faKiss = {\n  prefix: 'far',\n  iconName: 'kiss',\n  icon: [496, 512, [], \"f596\", \"M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faKissBeam = {\n  prefix: 'far',\n  iconName: 'kiss-beam',\n  icon: [496, 512, [], \"f597\", \"M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z\"]\n};\nvar faKissWinkHeart = {\n  prefix: 'far',\n  iconName: 'kiss-wink-heart',\n  icon: [504, 512, [], \"f598\", \"M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z\"]\n};\nvar faLaugh = {\n  prefix: 'far',\n  iconName: 'laugh',\n  icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughBeam = {\n  prefix: 'far',\n  iconName: 'laugh-beam',\n  icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughSquint = {\n  prefix: 'far',\n  iconName: 'laugh-squint',\n  icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughWink = {\n  prefix: 'far',\n  iconName: 'laugh-wink',\n  icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLemon = {\n  prefix: 'far',\n  iconName: 'lemon',\n  icon: [512, 512, [], \"f094\", \"M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z\"]\n};\nvar faLifeRing = {\n  prefix: 'far',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z\"]\n};\nvar faLightbulb = {\n  prefix: 'far',\n  iconName: 'lightbulb',\n  icon: [352, 512, [], \"f0eb\", \"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z\"]\n};\nvar faListAlt = {\n  prefix: 'far',\n  iconName: 'list-alt',\n  icon: [512, 512, [], \"f022\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\"]\n};\nvar faMap = {\n  prefix: 'far',\n  iconName: 'map',\n  icon: [576, 512, [], \"f279\", \"M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z\"]\n};\nvar faMeh = {\n  prefix: 'far',\n  iconName: 'meh',\n  icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMehBlank = {\n  prefix: 'far',\n  iconName: 'meh-blank',\n  icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faMehRollingEyes = {\n  prefix: 'far',\n  iconName: 'meh-rolling-eyes',\n  icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMinusSquare = {\n  prefix: 'far',\n  iconName: 'minus-square',\n  icon: [448, 512, [], \"f146\", \"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faMoneyBillAlt = {\n  prefix: 'far',\n  iconName: 'money-bill-alt',\n  icon: [640, 512, [], \"f3d1\", \"M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z\"]\n};\nvar faMoon = {\n  prefix: 'far',\n  iconName: 'moon',\n  icon: [512, 512, [], \"f186\", \"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\"]\n};\nvar faNewspaper = {\n  prefix: 'far',\n  iconName: 'newspaper',\n  icon: [576, 512, [], \"f1ea\", \"M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z\"]\n};\nvar faObjectGroup = {\n  prefix: 'far',\n  iconName: 'object-group',\n  icon: [512, 512, [], \"f247\", \"M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z\"]\n};\nvar faObjectUngroup = {\n  prefix: 'far',\n  iconName: 'object-ungroup',\n  icon: [576, 512, [], \"f248\", \"M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z\"]\n};\nvar faPaperPlane = {\n  prefix: 'far',\n  iconName: 'paper-plane',\n  icon: [512, 512, [], \"f1d8\", \"M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z\"]\n};\nvar faPauseCircle = {\n  prefix: 'far',\n  iconName: 'pause-circle',\n  icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z\"]\n};\nvar faPlayCircle = {\n  prefix: 'far',\n  iconName: 'play-circle',\n  icon: [512, 512, [], \"f144\", \"M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z\"]\n};\nvar faPlusSquare = {\n  prefix: 'far',\n  iconName: 'plus-square',\n  icon: [448, 512, [], \"f0fe\", \"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faQuestionCircle = {\n  prefix: 'far',\n  iconName: 'question-circle',\n  icon: [512, 512, [], \"f059\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"]\n};\nvar faRegistered = {\n  prefix: 'far',\n  iconName: 'registered',\n  icon: [512, 512, [], \"f25d\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z\"]\n};\nvar faSadCry = {\n  prefix: 'far',\n  iconName: 'sad-cry',\n  icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z\"]\n};\nvar faSadTear = {\n  prefix: 'far',\n  iconName: 'sad-tear',\n  icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\"]\n};\nvar faSave = {\n  prefix: 'far',\n  iconName: 'save',\n  icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z\"]\n};\nvar faShareSquare = {\n  prefix: 'far',\n  iconName: 'share-square',\n  icon: [576, 512, [], \"f14d\", \"M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z\"]\n};\nvar faSmile = {\n  prefix: 'far',\n  iconName: 'smile',\n  icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"]\n};\nvar faSmileBeam = {\n  prefix: 'far',\n  iconName: 'smile-beam',\n  icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z\"]\n};\nvar faSmileWink = {\n  prefix: 'far',\n  iconName: 'smile-wink',\n  icon: [496, 512, [], \"f4da\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z\"]\n};\nvar faSnowflake = {\n  prefix: 'far',\n  iconName: 'snowflake',\n  icon: [448, 512, [], \"f2dc\", \"M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z\"]\n};\nvar faSquare = {\n  prefix: 'far',\n  iconName: 'square',\n  icon: [448, 512, [], \"f0c8\", \"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-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\"]\n};\nvar faStar = {\n  prefix: 'far',\n  iconName: 'star',\n  icon: [576, 512, [], \"f005\", \"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\"]\n};\nvar faStarHalf = {\n  prefix: 'far',\n  iconName: 'star-half',\n  icon: [576, 512, [], \"f089\", \"M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z\"]\n};\nvar faStickyNote = {\n  prefix: 'far',\n  iconName: 'sticky-note',\n  icon: [448, 512, [], \"f249\", \"M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z\"]\n};\nvar faStopCircle = {\n  prefix: 'far',\n  iconName: 'stop-circle',\n  icon: [512, 512, [], \"f28d\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z\"]\n};\nvar faSun = {\n  prefix: 'far',\n  iconName: 'sun',\n  icon: [512, 512, [], \"f185\", \"M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z\"]\n};\nvar faSurprise = {\n  prefix: 'far',\n  iconName: 'surprise',\n  icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faThumbsDown = {\n  prefix: 'far',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [], \"f165\", \"M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z\"]\n};\nvar faThumbsUp = {\n  prefix: 'far',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [], \"f164\", \"M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faTimesCircle = {\n  prefix: 'far',\n  iconName: 'times-circle',\n  icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faTired = {\n  prefix: 'far',\n  iconName: 'tired',\n  icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z\"]\n};\nvar faTrashAlt = {\n  prefix: 'far',\n  iconName: 'trash-alt',\n  icon: [448, 512, [], \"f2ed\", \"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\"]\n};\nvar faUser = {\n  prefix: 'far',\n  iconName: 'user',\n  icon: [448, 512, [], \"f007\", \"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\"]\n};\nvar faUserCircle = {\n  prefix: 'far',\n  iconName: 'user-circle',\n  icon: [496, 512, [], \"f2bd\", \"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\"]\n};\nvar faWindowClose = {\n  prefix: 'far',\n  iconName: 'window-close',\n  icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z\"]\n};\nvar faWindowMaximize = {\n  prefix: 'far',\n  iconName: 'window-maximize',\n  icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\"]\n};\nvar faWindowMinimize = {\n  prefix: 'far',\n  iconName: 'window-minimize',\n  icon: [512, 512, [], \"f2d1\", \"M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faWindowRestore = {\n  prefix: 'far',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z\"]\n};\nvar _iconsCache = {\n  faAddressBook: faAddressBook,\n  faAddressCard: faAddressCard,\n  faAngry: faAngry,\n  faArrowAltCircleDown: faArrowAltCircleDown,\n  faArrowAltCircleLeft: faArrowAltCircleLeft,\n  faArrowAltCircleRight: faArrowAltCircleRight,\n  faArrowAltCircleUp: faArrowAltCircleUp,\n  faBell: faBell,\n  faBellSlash: faBellSlash,\n  faBookmark: faBookmark,\n  faBuilding: faBuilding,\n  faCalendar: faCalendar,\n  faCalendarAlt: faCalendarAlt,\n  faCalendarCheck: faCalendarCheck,\n  faCalendarMinus: faCalendarMinus,\n  faCalendarPlus: faCalendarPlus,\n  faCalendarTimes: faCalendarTimes,\n  faCaretSquareDown: faCaretSquareDown,\n  faCaretSquareLeft: faCaretSquareLeft,\n  faCaretSquareRight: faCaretSquareRight,\n  faCaretSquareUp: faCaretSquareUp,\n  faChartBar: faChartBar,\n  faCheckCircle: faCheckCircle,\n  faCheckSquare: faCheckSquare,\n  faCircle: faCircle,\n  faClipboard: faClipboard,\n  faClock: faClock,\n  faClone: faClone,\n  faClosedCaptioning: faClosedCaptioning,\n  faComment: faComment,\n  faCommentAlt: faCommentAlt,\n  faCommentDots: faCommentDots,\n  faComments: faComments,\n  faCompass: faCompass,\n  faCopy: faCopy,\n  faCopyright: faCopyright,\n  faCreditCard: faCreditCard,\n  faDizzy: faDizzy,\n  faDotCircle: faDotCircle,\n  faEdit: faEdit,\n  faEnvelope: faEnvelope,\n  faEnvelopeOpen: faEnvelopeOpen,\n  faEye: faEye,\n  faEyeSlash: faEyeSlash,\n  faFile: faFile,\n  faFileAlt: faFileAlt,\n  faFileArchive: faFileArchive,\n  faFileAudio: faFileAudio,\n  faFileCode: faFileCode,\n  faFileExcel: faFileExcel,\n  faFileImage: faFileImage,\n  faFilePdf: faFilePdf,\n  faFilePowerpoint: faFilePowerpoint,\n  faFileVideo: faFileVideo,\n  faFileWord: faFileWord,\n  faFlag: faFlag,\n  faFlushed: faFlushed,\n  faFolder: faFolder,\n  faFolderOpen: faFolderOpen,\n  faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n  faFrown: faFrown,\n  faFrownOpen: faFrownOpen,\n  faFutbol: faFutbol,\n  faGem: faGem,\n  faGrimace: faGrimace,\n  faGrin: faGrin,\n  faGrinAlt: faGrinAlt,\n  faGrinBeam: faGrinBeam,\n  faGrinBeamSweat: faGrinBeamSweat,\n  faGrinHearts: faGrinHearts,\n  faGrinSquint: faGrinSquint,\n  faGrinSquintTears: faGrinSquintTears,\n  faGrinStars: faGrinStars,\n  faGrinTears: faGrinTears,\n  faGrinTongue: faGrinTongue,\n  faGrinTongueSquint: faGrinTongueSquint,\n  faGrinTongueWink: faGrinTongueWink,\n  faGrinWink: faGrinWink,\n  faHandLizard: faHandLizard,\n  faHandPaper: faHandPaper,\n  faHandPeace: faHandPeace,\n  faHandPointDown: faHandPointDown,\n  faHandPointLeft: faHandPointLeft,\n  faHandPointRight: faHandPointRight,\n  faHandPointUp: faHandPointUp,\n  faHandPointer: faHandPointer,\n  faHandRock: faHandRock,\n  faHandScissors: faHandScissors,\n  faHandSpock: faHandSpock,\n  faHandshake: faHandshake,\n  faHdd: faHdd,\n  faHeart: faHeart,\n  faHospital: faHospital,\n  faHourglass: faHourglass,\n  faIdBadge: faIdBadge,\n  faIdCard: faIdCard,\n  faImage: faImage,\n  faImages: faImages,\n  faKeyboard: faKeyboard,\n  faKiss: faKiss,\n  faKissBeam: faKissBeam,\n  faKissWinkHeart: faKissWinkHeart,\n  faLaugh: faLaugh,\n  faLaughBeam: faLaughBeam,\n  faLaughSquint: faLaughSquint,\n  faLaughWink: faLaughWink,\n  faLemon: faLemon,\n  faLifeRing: faLifeRing,\n  faLightbulb: faLightbulb,\n  faListAlt: faListAlt,\n  faMap: faMap,\n  faMeh: faMeh,\n  faMehBlank: faMehBlank,\n  faMehRollingEyes: faMehRollingEyes,\n  faMinusSquare: faMinusSquare,\n  faMoneyBillAlt: faMoneyBillAlt,\n  faMoon: faMoon,\n  faNewspaper: faNewspaper,\n  faObjectGroup: faObjectGroup,\n  faObjectUngroup: faObjectUngroup,\n  faPaperPlane: faPaperPlane,\n  faPauseCircle: faPauseCircle,\n  faPlayCircle: faPlayCircle,\n  faPlusSquare: faPlusSquare,\n  faQuestionCircle: faQuestionCircle,\n  faRegistered: faRegistered,\n  faSadCry: faSadCry,\n  faSadTear: faSadTear,\n  faSave: faSave,\n  faShareSquare: faShareSquare,\n  faSmile: faSmile,\n  faSmileBeam: faSmileBeam,\n  faSmileWink: faSmileWink,\n  faSnowflake: faSnowflake,\n  faSquare: faSquare,\n  faStar: faStar,\n  faStarHalf: faStarHalf,\n  faStickyNote: faStickyNote,\n  faStopCircle: faStopCircle,\n  faSun: faSun,\n  faSurprise: faSurprise,\n  faThumbsDown: faThumbsDown,\n  faThumbsUp: faThumbsUp,\n  faTimesCircle: faTimesCircle,\n  faTired: faTired,\n  faTrashAlt: faTrashAlt,\n  faUser: faUser,\n  faUserCircle: faUserCircle,\n  faWindowClose: faWindowClose,\n  faWindowMaximize: faWindowMaximize,\n  faWindowMinimize: faWindowMinimize,\n  faWindowRestore: faWindowRestore\n};\n\nexport { _iconsCache as far, prefix, faAddressBook, faAddressCard, faAngry, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faBell, faBellSlash, faBookmark, faBuilding, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faChartBar, faCheckCircle, faCheckSquare, faCircle, faClipboard, faClock, faClone, faClosedCaptioning, faComment, faCommentAlt, faCommentDots, faComments, faCompass, faCopy, faCopyright, faCreditCard, faDizzy, faDotCircle, faEdit, faEnvelope, faEnvelopeOpen, faEye, faEyeSlash, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileExcel, faFileImage, faFilePdf, faFilePowerpoint, faFileVideo, faFileWord, faFlag, faFlushed, faFolder, faFolderOpen, faFontAwesomeLogoFull, faFrown, faFrownOpen, faFutbol, faGem, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faHandLizard, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSpock, faHandshake, faHdd, faHeart, faHospital, faHourglass, faIdBadge, faIdCard, faImage, faImages, faKeyboard, faKiss, faKissBeam, faKissWinkHeart, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLemon, faLifeRing, faLightbulb, faListAlt, faMap, faMeh, faMehBlank, faMehRollingEyes, faMinusSquare, faMoneyBillAlt, faMoon, faNewspaper, faObjectGroup, faObjectUngroup, faPaperPlane, faPauseCircle, faPlayCircle, faPlusSquare, faQuestionCircle, faRegistered, faSadCry, faSadTear, faSave, faShareSquare, faSmile, faSmileBeam, faSmileWink, faSnowflake, faSquare, faStar, faStarHalf, faStickyNote, faStopCircle, faSun, faSurprise, faThumbsDown, faThumbsUp, faTimesCircle, faTired, faTrashAlt, faUser, faUserCircle, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n  let id = 0;\n  return function() {\n    return id++;\n  };\n}());\nfunction isNullOrUndef(value) {\n  return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\nfunction isObject(value) {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : value / dimension;\nconst toDimension = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\nfunction callback(fn, args, thisArg) {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n  let i, len, keys;\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\nfunction _elementsEqual(a0, a1) {\n  let i, ilen, v0, v1;\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone$1(source) {\n  if (isArray(source)) {\n    return source.map(clone$1);\n  }\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone$1(source[keys[k]]);\n    }\n    return target;\n  }\n  return source;\n}\nfunction isValidKey(key) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone$1(sval);\n  }\n}\nfunction merge(target, source, options) {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n  if (!isObject(target)) {\n    return target;\n  }\n  options = options || {};\n  const merger = options.merger || _merger;\n  for (let i = 0; i < ilen; ++i) {\n    source = sources[i];\n    if (!isObject(source)) {\n      continue;\n    }\n    const keys = Object.keys(source);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, source, options);\n    }\n  }\n  return target;\n}\nfunction mergeIf(target, source) {\n  return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone$1(sval);\n  }\n}\nfunction _deprecated(scope, value, previous, current) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\nconst keyResolvers = {\n  '': v => v,\n  x: o => o.x,\n  y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\nfunction _splitKey(key) {\n  const parts = key.split('.');\n  const keys = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\nfunction _capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n};\nfunction _isClickEvent(e) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n  const result = [];\n  const sqrt = Math.sqrt(value);\n  let i;\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) {\n    result.push(sqrt);\n  }\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\nfunction isNumber(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n  return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n  let i, ilen, value;\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\nfunction toRadians(degrees) {\n  return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n  return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n  if (!isNumberFinite(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n  if (angle < (-0.5 * PI)) {\n    angle += TAU;\n  }\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n  return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n  return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n  return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid;\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n  return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n  _lookup(table, value, last\n    ? index => table[index][key] <= value\n    : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n  let start = 0;\n  let end = values.length;\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n        return res;\n      }\n    });\n  });\n}\nfunction unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n  if (listeners.length > 0) {\n    return;\n  }\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n  delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n  const set = new Set();\n  let i, ilen;\n  for (i = 0, ilen = items.length; i < ilen; ++i) {\n    set.add(items[i]);\n  }\n  if (set.size === ilen) {\n    return items;\n  }\n  return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n  const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n  let ticking = false;\n  let args = [];\n  return function(...rest) {\n    args = updateArgs(rest);\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, args);\n      });\n    }\n  };\n}\nfunction debounce(fn, delay) {\n  let timeout;\n  return function(...args) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n  const pointCount = points.length;\n  let start = 0;\n  let count = pointCount;\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        _lookupByKey(_parsed, iScale.axis, min).lo,\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n  return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n  linear: t => t,\n  easeInQuad: t => t * t,\n  easeOutQuad: t => -t * (t - 2),\n  easeInOutQuad: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n  easeInCubic: t => t * t * t,\n  easeOutCubic: t => (t -= 1) * t * t + 1,\n  easeInOutCubic: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n  easeInQuart: t => t * t * t * t,\n  easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n  easeInOutQuart: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n  easeInQuint: t => t * t * t * t * t,\n  easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n  easeInOutQuint: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n  easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n  easeOutSine: t => Math.sin(t * HALF_PI),\n  easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n  easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n  easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n  easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n  easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n  easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n  easeInOutCirc: t => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n  easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n  easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n  easeInOutElastic(t) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n  easeInBack(t) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n  easeOutBack(t) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n  easeInOutBack(t) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n  easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n  easeOutBounce(t) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n  easeInOutBounce: t => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\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  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n  x: 'dark',\n  Z: 'light',\n  Y: 're',\n  X: 'blu',\n  W: 'gr',\n  V: 'medium',\n  U: 'slate',\n  A: 'ee',\n  T: 'ol',\n  S: 'or',\n  B: 'ra',\n  C: 'lateg',\n  D: 'ights',\n  R: 'in',\n  Q: 'turquois',\n  E: 'hi',\n  P: 'ro',\n  O: 'al',\n  N: 'le',\n  M: 'de',\n  L: 'yello',\n  F: 'en',\n  K: 'ch',\n  G: 'arks',\n  H: 'ea',\n  I: 'ightg',\n  J: 'wh'\n};\nconst names$1 = {\n  OiceXe: 'f0f8ff',\n  antiquewEte: 'faebd7',\n  aqua: 'ffff',\n  aquamarRe: '7fffd4',\n  azuY: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '0',\n  blanKedOmond: 'ffebcd',\n  Xe: 'ff',\n  XeviTet: '8a2be2',\n  bPwn: 'a52a2a',\n  burlywood: 'deb887',\n  caMtXe: '5f9ea0',\n  KartYuse: '7fff00',\n  KocTate: 'd2691e',\n  cSO: 'ff7f50',\n  cSnflowerXe: '6495ed',\n  cSnsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: 'ffff',\n  xXe: '8b',\n  xcyan: '8b8b',\n  xgTMnPd: 'b8860b',\n  xWay: 'a9a9a9',\n  xgYF: '6400',\n  xgYy: 'a9a9a9',\n  xkhaki: 'bdb76b',\n  xmagFta: '8b008b',\n  xTivegYF: '556b2f',\n  xSange: 'ff8c00',\n  xScEd: '9932cc',\n  xYd: '8b0000',\n  xsOmon: 'e9967a',\n  xsHgYF: '8fbc8f',\n  xUXe: '483d8b',\n  xUWay: '2f4f4f',\n  xUgYy: '2f4f4f',\n  xQe: 'ced1',\n  xviTet: '9400d3',\n  dAppRk: 'ff1493',\n  dApskyXe: 'bfff',\n  dimWay: '696969',\n  dimgYy: '696969',\n  dodgerXe: '1e90ff',\n  fiYbrick: 'b22222',\n  flSOwEte: 'fffaf0',\n  foYstWAn: '228b22',\n  fuKsia: 'ff00ff',\n  gaRsbSo: 'dcdcdc',\n  ghostwEte: 'f8f8ff',\n  gTd: 'ffd700',\n  gTMnPd: 'daa520',\n  Way: '808080',\n  gYF: '8000',\n  gYFLw: 'adff2f',\n  gYy: '808080',\n  honeyMw: 'f0fff0',\n  hotpRk: 'ff69b4',\n  RdianYd: 'cd5c5c',\n  Rdigo: '4b0082',\n  ivSy: 'fffff0',\n  khaki: 'f0e68c',\n  lavFMr: 'e6e6fa',\n  lavFMrXsh: 'fff0f5',\n  lawngYF: '7cfc00',\n  NmoncEffon: 'fffacd',\n  ZXe: 'add8e6',\n  ZcSO: 'f08080',\n  Zcyan: 'e0ffff',\n  ZgTMnPdLw: 'fafad2',\n  ZWay: 'd3d3d3',\n  ZgYF: '90ee90',\n  ZgYy: 'd3d3d3',\n  ZpRk: 'ffb6c1',\n  ZsOmon: 'ffa07a',\n  ZsHgYF: '20b2aa',\n  ZskyXe: '87cefa',\n  ZUWay: '778899',\n  ZUgYy: '778899',\n  ZstAlXe: 'b0c4de',\n  ZLw: 'ffffe0',\n  lime: 'ff00',\n  limegYF: '32cd32',\n  lRF: 'faf0e6',\n  magFta: 'ff00ff',\n  maPon: '800000',\n  VaquamarRe: '66cdaa',\n  VXe: 'cd',\n  VScEd: 'ba55d3',\n  VpurpN: '9370db',\n  VsHgYF: '3cb371',\n  VUXe: '7b68ee',\n  VsprRggYF: 'fa9a',\n  VQe: '48d1cc',\n  VviTetYd: 'c71585',\n  midnightXe: '191970',\n  mRtcYam: 'f5fffa',\n  mistyPse: 'ffe4e1',\n  moccasR: 'ffe4b5',\n  navajowEte: 'ffdead',\n  navy: '80',\n  Tdlace: 'fdf5e6',\n  Tive: '808000',\n  TivedBb: '6b8e23',\n  Sange: 'ffa500',\n  SangeYd: 'ff4500',\n  ScEd: 'da70d6',\n  pOegTMnPd: 'eee8aa',\n  pOegYF: '98fb98',\n  pOeQe: 'afeeee',\n  pOeviTetYd: 'db7093',\n  papayawEp: 'ffefd5',\n  pHKpuff: 'ffdab9',\n  peru: 'cd853f',\n  pRk: 'ffc0cb',\n  plum: 'dda0dd',\n  powMrXe: 'b0e0e6',\n  purpN: '800080',\n  YbeccapurpN: '663399',\n  Yd: 'ff0000',\n  Psybrown: 'bc8f8f',\n  PyOXe: '4169e1',\n  saddNbPwn: '8b4513',\n  sOmon: 'fa8072',\n  sandybPwn: 'f4a460',\n  sHgYF: '2e8b57',\n  sHshell: 'fff5ee',\n  siFna: 'a0522d',\n  silver: 'c0c0c0',\n  skyXe: '87ceeb',\n  UXe: '6a5acd',\n  UWay: '708090',\n  UgYy: '708090',\n  snow: 'fffafa',\n  sprRggYF: 'ff7f',\n  stAlXe: '4682b4',\n  tan: 'd2b48c',\n  teO: '8080',\n  tEstN: 'd8bfd8',\n  tomato: 'ff6347',\n  Qe: '40e0d0',\n  viTet: 'ee82ee',\n  JHt: 'f5deb3',\n  wEte: 'ffffff',\n  wEtesmoke: 'f5f5f5',\n  Lw: 'ffff00',\n  LwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n  return false;\n}\nfunction color(value) {\n  return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope$1(root, scope), values);\n  }\n  return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n  constructor(_descriptors) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n    this.describe(_descriptors);\n  }\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n  get(scope) {\n    return getScope$1(this, scope);\n  }\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope$1(this, scope);\n    const targetScopeObject = getScope$1(this, targetScope);\n    const privateName = '_' + name;\n    Object.defineProperties(scopeObject, {\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n}\nvar defaults = new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n});\n\nfunction toFontString(font) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n  ctx.save();\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i, j, jlen, thing, nestedThing;\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n    if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n  ctx.restore();\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n  ctx = ctx || canvas.getContext('2d');\n  ctx.save();\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n  drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n  let type, xOffset, yOffset, size, cornerRadius, width;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n  ctx.beginPath();\n  switch (style) {\n  default:\n    if (w) {\n      ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n    } else {\n      ctx.arc(x, y, radius, 0, TAU);\n    }\n    ctx.closePath();\n    break;\n  case 'triangle':\n    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n    ctx.closePath();\n    break;\n  case 'rect':\n    if (!rotation) {\n      size = Math.SQRT1_2 * radius;\n      width = w ? w / 2 : size;\n      ctx.rect(x - width, y - size, 2 * width, 2 * size);\n      break;\n    }\n    rad += QUARTER_PI;\n  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n  case 'cross':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'line':\n    xOffset = w ? w / 2 : Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    break;\n  case 'dash':\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\nfunction _isPointInArea(point, area, margin) {\n  margin = margin || 0.5;\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\nfunction unclipArea(ctx) {\n  ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i, line;\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n    y += font.lineHeight;\n  }\n  ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n  if (opts.strikethrough || opts.underline) {\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\nfunction addRoundedRectPath(ctx, rect) {\n  const {x, y, w, h, radius} = rect;\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n  ctx.lineTo(x + w, y + radius.topRight);\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n  ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n  value = +matches[2];\n  switch (matches[3]) {\n  case 'px':\n    return value;\n  case '%':\n    value /= 100;\n    break;\n  }\n  return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\nfunction toTRBL(value) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n  const obj = toTRBL(value);\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n  return obj;\n}\nfunction toFont(options, fallback) {\n  options = options || {};\n  fallback = fallback || defaults.font;\n  let size = valueOrDefault(options.size, fallback.size);\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = '';\n  }\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n  font.string = toFontString(font);\n  return font;\n}\nfunction resolve(inputs, context, index, info) {\n  let cacheable = true;\n  let i, ilen, value;\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\nfunction createContext(parentContext, context) {\n  return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n  if (!defined(fallback)) {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: rootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete target._keys;\n      delete scopes[0][prop];\n      return true;\n    },\n    get(target, prop) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n    has(target, prop) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n    set(target, prop, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value;\n      delete target._keys;\n      return true;\n    }\n  });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n  const cache = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete proxy[prop];\n      return true;\n    },\n    get(target, prop, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n    set(target, prop, value) {\n      proxy[prop] = value;\n      delete target[prop];\n      return true;\n    }\n  });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n  const value = resolve();\n  target[prop] = value;\n  return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop];\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  value = value(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  if (defined(_context.index) && isIndexable(prop)) {\n    value = value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n        return fallback;\n      }\n    } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n      return null;\n    }\n  }\n  return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (defined(fallback) && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    return value;\n  }\n  return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n  let value;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (defined(value)) {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\nfunction _resolve(key, scopes) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (defined(value)) {\n      return value;\n    }\n  }\n}\nfunction getKeysFromAllScopes(target) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n  const set = new Set();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array(count);\n  let i, ilen, index, item;\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n  const fa = t * s01;\n  const fb = t * s12;\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n  const pointsLen = points.length;\n  let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK = Array(pointsLen).fill(0);\n  const mK = Array(pointsLen);\n  let i, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n      : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n      : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n  monotoneAdjust(points, deltaK, mK);\n  monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n  return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n  let i, ilen, point, controlPoints;\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n\nfunction _isDomSupported() {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = parent.host;\n  }\n  return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n  let valueInPixels;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n    if (styleValue.indexOf('%') !== -1) {\n      valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n  return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n  return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n  const result = {};\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n  const touches = e.touches;\n  const source = touches && touches.length ? touches[0] : e;\n  const {offsetX, offsetY} = source;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n  if ('native' in evt) {\n    return evt;\n  }\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(evt, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\nfunction getContainerSize(canvas, width, height) {\n  let maxWidth, maxHeight;\n  if (width === undefined || height === undefined) {\n    const container = _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect();\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    height = round1(width / 2);\n  }\n  return {\n    width,\n    height\n  };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n  chart.height = deviceHeight / pixelRatio;\n  chart.width = deviceWidth / pixelRatio;\n  const canvas = chart.canvas;\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\nconst supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() {\n        passiveSupported = true;\n        return false;\n      }\n    };\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (e) {\n  }\n  return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n    : mode === 'after' ? t < 1 ? p1.y : p2.y\n    : t > 0 ? p2.y : p1.y\n  };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\nfunction formatNumber(num, locale, options) {\n  return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\nconst getLeftToRightAdapter = function() {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) {\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) {\n      return x;\n    },\n  };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n  let style, original;\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n    style.setProperty('direction', direction, 'important');\n    ctx.prevTextDirection = original;\n  }\n}\nfunction restoreTextDirection(ctx, original) {\n  if (original !== undefined) {\n    delete ctx.prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  let {start, end, loop} = segment;\n  let i, ilen;\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n    if (point.skip) {\n      continue;\n    }\n    value = normalize(point[property]);\n    if (value === prevValue) {\n      continue;\n    }\n    inside = between(value, startBound, endBound);\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n  return result;\n}\nfunction _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n  if (loop && !spanGaps) {\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n  while (start < count && points[start].skip) {\n    start++;\n  }\n  start %= count;\n  if (loop) {\n    end += start;\n  }\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n  end %= count;\n  return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n  return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n  if (!count) {\n    return [];\n  }\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n  return result;\n}\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\nfunction styleChanged(style, prevStyle) {\n  return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n  _update(date = Date.now()) {\n    let remaining = 0;\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n      for (; i >= 0; --i) {\n        item = items[i];\n        if (item._active) {\n          if (item._total > anims.duration) {\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n      remaining += items.length;\n    });\n    this._lastDate = date;\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  color(from, to, factor) {\n    const c0 = color(from || transparent);\n    const c1 = c0.valid && color(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\nclass Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n  active() {\n    return this._active;\n  }\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n  cancel() {\n    if (this._active) {\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n    this._active = from !== to && (loop || (elapsed < duration));\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n    this._target[prop] = this._fn(from, to, factor);\n  }\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n  delay: undefined,\n  duration: 1000,\n  easing: 'easeOutQuart',\n  fn: undefined,\n  from: undefined,\n  loop: undefined,\n  to: undefined,\n  type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n  _fallback: false,\n  _indexable: false,\n  _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n  colors: {\n    type: 'color',\n    properties: colors\n  },\n  numbers: {\n    type: 'number',\n    properties: numbers\n  },\n});\ndefaults.describe('animations', {\n  _fallback: 'animation',\n});\ndefaults.set('transitions', {\n  active: {\n    animation: {\n      duration: 400\n    }\n  },\n  resize: {\n    animation: {\n      duration: 0\n    }\n  },\n  show: {\n    animations: {\n      colors: {\n        from: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        duration: 0\n      },\n    }\n  },\n  hide: {\n    animations: {\n      colors: {\n        to: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        easing: 'linear',\n        fn: v => v | 0\n      },\n    }\n  }\n});\nclass Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n    const animatedProps = this._properties;\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n      });\n    }\n    return animations;\n  }\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n      if (animation) {\n        if (cfg && animation.active()) {\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        target[prop] = value;\n        continue;\n      }\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n  update(target, values) {\n    if (this._properties.size === 0) {\n      Object.assign(target, values);\n      return;\n    }\n    const animations = this._createAnimations(target, values);\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\nfunction toClip(value) {\n  let t, r, b, l;\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n  if (value === null) {\n    return;\n  }\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\n}\nfunction convertObjectDataToArray(data) {\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      x: key,\n      y: data[key]\n    };\n  }\n  return adata;\n}\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n  return null;\n}\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {});\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n  }\n}\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\nfunction clearStacks(meta, items) {\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n  }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.initialize();\n  }\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n  }\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n  reset() {\n    this._update('reset');\n  }\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        unlistenArrayEvents(_data, this);\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n  addElements() {\n    const meta = this._cachedMeta;\n    this._dataCheck();\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n    this._dataCheck();\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n    this._resyncElements(resetNewElements);\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        break;\n      }\n    }\n    if (sorted) {\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isNumberFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n  getMaxOverflow() {\n    return false;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n  update(mode) {}\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    const context = () => this.getContext(index, active);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n    if (values.$shared) {\n      values.$shared = sharing;\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n    return values;\n  }\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n    if (count) {\n      this.parse(0, count);\n    }\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n  updateElements(element, start, count, mode) {}\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      return;\n    }\n    if (defined(prev)) {\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n  return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n  if (prev === null) {\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n  if (next === null) {\n    next = curr + curr - prev;\n  }\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n  item[vScale.axis] = barEnd;\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\nclass BarController extends DatasetController {\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n  getMaxOverflow() {\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n    const skipNull = (meta) => {\n      const parsed = meta.controller.getParsed(dataIndex);\n      const val = parsed && parsed[meta.vScale.axis];\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n    return stacks;\n  }\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1;\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      head = base;\n    }\n    size = head - base;\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n    }\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'bar',\n  categoryPercentage: 0.8,\n  barPercentage: 0.9,\n  grouped: true,\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'base', 'width', 'height']\n    }\n  }\n};\nBarController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n      offset: true,\n      grid: {\n        offset: true\n      }\n    },\n    _value_: {\n      type: 'linear',\n      beginAtZero: true,\n    }\n  }\n};\n\nclass BubbleController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n    return {\n      label: meta.label,\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n  update(mode) {\n    const points = this._cachedMeta.data;\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n    return values;\n  }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'borderWidth', 'radius']\n    }\n  }\n};\nBubbleController.overrides = {\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        }\n      }\n    }\n  }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n  linkScales() {}\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n    meta.total = this.calculateTotal();\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n    return total;\n  }\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n    if (!arcs) {\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n    if (!arcs) {\n      return 0;\n    }\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n  getMaxOffset(arcs) {\n    let max = 0;\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n    return ringWeightOffset;\n  }\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: false\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n    },\n  },\n  cutout: '50%',\n  rotation: 0,\n  circumference: 360,\n  radius: '100%',\n  spacing: 0,\n  indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n  _scriptable: (name) => name !== 'spacing',\n  _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(tooltipItem) {\n          let dataLabel = tooltipItem.label;\n          const value = ': ' + tooltipItem.formattedValue;\n          if (isArray(dataLabel)) {\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n          return dataLabel;\n        }\n      }\n    }\n  }\n};\n\nclass LineController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n    this.updateElements(points, start, count, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\nLineController.id = 'line';\nLineController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  showLine: true,\n  spanGaps: false,\n};\nLineController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n    },\n    _value_: {\n      type: 'linear',\n    },\n  }\n};\n\nclass PolarAreaController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n    return range;\n  }\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n    const defaultAngle = 360 / this.countVisibleElements();\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n    return count;\n  }\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: true\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n    },\n  },\n  indexAxis: 'r',\n  startAngle: 0,\n};\nPolarAreaController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(context) {\n          return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n        }\n      }\n    }\n  },\n  scales: {\n    r: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      beginAtZero: true,\n      grid: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      startAngle: 0\n    }\n  }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n  cutout: 0,\n  rotation: 0,\n  circumference: 360,\n  radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n    line.points = points;\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n      this.updateElement(line, undefined, properties, mode);\n    }\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  indexAxis: 'r',\n  showLine: true,\n  elements: {\n    line: {\n      fill: 'start'\n    }\n  },\n};\nRadarController.overrides = {\n  aspectRatio: 1,\n  scales: {\n    r: {\n      type: 'radialLinear',\n    }\n  }\n};\n\nclass Element {\n  constructor() {\n    this.x = undefined;\n    this.y = undefined;\n    this.active = false;\n    this.options = undefined;\n    this.$animations = undefined;\n  }\n  tooltipPosition(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n  getProps(props, final) {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      return this;\n    }\n    const ret = {};\n    props.forEach(prop => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n    });\n    return ret;\n  }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n  values(value) {\n    return isArray(value) ? value : '' + value;\n  },\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue;\n    if (ticks.length > 1) {\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n      delta = calculateDelta(tickValue, ticks);\n    }\n    const logDelta = log10(Math.abs(delta));\n    const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n    return formatNumber(tickValue, locale, options);\n  },\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n    if (remain === 1 || remain === 2 || remain === 5) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n};\nfunction calculateDelta(tickValue, ticks) {\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n  display: true,\n  offset: false,\n  reverse: false,\n  beginAtZero: false,\n  bounds: 'ticks',\n  grace: 0,\n  grid: {\n    display: true,\n    lineWidth: 1,\n    drawBorder: true,\n    drawOnChartArea: true,\n    drawTicks: true,\n    tickLength: 8,\n    tickWidth: (_ctx, options) => options.lineWidth,\n    tickColor: (_ctx, options) => options.color,\n    offset: false,\n    borderDash: [],\n    borderDashOffset: 0.0,\n    borderWidth: 1\n  },\n  title: {\n    display: false,\n    text: '',\n    padding: {\n      top: 4,\n      bottom: 4\n    }\n  },\n  ticks: {\n    minRotation: 0,\n    maxRotation: 50,\n    mirror: false,\n    textStrokeWidth: 0,\n    textStrokeColor: '',\n    padding: 3,\n    display: true,\n    autoSkip: true,\n    autoSkipPadding: 3,\n    labelOffset: 0,\n    callback: Ticks.formatters.values,\n    minor: {},\n    major: {},\n    align: 'center',\n    crossAlign: 'near',\n    showLabelBackdrop: false,\n    backdropColor: 'rgba(255, 255, 255, 0.75)',\n    backdropPadding: 2,\n  }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n  _fallback: false,\n  _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n  _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n  _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n  _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n  _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n  next = start;\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n  if (len < 2) {\n    return false;\n  }\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6;\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n  return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\nfunction titleAlign(align, position, reverse) {\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n  constructor(cfg) {\n    super();\n    this.id = cfg.id;\n    this.type = cfg.type;\n    this.options = undefined;\n    this.ctx = cfg.ctx;\n    this.chart = cfg.chart;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.maxWidth = undefined;\n    this.maxHeight = undefined;\n    this.paddingTop = undefined;\n    this.paddingBottom = undefined;\n    this.paddingLeft = undefined;\n    this.paddingRight = undefined;\n    this.axis = undefined;\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    this.ticks = [];\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    this._startPixel = undefined;\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n  init(options) {\n    this.options = options.setContext(this.getContext());\n    this.axis = options.axis;\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n  parse(raw, index) {\n    return raw;\n  }\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isNumberFinite(_userMin),\n      maxDefined: isNumberFinite(_userMax)\n    };\n  }\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n  getTicks() {\n    return this.ticks;\n  }\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n  beforeUpdate() {\n    callback(this.options.beforeUpdate, [this]);\n  }\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n    this.beforeUpdate();\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n    this.beforeBuildTicks();\n    this.ticks = this.buildTicks() || [];\n    this.afterBuildTicks();\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n    this.configure();\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation();\n    this.afterCalculateLabelRotation();\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n    if (samplingEnabled) {\n      this._convertTicksToLabels(this.ticks);\n    }\n    this.beforeFit();\n    this.fit();\n    this.afterFit();\n    this.afterUpdate();\n  }\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n  afterUpdate() {\n    callback(this.options.afterUpdate, [this]);\n  }\n  beforeSetDimensions() {\n    callback(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = 0;\n      this.bottom = this.height;\n    }\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    callback(this.options.afterSetDimensions, [this]);\n  }\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    callback(this.options[name], [this]);\n  }\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n  beforeTickToLabelConversion() {\n    callback(this.options.beforeTickToLabelConversion, [this]);\n  }\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    callback(this.options.afterTickToLabelConversion, [this]);\n  }\n  beforeCalculateLabelRotation() {\n    callback(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = this.ticks.length;\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    callback(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n  beforeFit() {\n    callback(this.options.beforeFit, [this]);\n  }\n  fit() {\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight;\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n        if (isHorizontal) {\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n    this._handleMargins();\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n  afterFit() {\n    callback(this.options.afterFit, [this]);\n  }\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  isFullSize() {\n    return this.options.fullSize;\n  }\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n    this.generateTickLabels(ticks);\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n    this.afterTickToLabelConversion();\n  }\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n    }\n    return labelSizes;\n  }\n  _computeLabelSizes(ticks, length) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j];\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n  getLabelForValue(value) {\n    return value;\n  }\n  getPixelForValue(value, index) {\n    return NaN;\n  }\n  getValueForPixel(pixel) {}\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n  getBaseValue() {\n    const {min, max} = this;\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n  getContext(index) {\n    const ticks = this.ticks || [];\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n  _isVisible() {\n    const display = this.options.display;\n    if (display !== 'auto') {\n      return !!display;\n    }\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const optsAtIndex = grid.setContext(this.getContext(i));\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndex.borderDash || [];\n      const borderDashOffset = optsAtIndex.borderDashOffset;\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n      lineValue = getPixelForGridLine(this, i, offset);\n      if (lineValue === undefined) {\n        continue;\n      }\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n    return items;\n  }\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n      if (isHorizontal) {\n        x = pixel;\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n      let backdrop;\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n        let top = y + textOffset - labelPadding.top;\n        let left = x - labelPadding.left;\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        }\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        }\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n          color: optsAtIndex.backdropColor,\n        };\n      }\n      items.push({\n        rotation,\n        label,\n        font,\n        color,\n        strokeColor,\n        strokeWidth,\n        textOffset,\n        textAlign: tickTextAlign,\n        textBaseline,\n        translation: [x, y],\n        backdrop,\n      });\n    }\n    return items;\n  }\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n    let align = 'center';\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n    return align;\n  }\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n    let textAlign;\n    let x;\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n    return {textAlign, x};\n  }\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n    const chart = this.chart;\n    const position = this.options.position;\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n  drawBorder() {\n    const {chart, ctx, options: {grid}} = this;\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.borderWidth;\n    ctx.strokeStyle = borderOpts.borderColor;\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n    ctx.restore();\n  }\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n    if (!optionTicks.display) {\n      return;\n    }\n    const ctx = this.ctx;\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    let i, ilen;\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      const item = items[i];\n      const tickFont = item.font;\n      const label = item.label;\n      if (item.backdrop) {\n        ctx.fillStyle = item.backdrop.color;\n        ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n      }\n      let y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, item);\n    }\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n    if (!title.display) {\n      return;\n    }\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: gz + 1,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n\nclass TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n    if (isIChartComponent(proto)) {\n      parentScope = this.register(proto);\n    }\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n    if (id in items) {\n      return scope;\n    }\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n    return scope;\n  }\n  get(id) {\n    return this.items[id];\n  }\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n    if (id in items) {\n      delete items[id];\n    }\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\nfunction registerDefaults(item, scope, parentScope) {\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n  defaults.set(scope, itemDefaults);\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n  add(...args) {\n    this._each('register', args);\n  }\n  remove(...args) {\n    this._each('unregister', args);\n  }\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        each(arg, item => {\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    callback(component['before' + camelMethod], [], component);\n    registry[method](component);\n    callback(component['after' + camelMethod], [], component);\n  }\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    return this.plugins;\n  }\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    if (this.options.showLine) {\n      const {dataset: line, _dataset} = meta;\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    }\n    this.updateElements(points, start, count, mode);\n  }\n  addElements() {\n    const {showLine} = this.options;\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = registry.getElement('line');\n    }\n    super.addElements();\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  showLine: false,\n  fill: false\n};\nScatterController.overrides = {\n  interaction: {\n    mode: 'point'\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(item) {\n          return '(' + item.label + ', ' + item.formattedValue + ')';\n        }\n      }\n    }\n  },\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n  constructor(options) {\n    this.options = options || {};\n  }\n  init(chartOptions) {}\n  formats() {\n    return abstract();\n  }\n  parse(value, format) {\n    return abstract();\n  }\n  format(timestamp, format) {\n    return abstract();\n  }\n  add(timestamp, amount, unit) {\n    return abstract();\n  }\n  diff(a, b, unit) {\n    return abstract();\n  }\n  startOf(timestamp, unit, weekday) {\n    return abstract();\n  }\n  endOf(timestamp, unit) {\n    return abstract();\n  }\n}\nDateAdapter.override = function(members) {\n  Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n  _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\nvar Interaction = {\n  evaluateInteractionItems,\n  modes: {\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n      if (!items.length) {\n        return [];\n      }\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n      return elements;\n    },\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n      return items;\n    },\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n  if (!isObject(pos)) {\n    if (layout.size) {\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n    refit |= same && refitBoxes.length;\n    changed = changed || other;\n    if (!box.fullSize) {\n      refitBoxes.push(layout);\n    }\n  }\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n  chartArea.x = x;\n  chartArea.y = y;\n}\ndefaults.set('layout', {\n  autoPadding: true,\n  padding: {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n});\nvar layouts = {\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n    chart.boxes.push(item);\n  },\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n    handleMaxPadding(chartArea);\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n\nclass BasePlatform {\n  acquireContext(canvas, aspectRatio) {}\n  releaseContext(context) {\n    return false;\n  }\n  addEventListener(chart, type, listener) {}\n  removeEventListener(chart, type, listener) {}\n  getDevicePixelRatio() {\n    return 1;\n  }\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n  isAttached(canvas) {\n    return true;\n  }\n  updateConfig(config) {\n  }\n}\n\nclass BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n  style.display = style.display || 'block';\n  style.boxSizing = style.boxSizing || 'border-box';\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n  return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n  node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n  chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      listener();\n    }\n  }, window);\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n  return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart, (args) => {\n    const event = args[0];\n    return [event, event.offsetX, event.offsetY];\n  });\n  addListener(canvas, type, proxy);\n  return proxy;\n}\nclass DomPlatform extends BasePlatform {\n  acquireContext(canvas, aspectRatio) {\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n    if (context && context.canvas === canvas) {\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n    return null;\n  }\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n    canvas.width = canvas.width;\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n  addEventListener(chart, type, listener) {\n    this.removeEventListener(chart, type);\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n    if (!proxy) {\n      return;\n    }\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n\nfunction _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nclass PluginService {\n  constructor() {\n    this._init = [];\n  }\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n    return true;\n  }\n  invalidate() {\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n    const descriptors = this._cache = this._createDescriptors(chart);\n    this._notifyStateChanges(chart);\n    return descriptors;\n  }\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n  return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n  return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n\nfunction getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\nfunction determineAxis(id, scaleOptions) {\n  if (id === 'x' || id === 'y') {\n    return id;\n  }\n  return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const firstIDs = Object.create(null);\n  const scales = Object.create(null);\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    firstIDs[axis] = firstIDs[axis] || id;\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n  return scales;\n}\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n  initOptions(config);\n  return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\nclass Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n  get platform() {\n    return this._config.platform;\n  }\n  get type() {\n    return this._config.type;\n  }\n  set type(type) {\n    this._config.type = type;\n  }\n  get data() {\n    return this._config.data;\n  }\n  set data(data) {\n    this._config.data = initData(data);\n  }\n  get options() {\n    return this._config.options;\n  }\n  set options(options) {\n    this._config.options = options;\n  }\n  get plugins() {\n    return this._config.plugins;\n  }\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n    const scopes = new Set();\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n  chartOptionScopes() {\n    const {options, type} = this;\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {},\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  chart.notifyPlugins('afterRender');\n  callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    item = item[0];\n  }\n  if (item && item.canvas) {\n    item = item.canvas;\n  }\n  return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\nclass Chart {\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n    instances[this.id] = this;\n    if (!context || !canvas) {\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      return aspectRatio;\n    }\n    if (maintainAspectRatio && _aspectRatio) {\n      return _aspectRatio;\n    }\n    return height ? width / height : null;\n  }\n  get data() {\n    return this.config.data;\n  }\n  set data(data) {\n    this.config.data = data;\n  }\n  get options() {\n    return this._options;\n  }\n  set options(options) {\n    this.config.options = options;\n  }\n  _initialize() {\n    this.notifyPlugins('beforeInit');\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n    this.bindEvents();\n    this.notifyPlugins('afterInit');\n    return this;\n  }\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n    this.notifyPlugins('resize', {size: newSize});\n    callback(options.onResize, [this, newSize], this);\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        this.render();\n      }\n    }\n  }\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n      scale.init(scaleOptions, options);\n    });\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n    this._removeUnreferencedMetasets();\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass.prototype, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n    this._updateMetasets();\n    return newControllers;\n  }\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n  update(mode) {\n    const config = this.config;\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n    this._plugins.invalidate();\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    const newControllers = this.buildOrUpdateControllers();\n    this.notifyPlugins('beforeElementsUpdate');\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n    if (!animsDisabled) {\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n    this._updateDatasets(mode);\n    this.notifyPlugins('afterUpdate', {mode});\n    this._layers.sort(compare2Level('z', '_idx'));\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n    this.render();\n  }\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n    layouts.update(this, this.width, this.height, minPadding);\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        return;\n      }\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n    this.notifyPlugins('afterLayout');\n  }\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n    meta.controller._update(mode);\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      this._resize(width, height);\n      this._resizeBeforeDraw = null;\n    }\n    this.clear();\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this._drawDatasets();\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this.notifyPlugins('afterDraw');\n  }\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = this.chartArea;\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n    meta.controller.draw();\n    if (useClip) {\n      unclipArea(ctx);\n    }\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n    return [];\n  }\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n    return meta;\n  }\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n    const meta = this.getDatasetMeta(datasetIndex);\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n    this._stop();\n    this.config.clearCache();\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n    this.notifyPlugins('destroy');\n    delete instances[this.id];\n    this.notifyPlugins('afterDestroy');\n  }\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n    each(this.options.events, (type) => _add(type, listener));\n  }\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n    let detached;\n    const attached = () => {\n      _remove('attach', attached);\n      this.attached = true;\n      this.resize();\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n    detached = () => {\n      this.attached = false;\n      _remove('resize', listener);\n      this._stop();\n      this._resize(0, 0);\n      _add('attach', attached);\n    };\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed) {\n      this._active = active;\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n    if (changed || args.changed) {\n      this.render();\n    }\n    return this;\n  }\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n    if (inChartArea) {\n      this._lastEvent = null;\n      callback(options.onHover, [e, active, this], this);\n      if (isClick) {\n        callback(options.onClick, [e, active, this], this);\n      }\n    }\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n    this._lastEvent = lastEvent;\n    return changed;\n  }\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n  defaults: {\n    enumerable,\n    value: defaults\n  },\n  instances: {\n    enumerable,\n    value: instances\n  },\n  overrides: {\n    enumerable,\n    value: overrides\n  },\n  registry: {\n    enumerable,\n    value: registry\n  },\n  version: {\n    enumerable,\n    value: version\n  },\n  getChart: {\n    enumerable,\n    value: getChart\n  },\n  register: {\n    enumerable,\n    value: (...items) => {\n      registry.add(...items);\n      invalidatePlugins();\n    }\n  },\n  unregister: {\n    enumerable,\n    value: (...items) => {\n      registry.remove(...items);\n      invalidatePlugins();\n    }\n  }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\nfunction rThetaToXY(r, theta, x, y) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n  let spacingOffset = 0;\n  const alpha = end - start;\n  if (spacing) {\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n  ctx.beginPath();\n  if (circular) {\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n  ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + circumference % TAU;\n      if (circumference % TAU === 0) {\n        endAngle += TAU;\n      }\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n  const {x, y, startAngle, pixelMargin, fullCircles} = element;\n  const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n  const innerRadius = element.innerRadius + pixelMargin;\n  let i;\n  if (inner) {\n    clipArc(ctx, element, startAngle + TAU);\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n  const {options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const inner = options.borderAlign === 'inner';\n  if (!borderWidth) {\n    return;\n  }\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n  if (element.fullCircles) {\n    drawFullCircleBorders(ctx, element, inner);\n  }\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.stroke();\n}\nclass ArcElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(chartX, chartY, useFinalPosition) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = this.options.spacing / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n    return (betweenAngles && withinRadius);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference',\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n  tooltipPosition(useFinalPosition) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n  draw(ctx) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 2;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n    ctx.save();\n    let radiusOffset = 0;\n    if (offset) {\n      radiusOffset = offset / 2;\n      const halfAngle = (this.startAngle + this.endAngle) / 2;\n      ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n      if (this.circumference >= PI) {\n        radiusOffset = offset;\n      }\n    }\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n    ctx.restore();\n  }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n  borderAlign: 'center',\n  borderColor: '#fff',\n  borderJoinStyle: undefined,\n  borderRadius: 0,\n  borderWidth: 2,\n  offset: 0,\n  spacing: 0,\n  angle: undefined,\n  circular: true,\n};\nArcElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n  return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n    if (point.skip) {\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n    prev = point;\n  }\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n  return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n    if (point.skip) {\n      continue;\n    }\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      ctx.lineTo(x, y);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    lastY = y;\n  }\n  drawX();\n}\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n  return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\nclass LineElement extends Element {\n  constructor(cfg) {\n    super();\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n  get points() {\n    return this._points;\n  }\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n    if (!segments.length) {\n      return;\n    }\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n    start = start || 0;\n    count = count || (this.points.length - start);\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n    if (points.length && options.borderWidth) {\n      ctx.save();\n      draw(ctx, this, start, count);\n      ctx.restore();\n    }\n    if (this.animated) {\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderWidth: 3,\n  capBezierPoints: true,\n  cubicInterpolationMode: 'default',\n  fill: false,\n  spanGaps: false,\n  stepped: false,\n  tension: 0,\n};\nLineElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n  _scriptable: true,\n  _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange$1(this, mouseX, 'x', useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange$1(this, mouseY, 'y', useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  size(options) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n  draw(ctx, area) {\n    const options = this.options;\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n  getRange() {\n    const options = this.options || {};\n    return options.radius + options.hitRadius;\n  }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n  borderWidth: 1,\n  hitRadius: 1,\n  hoverBorderWidth: 1,\n  hoverRadius: 4,\n  pointStyle: 'circle',\n  radius: 3,\n  rotation: 0\n};\nPointElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n  let left, right, top, bottom, half;\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n  return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n  const enableBorder = enableBorderRadius || isObject(value);\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\nclass BarElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n    ctx.save();\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n    ctx.restore();\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n  borderSkipped: 'start',\n  borderWidth: 0,\n  borderRadius: 0,\n  inflateAmount: 'auto',\n  pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  const samples = options.samples || availableWidth;\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n  const decimated = [];\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n  decimated[sampledIndex++] = data[a];\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n    maxArea = area = -1;\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n  decimated[sampledIndex++] = data[endIndex];\n  return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      const lastIndex = i - 1;\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n      if (i > 0 && lastIndex !== startIndex) {\n        decimated.push(data[lastIndex]);\n      }\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n  return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {value: data});\n  }\n}\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n  let start = 0;\n  let count;\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n  return {start, count};\n}\nvar plugin_decimation = {\n  id: 'decimation',\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      cleanDecimatedData(chart);\n      return;\n    }\n    const availableWidth = chart.width;\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        return;\n      }\n      if (!meta.controller.supportsDecimation) {\n        return;\n      }\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        return;\n      }\n      if (chart.options.parsing) {\n        return;\n      }\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n      if (isNullOrUndef(_data)) {\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n      dataset._decimated = decimated;\n    });\n  },\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n\nfunction _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n    if (!target.segments) {\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n    const targetSegments = _boundSegments(target, bounds);\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n  if (isArray(boundary)) {\n    _loop = true;\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\nfunction _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n  if (!propagate) {\n    return fill;\n  }\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isNumberFinite(fill)) {\n      return fill;\n    }\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n    if (target.visible) {\n      return fill;\n    }\n    visited.push(fill);\n    fill = target.fill;\n  }\n  return false;\n}\nfunction _decodeFill(line, index, count) {\n  const fill = parseFillOption(line);\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n  let target = parseFloat(fill);\n  if (isNumberFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n  return target;\n}\nfunction _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n  let value;\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n  if (fill === false || fill === null) {\n    return false;\n  }\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n\nfunction _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n\nclass simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n\nfunction _getTarget(source) {\n  const {chart, fill, line} = source;\n  if (isNumberFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n  if (fill === 'shape') {\n    return true;\n  }\n  const boundary = computeBoundary(source);\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n  return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n  if (isNumberFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n  return null;\n}\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n  ctx.save();\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n  ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n    ctx.beginPath();\n    const lineLoop = !!line.pathSegment(ctx, src);\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n    ctx.restore();\n  }\n}\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\nvar index = {\n  id: 'filler',\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n      meta.$filler = source;\n      sources.push(source);\n    }\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n  constructor(config) {\n    super();\n    this._added = false;\n    this.legendHitBoxes = [];\n    this._hoveredItem = null;\n    this.doughnutMode = false;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n    this.legendItems = legendItems;\n  }\n  fit() {\n    const {options, ctx} = this;\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n    let width, height;\n    ctx.font = labelFont.string;\n    if (this.isHorizontal()) {\n      width = this.maxWidth;\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight;\n      width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    }\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n    return totalHeight;\n  }\n  _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n    let left = 0;\n    let col = 0;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight});\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight});\n    return totalWidth;\n  }\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n      this._draw();\n      unclipArea(ctx);\n    }\n  }\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {color: fontColor, padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n    this.drawTitle();\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n      ctx.save();\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n      if (labelOpts.usePointStyle) {\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n        ctx.beginPath();\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\n    };\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n    overrideTextDirection(this.ctx, opts.textDirection);\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor || fontColor;\n      ctx.fillStyle = legendItem.fontColor || fontColor;\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n      rtlHelper.setWidth(this.width);\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n      const realX = rtlHelper.x(x);\n      drawLegendBox(realX, y, legendItem);\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n      fillText(rtlHelper.x(x), y, legendItem);\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    if (!titleOpts.display) {\n      return;\n    }\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n    let left = this.left;\n    let maxWidth = this.width;\n    if (this.isHorizontal()) {\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n    const x = _alignStartEnd(position, left, left + maxWidth);\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          return this.legendItems[i];\n        }\n      }\n    }\n    return null;\n  }\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        callback(opts.onLeave, [e, previous, this], this);\n      }\n      this._hoveredItem = hoveredItem;\n      if (hoveredItem && !sameItem) {\n        callback(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      callback(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\nvar plugin_legend = {\n  id: 'legend',\n  _element: Legend,\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n    onHover: null,\n    onLeave: null,\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: 0,\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n\nclass Title extends Element {\n  constructor(config) {\n    super();\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n    this.left = 0;\n    this.top = 0;\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    if (!opts.display) {\n      return;\n    }\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\nvar plugin_title = {\n  id: 'title',\n  _element: Title,\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n  id: 'subtitle',\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst positioners = {\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n    let i, len;\n    let x = 0;\n    let y = 0;\n    let count = 0;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        x += pos.x;\n        y += pos.y;\n        ++count;\n      }\n    }\n    return {\n      x: x / count,\n      y: y / count\n    };\n  },\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n    return {\n      x,\n      y\n    };\n  }\n};\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n  return base;\n}\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n  ctx.save();\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n  widthPadding = 0;\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n  ctx.restore();\n  width += padding.width;\n  return {width, height};\n}\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n  return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n  constructor(config) {\n    super();\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart || config._chart;\n    this._chart = this.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n    if (cached) {\n      return cached;\n    }\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n  getTitle(context, options) {\n    const {callbacks} = options;\n    const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n    const title = callbacks.title.apply(this, [context]);\n    const afterTitle = callbacks.afterTitle.apply(this, [context]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n    return lines;\n  }\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n  }\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n      pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n      bodyItems.push(bodyItem);\n    });\n    return bodyItems;\n  }\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n  }\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n    const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n    const footer = callbacks.footer.apply(this, [tooltipItems]);\n    const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n    return lines;\n  }\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(scoped.labelColor.call(this, context));\n      labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n      labelTextColors.push(scoped.labelTextColor.call(this, context));\n    });\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.titleAlign, options);\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing;\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing;\n        }\n      }\n    }\n  }\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColors = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2,\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.fillStyle = labelColors.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.setLineDash(labelColors.borderDash || []);\n      ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n      const borderRadius = toTRBLCorners(labelColors.borderRadius);\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n      lines = bodyItem.lines;\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n      each(bodyItem.after, fillLineOfText);\n    }\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing;\n  }\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n      footerFont = toFont(options.footerFont);\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n    ctx.fill();\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n  _willRender() {\n    return !!this.opacity;\n  }\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n    if (!opacity) {\n      return;\n    }\n    this._updateAnimationTarget(options);\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n    const padding = toPadding(options.padding);\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n      this.drawBackground(pt, ctx, tooltipSize, options);\n      overrideTextDirection(ctx, options.textDirection);\n      pt.y += padding.top;\n      this.drawTitle(pt, ctx, options);\n      this.drawBody(pt, ctx, options);\n      this.drawFooter(pt, ctx, options);\n      restoreTextDirection(ctx, options.textDirection);\n      ctx.restore();\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n    const positionChanged = this._positionChanged(active, e);\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n    if (changed) {\n      this._active = active;\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n        this.update(true, replay);\n      }\n    }\n    return changed;\n  }\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n    if (options.reverse) {\n      active.reverse();\n    }\n    return active;\n  }\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n      if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n        return;\n      }\n      tooltip.draw(chart.ctx);\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        args.changed = true;\n      }\n    }\n  },\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: {\n      beforeTitle: noop,\n      title(tooltipItems) {\n        if (tooltipItems.length > 0) {\n          const item = tooltipItems[0];\n          const labels = item.chart.data.labels;\n          const labelCount = labels ? labels.length : 0;\n          if (this && this.options && this.options.mode === 'dataset') {\n            return item.dataset.label || '';\n          } else if (item.label) {\n            return item.label;\n          } else if (labelCount > 0 && item.dataIndex < labelCount) {\n            return labels[item.dataIndex];\n          }\n        }\n        return '';\n      },\n      afterTitle: noop,\n      beforeBody: noop,\n      beforeLabel: noop,\n      label(tooltipItem) {\n        if (this && this.options && this.options.mode === 'dataset') {\n          return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n        }\n        let label = tooltipItem.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        const value = tooltipItem.formattedValue;\n        if (!isNullOrUndef(value)) {\n          label += value;\n        }\n        return label;\n      },\n      labelColor(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          borderColor: options.borderColor,\n          backgroundColor: options.backgroundColor,\n          borderWidth: options.borderWidth,\n          borderDash: options.borderDash,\n          borderDashOffset: options.borderDashOffset,\n          borderRadius: 0,\n        };\n      },\n      labelTextColor() {\n        return this.options.bodyColor;\n      },\n      labelPointStyle(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          pointStyle: options.pointStyle,\n          rotation: options.rotation,\n        };\n      },\n      afterLabel: noop,\n      afterBody: noop,\n      beforeFooter: noop,\n      footer: noop,\n      afterFooter: noop\n    }\n  },\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n  additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    const labels = this.getLabels();\n    if (value >= 0 && value < labels.length) {\n      return labels[value];\n    }\n    return value;\n  }\n  configure() {\n    super.configure();\n    if (!this.isHorizontal()) {\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n  getBasePixel() {\n    return this.bottom;\n  }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n  ticks: {\n    callback: CategoryScale.prototype.getLabelForValue\n  }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n  const ticks = [];\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n  if (!isNullOrUndef(precision)) {\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    numSpaces = (niceMax - niceMin) / spacing;\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n      if (niceMin < min) {\n        j++;\n      }\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n  for (; j < numSpaces; ++j) {\n    ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n  }\n  if (maxDefined && includeBounds && niceMax !== max) {\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n  return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n    return +raw;\n  }\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n    if (min === max) {\n      let offset = 1;\n      if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n        offset = Math.abs(max * 0.05);\n      }\n      setMax(max + offset);\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n    return maxTicks;\n  }\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n    super.configure();\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n\nclass LinearScale extends LinearScaleBase {\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? min : 0;\n    this.max = isNumberFinite(max) ? max : 1;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.numeric\n  }\n};\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n  return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n  const endExp = Math.floor(log10(dataRange.max));\n  const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n  const ticks = [];\n  let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n  let exp = Math.floor(log10(tickVal));\n  let significand = Math.floor(tickVal / Math.pow(10, exp));\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  do {\n    ticks.push({value: tickVal, major: isMajor(tickVal)});\n    ++significand;\n    if (significand === 10) {\n      significand = 1;\n      ++exp;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n  } while (exp < endExp || (exp === endExp && significand < endSignificand));\n  const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n  ticks.push({value: lastTick, major: isMajor(tickVal)});\n  return ticks;\n}\nclass LogarithmicScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isNumberFinite(value) && value > 0 ? value : null;\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n    this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n    this.handleTickRangeOptions();\n  }\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n    if (min === max) {\n      if (min <= 0) {\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(exp(min, -1));\n        setMax(exp(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(exp(max, -1));\n    }\n    if (max <= 0) {\n      setMax(exp(min, +1));\n    }\n    if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n      setMin(exp(min, -1));\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n  configure() {\n    const start = this.min;\n    super.configure();\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.logarithmic,\n    major: {\n      enabled: true\n    }\n  }\n};\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\nfunction fitWithPointLabels(scale) {\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const extra = getTickBackdropHeight(opts) / 2;\n  const outerDistance = scale.drawingArea;\n  const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n    const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n    const size = labelSizes[i];\n    const y = yForAngle(pointLabelPosition.y, size.h, angle);\n    const textAlign = getTextAlignForAngle(angle);\n    const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n    items.push({\n      x: pointLabelPosition.x,\n      y,\n      textAlign,\n      left,\n      top: y,\n      right: left + size.w,\n      bottom: y + size.h\n    });\n  }\n  return items;\n}\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n  return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n    const {backdropColor} = optsAtIndex;\n    if (!isNullOrUndef(backdropColor)) {\n      const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n      const padding = toPadding(optsAtIndex.backdropPadding);\n      ctx.fillStyle = backdropColor;\n      const backdropLeft = left - padding.left;\n      const backdropTop = top - padding.top;\n      const backdropWidth = right - left + padding.width;\n      const backdropHeight = bottom - top + padding.height;\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: backdropLeft,\n          y: backdropTop,\n          w: backdropWidth,\n          h: backdropHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n      }\n    }\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n  const {color, lineWidth} = gridLineOpts;\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(gridLineOpts.borderDash);\n  ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\nclass RadialLinearScale extends LinearScaleBase {\n  constructor(cfg) {\n    super(cfg);\n    this.xCenter = undefined;\n    this.yCenter = undefined;\n    this.drawingArea = undefined;\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n  setDimensions() {\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n    this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n  fit() {\n    const opts = this.options;\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid} = opts;\n    const labelCount = this._pointLabels.length;\n    let i, offset, position;\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const optsAtIndex = grid.setContext(this.getContext(index - 1));\n          drawRadiusLine(this, optsAtIndex, offset, labelCount);\n        }\n      });\n    }\n    if (angleLines.display) {\n      ctx.save();\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n        if (!lineWidth || !color) {\n          continue;\n        }\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n        offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n      ctx.restore();\n    }\n  }\n  drawBorder() {}\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    if (!tickOpts.display) {\n      return;\n    }\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    this.ticks.forEach((tick, index) => {\n      if (index === 0 && !opts.reverse) {\n        return;\n      }\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n      });\n    });\n    ctx.restore();\n  }\n  drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n  display: true,\n  animate: true,\n  position: 'chartArea',\n  angleLines: {\n    display: true,\n    lineWidth: 1,\n    borderDash: [],\n    borderDashOffset: 0.0\n  },\n  grid: {\n    circular: false\n  },\n  startAngle: 0,\n  ticks: {\n    showLabelBackdrop: true,\n    callback: Ticks.formatters.numeric\n  },\n  pointLabels: {\n    backdropColor: undefined,\n    backdropPadding: 2,\n    display: true,\n    font: {\n      size: 10\n    },\n    callback(label) {\n      return label;\n    },\n    padding: 5,\n    centerPointLabels: false\n  }\n};\nRadialLinearScale.defaultRoutes = {\n  'angleLines.color': 'borderColor',\n  'pointLabels.color': 'color',\n  'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n  angleLines: {\n    _fallback: 'grid'\n  }\n};\n\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n  return a - b;\n}\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n  if (!isNumberFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, parser)\n      : adapter.parse(value);\n  }\n  if (value === null) {\n    return null;\n  }\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n  return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n  return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n  constructor(props) {\n    super(props);\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n    this._unit = 'day';\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n  init(scaleOpts, opts) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n    adapter.init(opts);\n    mergeIf(time.displayFormats, adapter.formats());\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n    super.init(scaleOpts);\n    this._normalized = opts.normalized;\n  }\n  parse(raw, index) {\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n    if (!minDefined || !maxDefined) {\n      _applyBounds(this._getLabelBounds());\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n    min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n    const min = this.min;\n    const max = this.max;\n    const ticks = _filterBetween(timestamps, min, max);\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n    if (options.reverse) {\n      ticks.reverse();\n    }\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n  afterAutoSkip() {\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n  initOffsets(timestamps) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n    return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n  }\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n    const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n    const formatter = options.ticks.callback;\n    return formatter ? callback(formatter, [label, index, ticks], this) : label;\n  }\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const metas = this.getMatchingVisibleMetas();\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n    return (this._cache.data = this.normalize(timestamps));\n  }\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n  normalize(values) {\n    return _arrayUnique(values.sort(sorter));\n  }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n  bounds: 'data',\n  adapters: {},\n  time: {\n    parser: false,\n    unit: false,\n    round: false,\n    isoWeekday: false,\n    minUnit: 'millisecond',\n    displayFormats: {}\n  },\n  ticks: {\n    source: 'auto',\n    major: {\n      enabled: false\n    }\n  }\n};\n\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n  constructor(props) {\n    super(props);\n    this._table = [];\n    this._minPos = undefined;\n    this._tableRange = undefined;\n  }\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n    if (items.length < 2) {\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n    return timestamps;\n  }\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import {Chart, registerables} from '../dist/chart.mjs';\n\nChart.register(...registerables);\n\nexport default Chart;\n","import defineProperty from './_define_property';\n\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}","export default function _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","import objectWithoutPropertiesLoose from './_object_without_properties_loose';\n\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\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}","export default function _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","import arrayWithHoles from './_array_with_holes';\nimport iterableToArrayLimit from './_iterable_to_array';\nimport nonIterableRest from './_non_iterable_rest';\n\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n","export default function _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n","import type { ForwardedRef } from 'react';\nimport type {\n  ChartType,\n  ChartData,\n  DefaultDataPoint,\n  ChartDataset,\n  ChartOptions,\n  Chart,\n} from 'chart.js';\n\nexport function reforwardRef<T>(ref: ForwardedRef<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\n\nexport function setOptions<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(chart: Chart<TType, TData, TLabel>, nextOptions: ChartOptions<TType>) {\n  chart.options = { ...nextOptions };\n}\n\nexport function setLabels<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  currentData: ChartData<TType, TData, TLabel>,\n  nextLabels: TLabel[] | undefined\n) {\n  currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  currentData: ChartData<TType, TData, TLabel>,\n  nextDatasets: ChartDataset<TType, TData>[]\n) {\n  currentData.datasets = nextDatasets.map(nextDataset => {\n    // given the new set, find it's current match\n    const currentDataset = currentData.datasets.find(\n      dataset =>\n        dataset.label === nextDataset.label && dataset.type === nextDataset.type\n    );\n\n    // There is no original to update, so simply add new one\n    if (!currentDataset || !nextDataset.data) return { ...nextDataset };\n\n    Object.assign(currentDataset, nextDataset);\n\n    return currentDataset;\n  });\n}\n\nexport function cloneData<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(data: ChartData<TType, TData, TLabel>) {\n  const nextData: ChartData<TType, TData, TLabel> = {\n    labels: [],\n    datasets: [],\n  };\n\n  setLabels(nextData, data.labels);\n  setDatasets(nextData, data.datasets);\n\n  return nextData;\n}\n","import React, { useEffect, useRef, useState, forwardRef } from 'react';\nimport type { ForwardedRef, MouseEvent } from 'react';\nimport ChartJS from 'chart.js/auto';\nimport type { ChartData, ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ChartProps, TypedChartComponent } from './types';\nimport {\n  reforwardRef,\n  cloneData,\n  setOptions,\n  setLabels,\n  setDatasets,\n} from './utils';\n\nconst noopData = {\n  datasets: [],\n};\n\nfunction ChartComponent<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  {\n    height = 150,\n    width = 300,\n    redraw = false,\n    type,\n    data: dataProp,\n    options,\n    plugins = [],\n    getDatasetAtEvent,\n    getElementAtEvent,\n    getElementsAtEvent,\n    fallbackContent,\n    onClick: onClickProp,\n    ...props\n  }: ChartProps<TType, TData, TLabel>,\n  ref: ForwardedRef<ChartJS<TType, TData, TLabel>>\n) {\n  type TypedChartJS = ChartJS<TType, TData, TLabel>;\n  type TypedChartData = ChartData<TType, TData, TLabel>;\n\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n  const chartRef = useRef<TypedChartJS | null>();\n  /**\n   * In case `dataProp` is function use internal state\n   */\n  const [computedData, setComputedData] = useState<TypedChartData>();\n  const data: TypedChartData =\n    computedData || (typeof dataProp === 'function' ? noopData : dataProp);\n\n  const renderChart = () => {\n    if (!canvasRef.current) return;\n\n    chartRef.current = new ChartJS(canvasRef.current, {\n      type,\n      data: cloneData(data),\n      options,\n      plugins,\n    });\n\n    reforwardRef(ref, chartRef.current);\n  };\n\n  const destroyChart = () => {\n    reforwardRef(ref, null);\n\n    if (chartRef.current) {\n      chartRef.current.destroy();\n      chartRef.current = null;\n    }\n  };\n\n  const onClick = (event: MouseEvent<HTMLCanvasElement>) => {\n    if (onClickProp) {\n      onClickProp(event);\n    }\n\n    const { current: chart } = chartRef;\n\n    if (!chart) return;\n\n    getDatasetAtEvent &&\n      getDatasetAtEvent(\n        chart.getElementsAtEventForMode(\n          event.nativeEvent,\n          'dataset',\n          { intersect: true },\n          false\n        ),\n        event\n      );\n    getElementAtEvent &&\n      getElementAtEvent(\n        chart.getElementsAtEventForMode(\n          event.nativeEvent,\n          'nearest',\n          { intersect: true },\n          false\n        ),\n        event\n      );\n    getElementsAtEvent &&\n      getElementsAtEvent(\n        chart.getElementsAtEventForMode(\n          event.nativeEvent,\n          'index',\n          { intersect: true },\n          false\n        ),\n        event\n      );\n  };\n\n  /**\n   * In case `dataProp` is function,\n   * then update internal state\n   */\n  useEffect(() => {\n    if (typeof dataProp === 'function' && canvasRef.current) {\n      setComputedData(dataProp(canvasRef.current));\n    }\n  }, [dataProp]);\n\n  useEffect(() => {\n    if (!redraw && chartRef.current && options) {\n      setOptions(chartRef.current, options);\n    }\n  }, [redraw, options]);\n\n  useEffect(() => {\n    if (!redraw && chartRef.current) {\n      setLabels(chartRef.current.config.data, data.labels);\n    }\n  }, [redraw, data.labels]);\n\n  useEffect(() => {\n    if (!redraw && chartRef.current && data.datasets) {\n      setDatasets(chartRef.current.config.data, data.datasets);\n    }\n  }, [redraw, data.datasets]);\n\n  useEffect(() => {\n    if (!chartRef.current) return;\n\n    if (redraw) {\n      destroyChart();\n      setTimeout(renderChart);\n    } else {\n      chartRef.current.update();\n    }\n  }, [redraw, options, data.labels, data.datasets]);\n\n  useEffect(() => {\n    renderChart();\n\n    return () => destroyChart();\n  }, []);\n\n  return (\n    <canvas\n      ref={canvasRef}\n      role='img'\n      height={height}\n      width={width}\n      onClick={onClick}\n      {...props}\n    >\n      {fallbackContent}\n    </canvas>\n  );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport { ChartType } from 'chart.js';\n\nimport { ChartProps, ChartJSOrUndefined, TypedChartComponent } from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart<T extends ChartType>(type: T) {\n  return forwardRef<ChartJSOrUndefined<T>, Omit<ChartProps<T>, 'type'>>(\n    (props, ref) => <Chart {...props} ref={ref} type={type} />\n  ) as TypedChartComponent<T, true>;\n}\n\nexport const Line = createTypedChart('line');\n\nexport const Bar = createTypedChart('bar');\n\nexport const Radar = createTypedChart('radar');\n\nexport const Doughnut = createTypedChart('doughnut');\n\nexport const PolarArea = createTypedChart('polarArea');\n\nexport const Bubble = createTypedChart('bubble');\n\nexport const Pie = createTypedChart('pie');\n\nexport const Scatter = createTypedChart('scatter');\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\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","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[: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][: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\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\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\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"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\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\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 * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\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 = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\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  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  var transitional = config.transitional;\n\n  if (transitional !== undefined) {\n    validator.assertOptions(transitional, {\n      silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n      forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n      clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n    }, false);\n  }\n\n  // filter out skipped interceptors\n  var requestInterceptorChain = [];\n  var synchronousRequestInterceptors = true;\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n      return;\n    }\n\n    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var responseInterceptorChain = [];\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var promise;\n\n  if (!synchronousRequestInterceptors) {\n    var chain = [dispatchRequest, undefined];\n\n    Array.prototype.unshift.apply(chain, requestInterceptorChain);\n    chain = chain.concat(responseInterceptorChain);\n\n    promise = Promise.resolve(config);\n    while (chain.length) {\n      promise = promise.then(chain.shift(), chain.shift());\n    }\n\n    return promise;\n  }\n\n\n  var newConfig = config;\n  while (requestInterceptorChain.length) {\n    var onFulfilled = requestInterceptorChain.shift();\n    var onRejected = requestInterceptorChain.shift();\n    try {\n      newConfig = onFulfilled(newConfig);\n    } catch (error) {\n      onRejected(error);\n      break;\n    }\n  }\n\n  try {\n    promise = dispatchRequest(newConfig);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n\n  while (responseInterceptorChain.length) {\n    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected,\n    synchronous: options ? options.synchronous : false,\n    runWhen: options ? options.runWhen : null\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  var context = this || defaults;\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(context, data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n  var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n  var destVer = version.split('.');\n  for (var i = 0; i < 3; i++) {\n    if (pkgVersionArr[i] > destVer[i]) {\n      return true;\n    } else if (pkgVersionArr[i] < destVer[i]) {\n      return false;\n    }\n  }\n  return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  var isDeprecated = version && isOlderVersion(version);\n\n  function formatMessage(opt, desc) {\n    return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return function(value, opt, opts) {\n    if (validator === false) {\n      throw new Error(formatMessage(opt, ' has been removed in ' + version));\n    }\n\n    if (isDeprecated && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new TypeError('options must be an object');\n  }\n  var keys = Object.keys(options);\n  var i = keys.length;\n  while (i-- > 0) {\n    var opt = keys[i];\n    var validator = schema[opt];\n    if (validator) {\n      var value = options[opt];\n      var result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new TypeError('option ' + opt + ' must be ' + result);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw Error('Unknown option ' + opt);\n    }\n  }\n}\n\nmodule.exports = {\n  isOlderVersion: isOlderVersion,\n  assertOptions: assertOptions,\n  validators: validators\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","import React from 'react'\n\nlet renderErr = 'Renderer Error ☝️'\n\nexport const actions = {\n  init: 'init',\n}\n\nexport const defaultRenderer = ({ value = '' }) => value;\nexport const emptyRenderer = () => <>&nbsp;</>;\n\nexport const defaultColumn = {\n  Cell: defaultRenderer,\n  width: 150,\n  minWidth: 0,\n  maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nfunction mergeProps(...propList) {\n  return propList.reduce((props, next) => {\n    const { style, className, ...rest } = next\n\n    props = {\n      ...props,\n      ...rest,\n    }\n\n    if (style) {\n      props.style = props.style\n        ? { ...(props.style || {}), ...(style || {}) }\n        : style\n    }\n\n    if (className) {\n      props.className = props.className\n        ? props.className + ' ' + className\n        : className\n    }\n\n    if (props.className === '') {\n      delete props.className\n    }\n\n    return props\n  }, {})\n}\n\nfunction handlePropGetter(prevProps, userProps, meta) {\n  // Handle a lambda, pass it the previous props\n  if (typeof userProps === 'function') {\n    return handlePropGetter({}, userProps(prevProps, meta))\n  }\n\n  // Handle an array, merge each item as separate props\n  if (Array.isArray(userProps)) {\n    return mergeProps(prevProps, ...userProps)\n  }\n\n  // Handle an object by default, merge the two objects\n  return mergeProps(prevProps, userProps)\n}\n\nexport const makePropGetter = (hooks, meta = {}) => {\n  return (userProps = {}) =>\n    [...hooks, userProps].reduce(\n      (prev, next) =>\n        handlePropGetter(prev, next, {\n          ...meta,\n          userProps,\n        }),\n      {}\n    )\n}\n\nexport const reduceHooks = (hooks, initial, meta = {}, allowUndefined) =>\n  hooks.reduce((prev, next) => {\n    const nextValue = next(prev, meta)\n    if (process.env.NODE_ENV !== 'production') {\n      if (!allowUndefined && typeof nextValue === 'undefined') {\n        console.info(next)\n        throw new Error(\n          'React Table: A reducer hook ☝️ just returned undefined! This is not allowed.'\n        )\n      }\n    }\n    return nextValue\n  }, initial)\n\nexport const loopHooks = (hooks, context, meta = {}) =>\n  hooks.forEach(hook => {\n    const nextValue = hook(context, meta)\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof nextValue !== 'undefined') {\n        console.info(hook, nextValue)\n        throw new Error(\n          'React Table: A loop-type hook ☝️ just returned a value! This is not allowed.'\n        )\n      }\n    }\n  })\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n  if (process.env.NODE_ENV !== 'production' && afters) {\n    throw new Error(\n      `Defining plugins in the \"after\" section of ensurePluginOrder is no longer supported (see plugin ${pluginName})`\n    )\n  }\n  const pluginIndex = plugins.findIndex(\n    plugin => plugin.pluginName === pluginName\n  )\n\n  if (pluginIndex === -1) {\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(`The plugin \"${pluginName}\" was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n  ${pluginName}.pluginName = '${pluginName}'\n`)\n    }\n  }\n\n  befores.forEach(before => {\n    const beforeIndex = plugins.findIndex(\n      plugin => plugin.pluginName === before\n    )\n    if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n      if (process.env.NODE_ENV !== 'production') {\n        throw new Error(\n          `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n        )\n      }\n    }\n  })\n}\n\nexport function functionalUpdate(updater, old) {\n  return typeof updater === 'function' ? updater(old) : updater\n}\n\nexport function useGetLatest(obj) {\n  const ref = React.useRef()\n  ref.current = obj\n\n  return React.useCallback(() => ref.current, [])\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n  typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useMountedLayoutEffect(fn, deps) {\n  const mountedRef = React.useRef(false)\n\n  safeUseLayoutEffect(() => {\n    if (mountedRef.current) {\n      fn()\n    }\n    mountedRef.current = true\n    // eslint-disable-next-line\n  }, deps)\n}\n\nexport function useAsyncDebounce(defaultFn, defaultWait = 0) {\n  const debounceRef = React.useRef({})\n\n  const getDefaultFn = useGetLatest(defaultFn)\n  const getDefaultWait = useGetLatest(defaultWait)\n\n  return React.useCallback(\n    async (...args) => {\n      if (!debounceRef.current.promise) {\n        debounceRef.current.promise = new Promise((resolve, reject) => {\n          debounceRef.current.resolve = resolve\n          debounceRef.current.reject = reject\n        })\n      }\n\n      if (debounceRef.current.timeout) {\n        clearTimeout(debounceRef.current.timeout)\n      }\n\n      debounceRef.current.timeout = setTimeout(async () => {\n        delete debounceRef.current.timeout\n        try {\n          debounceRef.current.resolve(await getDefaultFn()(...args))\n        } catch (err) {\n          debounceRef.current.reject(err)\n        } finally {\n          delete debounceRef.current.promise\n        }\n      }, getDefaultWait())\n\n      return debounceRef.current.promise\n    },\n    [getDefaultFn, getDefaultWait]\n  )\n}\n\nexport function makeRenderer(instance, column, meta = {}) {\n  return (type, userProps = {}) => {\n    const Comp = typeof type === 'string' ? column[type] : type\n\n    if (typeof Comp === 'undefined') {\n      console.info(column)\n      throw new Error(renderErr)\n    }\n\n    return flexRender(Comp, { ...instance, column, ...meta, ...userProps })\n  }\n}\n\nexport function flexRender(Comp, props) {\n  return isReactComponent(Comp) ? <Comp {...props} /> : Comp\n}\n\nfunction isReactComponent(component) {\n  return (\n    isClassComponent(component) ||\n    typeof component === 'function' ||\n    isExoticComponent(component)\n  )\n}\n\nfunction isClassComponent(component) {\n  return (\n    typeof component === 'function' &&\n    (() => {\n      const proto = Object.getPrototypeOf(component)\n      return proto.prototype && proto.prototype.isReactComponent\n    })()\n  )\n}\n\nfunction isExoticComponent(component) {\n  return (\n    typeof component === 'object' &&\n    typeof component.$$typeof === 'symbol' &&\n    ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n  )\n}\n","import { defaultColumn, emptyRenderer } from './publicUtils'\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n  return columns.reduce((prev, curr) => {\n    if (curr.columns) {\n      return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n    }\n    return depth\n  }, 0)\n}\n\n// Build the visible columns, headers and flat column list\nexport function linkColumnStructure(columns, parent, depth = 0) {\n  return columns.map(column => {\n    column = {\n      ...column,\n      parent,\n      depth,\n    }\n\n    assignColumnAccessor(column)\n\n    if (column.columns) {\n      column.columns = linkColumnStructure(column.columns, column, depth + 1)\n    }\n    return column\n  })\n}\n\nexport function flattenColumns(columns) {\n  return flattenBy(columns, 'columns')\n}\n\nexport function assignColumnAccessor(column) {\n  // First check for string accessor\n  let { id, accessor, Header } = column\n\n  if (typeof accessor === 'string') {\n    id = id || accessor\n    const accessorPath = accessor.split('.')\n    accessor = row => getBy(row, accessorPath)\n  }\n\n  if (!id && typeof Header === 'string' && Header) {\n    id = Header\n  }\n\n  if (!id && column.columns) {\n    console.error(column)\n    throw new Error('A column ID (or unique \"Header\" value) is required!')\n  }\n\n  if (!id) {\n    console.error(column)\n    throw new Error('A column ID (or string accessor) is required!')\n  }\n\n  Object.assign(column, {\n    id,\n    accessor,\n  })\n\n  return column\n}\n\nexport function decorateColumn(column, userDefaultColumn) {\n  if (!userDefaultColumn) {\n    throw new Error()\n  }\n  Object.assign(column, {\n    // Make sure there is a fallback header, just in case\n    Header: emptyRenderer,\n    Footer: emptyRenderer,\n    ...defaultColumn,\n    ...userDefaultColumn,\n    ...column,\n  })\n\n  Object.assign(column, {\n    originalWidth: column.width,\n  })\n\n  return column\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(\n  allColumns,\n  defaultColumn,\n  additionalHeaderProperties = () => ({})\n) {\n  const headerGroups = []\n\n  let scanColumns = allColumns\n\n  let uid = 0\n  const getUID = () => uid++\n\n  while (scanColumns.length) {\n    // The header group we are creating\n    const headerGroup = {\n      headers: [],\n    }\n\n    // The parent columns we're going to scan next\n    const parentColumns = []\n\n    const hasParents = scanColumns.some(d => d.parent)\n\n    // Scan each column for parents\n    scanColumns.forEach(column => {\n      // What is the latest (last) parent column?\n      let latestParentColumn = [...parentColumns].reverse()[0]\n\n      let newParent\n\n      if (hasParents) {\n        // If the column has a parent, add it if necessary\n        if (column.parent) {\n          newParent = {\n            ...column.parent,\n            originalId: column.parent.id,\n            id: `${column.parent.id}_${getUID()}`,\n            headers: [column],\n            ...additionalHeaderProperties(column),\n          }\n        } else {\n          // If other columns have parents, we'll need to add a place holder if necessary\n          const originalId = `${column.id}_placeholder`\n          newParent = decorateColumn(\n            {\n              originalId,\n              id: `${column.id}_placeholder_${getUID()}`,\n              placeholderOf: column,\n              headers: [column],\n              ...additionalHeaderProperties(column),\n            },\n            defaultColumn\n          )\n        }\n\n        // If the resulting parent columns are the same, just add\n        // the column and increment the header span\n        if (\n          latestParentColumn &&\n          latestParentColumn.originalId === newParent.originalId\n        ) {\n          latestParentColumn.headers.push(column)\n        } else {\n          parentColumns.push(newParent)\n        }\n      }\n\n      headerGroup.headers.push(column)\n    })\n\n    headerGroups.push(headerGroup)\n\n    // Start scanning the parent columns\n    scanColumns = parentColumns\n  }\n\n  return headerGroups.reverse()\n}\n\nconst pathObjCache = new Map()\n\nexport function getBy(obj, path, def) {\n  if (!path) {\n    return obj\n  }\n  const cacheKey = typeof path === 'function' ? path : JSON.stringify(path)\n\n  const pathObj =\n    pathObjCache.get(cacheKey) ||\n    (() => {\n      const pathObj = makePathArray(path)\n      pathObjCache.set(cacheKey, pathObj)\n      return pathObj\n    })()\n\n  let val\n\n  try {\n    val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n  } catch (e) {\n    // continue regardless of error\n  }\n  return typeof val !== 'undefined' ? val : def\n}\n\nexport function getFirstDefined(...args) {\n  for (let i = 0; i < args.length; i += 1) {\n    if (typeof args[i] !== 'undefined') {\n      return args[i]\n    }\n  }\n}\n\nexport function getElementDimensions(element) {\n  const rect = element.getBoundingClientRect()\n  const style = window.getComputedStyle(element)\n  const margins = {\n    left: parseInt(style.marginLeft),\n    right: parseInt(style.marginRight),\n  }\n  const padding = {\n    left: parseInt(style.paddingLeft),\n    right: parseInt(style.paddingRight),\n  }\n  return {\n    left: Math.ceil(rect.left),\n    width: Math.ceil(rect.width),\n    outerWidth: Math.ceil(\n      rect.width + margins.left + margins.right + padding.left + padding.right\n    ),\n    marginLeft: margins.left,\n    marginRight: margins.right,\n    paddingLeft: padding.left,\n    paddingRight: padding.right,\n    scrollWidth: element.scrollWidth,\n  }\n}\n\nexport function isFunction(a) {\n  if (typeof a === 'function') {\n    return a\n  }\n}\n\nexport function flattenBy(arr, key) {\n  const flat = []\n\n  const recurse = arr => {\n    arr.forEach(d => {\n      if (!d[key]) {\n        flat.push(d)\n      } else {\n        recurse(d[key])\n      }\n    })\n  }\n\n  recurse(arr)\n\n  return flat\n}\n\nexport function expandRows(\n  rows,\n  { manualExpandedKey, expanded, expandSubRows = true }\n) {\n  const expandedRows = []\n\n  const handleRow = (row, addToExpandedRows = true) => {\n    row.isExpanded =\n      (row.original && row.original[manualExpandedKey]) || expanded[row.id]\n\n    row.canExpand = row.subRows && !!row.subRows.length\n\n    if (addToExpandedRows) {\n      expandedRows.push(row)\n    }\n\n    if (row.subRows && row.subRows.length && row.isExpanded) {\n      row.subRows.forEach(row => handleRow(row, expandSubRows))\n    }\n  }\n\n  rows.forEach(row => handleRow(row))\n\n  return expandedRows\n}\n\nexport function getFilterMethod(filter, userFilterTypes, filterTypes) {\n  return (\n    isFunction(filter) ||\n    userFilterTypes[filter] ||\n    filterTypes[filter] ||\n    filterTypes.text\n  )\n}\n\nexport function shouldAutoRemoveFilter(autoRemove, value, column) {\n  return autoRemove ? autoRemove(value, column) : typeof value === 'undefined'\n}\n\nexport function unpreparedAccessWarning() {\n  throw new Error(\n    'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n  )\n}\n\nlet passiveSupported = null\nexport function passiveEventSupported() {\n  // memoize support to avoid adding multiple test events\n  if (typeof passiveSupported === 'boolean') return passiveSupported\n\n  let supported = false\n  try {\n    const options = {\n      get passive() {\n        supported = true\n        return false\n      },\n    }\n\n    window.addEventListener('test', null, options)\n    window.removeEventListener('test', null, options)\n  } catch (err) {\n    supported = false\n  }\n  passiveSupported = supported\n  return passiveSupported\n}\n\n//\n\nconst reOpenBracket = /\\[/g\nconst reCloseBracket = /\\]/g\n\nfunction makePathArray(obj) {\n  return (\n    flattenDeep(obj)\n      // remove all periods in parts\n      .map(d => String(d).replace('.', '_'))\n      // join parts using period\n      .join('.')\n      // replace brackets with periods\n      .replace(reOpenBracket, '.')\n      .replace(reCloseBracket, '')\n      // split it back out on periods\n      .split('.')\n  )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n  if (!Array.isArray(arr)) {\n    newArr.push(arr)\n  } else {\n    for (let i = 0; i < arr.length; i += 1) {\n      flattenDeep(arr[i], newArr)\n    }\n  }\n  return newArr\n}\n","const defaultGetTableProps = props => ({\n  role: 'table',\n  ...props,\n})\n\nconst defaultGetTableBodyProps = props => ({\n  role: 'rowgroup',\n  ...props,\n})\n\nconst defaultGetHeaderProps = (props, { column }) => ({\n  key: `header_${column.id}`,\n  colSpan: column.totalVisibleHeaderCount,\n  role: 'columnheader',\n  ...props,\n})\n\nconst defaultGetFooterProps = (props, { column }) => ({\n  key: `footer_${column.id}`,\n  colSpan: column.totalVisibleHeaderCount,\n  ...props,\n})\n\nconst defaultGetHeaderGroupProps = (props, { index }) => ({\n  key: `headerGroup_${index}`,\n  role: 'row',\n  ...props,\n})\n\nconst defaultGetFooterGroupProps = (props, { index }) => ({\n  key: `footerGroup_${index}`,\n  ...props,\n})\n\nconst defaultGetRowProps = (props, { row }) => ({\n  key: `row_${row.id}`,\n  role: 'row',\n  ...props,\n})\n\nconst defaultGetCellProps = (props, { cell }) => ({\n  key: `cell_${cell.row.id}_${cell.column.id}`,\n  role: 'cell',\n  ...props,\n})\n\nexport default function makeDefaultPluginHooks() {\n  return {\n    useOptions: [],\n    stateReducers: [],\n    useControlledState: [],\n    columns: [],\n    columnsDeps: [],\n    allColumns: [],\n    allColumnsDeps: [],\n    accessValue: [],\n    materializedColumns: [],\n    materializedColumnsDeps: [],\n    useInstanceAfterData: [],\n    visibleColumns: [],\n    visibleColumnsDeps: [],\n    headerGroups: [],\n    headerGroupsDeps: [],\n    useInstanceBeforeDimensions: [],\n    useInstance: [],\n    prepareRow: [],\n    getTableProps: [defaultGetTableProps],\n    getTableBodyProps: [defaultGetTableBodyProps],\n    getHeaderGroupProps: [defaultGetHeaderGroupProps],\n    getFooterGroupProps: [defaultGetFooterGroupProps],\n    getHeaderProps: [defaultGetHeaderProps],\n    getFooterProps: [defaultGetFooterProps],\n    getRowProps: [defaultGetRowProps],\n    getCellProps: [defaultGetCellProps],\n    useFinalInstance: [],\n  }\n}\n","import React from 'react'\n\nimport {\n  actions,\n  functionalUpdate,\n  useGetLatest,\n  makePropGetter,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nactions.resetHiddenColumns = 'resetHiddenColumns'\nactions.toggleHideColumn = 'toggleHideColumn'\nactions.setHiddenColumns = 'setHiddenColumns'\nactions.toggleHideAllColumns = 'toggleHideAllColumns'\n\nexport const useColumnVisibility = hooks => {\n  hooks.getToggleHiddenProps = [defaultGetToggleHiddenProps]\n  hooks.getToggleHideAllColumnsProps = [defaultGetToggleHideAllColumnsProps]\n\n  hooks.stateReducers.push(reducer)\n  hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n  hooks.headerGroupsDeps.push((deps, { instance }) => [\n    ...deps,\n    instance.state.hiddenColumns,\n  ])\n  hooks.useInstance.push(useInstance)\n}\n\nuseColumnVisibility.pluginName = 'useColumnVisibility'\n\nconst defaultGetToggleHiddenProps = (props, { column }) => [\n  props,\n  {\n    onChange: e => {\n      column.toggleHidden(!e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: column.isVisible,\n    title: 'Toggle Column Visible',\n  },\n]\n\nconst defaultGetToggleHideAllColumnsProps = (props, { instance }) => [\n  props,\n  {\n    onChange: e => {\n      instance.toggleHideAllColumns(!e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: !instance.allColumnsHidden && !instance.state.hiddenColumns.length,\n    title: 'Toggle All Columns Hidden',\n    indeterminate:\n      !instance.allColumnsHidden && instance.state.hiddenColumns.length,\n  },\n]\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      hiddenColumns: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetHiddenColumns) {\n    return {\n      ...state,\n      hiddenColumns: instance.initialState.hiddenColumns || [],\n    }\n  }\n\n  if (action.type === actions.toggleHideColumn) {\n    const should =\n      typeof action.value !== 'undefined'\n        ? action.value\n        : !state.hiddenColumns.includes(action.columnId)\n\n    const hiddenColumns = should\n      ? [...state.hiddenColumns, action.columnId]\n      : state.hiddenColumns.filter(d => d !== action.columnId)\n\n    return {\n      ...state,\n      hiddenColumns,\n    }\n  }\n\n  if (action.type === actions.setHiddenColumns) {\n    return {\n      ...state,\n      hiddenColumns: functionalUpdate(action.value, state.hiddenColumns),\n    }\n  }\n\n  if (action.type === actions.toggleHideAllColumns) {\n    const shouldAll =\n      typeof action.value !== 'undefined'\n        ? action.value\n        : !state.hiddenColumns.length\n\n    return {\n      ...state,\n      hiddenColumns: shouldAll ? instance.allColumns.map(d => d.id) : [],\n    }\n  }\n}\n\nfunction useInstanceBeforeDimensions(instance) {\n  const {\n    headers,\n    state: { hiddenColumns },\n  } = instance\n\n  const isMountedRef = React.useRef(false)\n\n  if (!isMountedRef.current) {\n  }\n\n  const handleColumn = (column, parentVisible) => {\n    column.isVisible = parentVisible && !hiddenColumns.includes(column.id)\n\n    let totalVisibleHeaderCount = 0\n\n    if (column.headers && column.headers.length) {\n      column.headers.forEach(\n        subColumn =>\n          (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n      )\n    } else {\n      totalVisibleHeaderCount = column.isVisible ? 1 : 0\n    }\n\n    column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n    return totalVisibleHeaderCount\n  }\n\n  let totalVisibleHeaderCount = 0\n\n  headers.forEach(\n    subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n  )\n}\n\nfunction useInstance(instance) {\n  const {\n    columns,\n    flatHeaders,\n    dispatch,\n    allColumns,\n    getHooks,\n    state: { hiddenColumns },\n    autoResetHiddenColumns = true,\n  } = instance\n\n  const getInstance = useGetLatest(instance)\n\n  const allColumnsHidden = allColumns.length === hiddenColumns.length\n\n  const toggleHideColumn = React.useCallback(\n    (columnId, value) =>\n      dispatch({ type: actions.toggleHideColumn, columnId, value }),\n    [dispatch]\n  )\n\n  const setHiddenColumns = React.useCallback(\n    value => dispatch({ type: actions.setHiddenColumns, value }),\n    [dispatch]\n  )\n\n  const toggleHideAllColumns = React.useCallback(\n    value => dispatch({ type: actions.toggleHideAllColumns, value }),\n    [dispatch]\n  )\n\n  const getToggleHideAllColumnsProps = makePropGetter(\n    getHooks().getToggleHideAllColumnsProps,\n    { instance: getInstance() }\n  )\n\n  flatHeaders.forEach(column => {\n    column.toggleHidden = value => {\n      dispatch({\n        type: actions.toggleHideColumn,\n        columnId: column.id,\n        value,\n      })\n    }\n\n    column.getToggleHiddenProps = makePropGetter(\n      getHooks().getToggleHiddenProps,\n      {\n        instance: getInstance(),\n        column,\n      }\n    )\n  })\n\n  const getAutoResetHiddenColumns = useGetLatest(autoResetHiddenColumns)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetHiddenColumns()) {\n      dispatch({ type: actions.resetHiddenColumns })\n    }\n  }, [dispatch, columns])\n\n  Object.assign(instance, {\n    allColumnsHidden,\n    toggleHideColumn,\n    setHiddenColumns,\n    toggleHideAllColumns,\n    getToggleHideAllColumnsProps,\n  })\n}\n","import React from 'react'\n\n//\n\nimport {\n  linkColumnStructure,\n  flattenColumns,\n  assignColumnAccessor,\n  unpreparedAccessWarning,\n  makeHeaderGroups,\n  decorateColumn,\n} from '../utils'\n\nimport {\n  useGetLatest,\n  reduceHooks,\n  actions,\n  loopHooks,\n  makePropGetter,\n  makeRenderer,\n} from '../publicUtils'\n\nimport makeDefaultPluginHooks from '../makeDefaultPluginHooks'\n\nimport { useColumnVisibility } from './useColumnVisibility'\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (state, action, prevState) => state\nconst defaultGetSubRows = (row, index) => row.subRows || []\nconst defaultGetRowId = (row, index, parent) =>\n  `${parent ? [parent.id, index].join('.') : index}`\nconst defaultUseControlledState = d => d\n\nfunction applyDefaults(props) {\n  const {\n    initialState = defaultInitialState,\n    defaultColumn = defaultColumnInstance,\n    getSubRows = defaultGetSubRows,\n    getRowId = defaultGetRowId,\n    stateReducer = defaultReducer,\n    useControlledState = defaultUseControlledState,\n    ...rest\n  } = props\n\n  return {\n    ...rest,\n    initialState,\n    defaultColumn,\n    getSubRows,\n    getRowId,\n    stateReducer,\n    useControlledState,\n  }\n}\n\nexport const useTable = (props, ...plugins) => {\n  // Apply default props\n  props = applyDefaults(props)\n\n  // Add core plugins\n  plugins = [useColumnVisibility, ...plugins]\n\n  // Create the table instance\n  let instanceRef = React.useRef({})\n\n  // Create a getter for the instance (helps avoid a lot of potential memory leaks)\n  const getInstance = useGetLatest(instanceRef.current)\n\n  // Assign the props, plugins and hooks to the instance\n  Object.assign(getInstance(), {\n    ...props,\n    plugins,\n    hooks: makeDefaultPluginHooks(),\n  })\n\n  // Allow plugins to register hooks as early as possible\n  plugins.filter(Boolean).forEach(plugin => {\n    plugin(getInstance().hooks)\n  })\n\n  // Consume all hooks and make a getter for them\n  const getHooks = useGetLatest(getInstance().hooks)\n  getInstance().getHooks = getHooks\n  delete getInstance().hooks\n\n  // Allow useOptions hooks to modify the options coming into the table\n  Object.assign(\n    getInstance(),\n    reduceHooks(getHooks().useOptions, applyDefaults(props))\n  )\n\n  const {\n    data,\n    columns: userColumns,\n    initialState,\n    defaultColumn,\n    getSubRows,\n    getRowId,\n    stateReducer,\n    useControlledState,\n  } = getInstance()\n\n  // Setup user reducer ref\n  const getStateReducer = useGetLatest(stateReducer)\n\n  // Build the reducer\n  const reducer = React.useCallback(\n    (state, action) => {\n      // Detect invalid actions\n      if (!action.type) {\n        console.info({ action })\n        throw new Error('Unknown Action 👆')\n      }\n\n      // Reduce the state from all plugin reducers\n      return [\n        ...getHooks().stateReducers,\n        // Allow the user to add their own state reducer(s)\n        ...(Array.isArray(getStateReducer())\n          ? getStateReducer()\n          : [getStateReducer()]),\n      ].reduce(\n        (s, handler) => handler(s, action, state, getInstance()) || s,\n        state\n      )\n    },\n    [getHooks, getStateReducer, getInstance]\n  )\n\n  // Start the reducer\n  const [reducerState, dispatch] = React.useReducer(reducer, undefined, () =>\n    reducer(initialState, { type: actions.init })\n  )\n\n  // Allow the user to control the final state with hooks\n  const state = reduceHooks(\n    [...getHooks().useControlledState, useControlledState],\n    reducerState,\n    { instance: getInstance() }\n  )\n\n  Object.assign(getInstance(), {\n    state,\n    dispatch,\n  })\n\n  // Decorate All the columns\n  const columns = React.useMemo(\n    () =>\n      linkColumnStructure(\n        reduceHooks(getHooks().columns, userColumns, {\n          instance: getInstance(),\n        })\n      ),\n    [\n      getHooks,\n      getInstance,\n      userColumns,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().columnsDeps, [], { instance: getInstance() }),\n    ]\n  )\n  getInstance().columns = columns\n\n  // Get the flat list of all columns and allow hooks to decorate\n  // those columns (and trigger this memoization via deps)\n  let allColumns = React.useMemo(\n    () =>\n      reduceHooks(getHooks().allColumns, flattenColumns(columns), {\n        instance: getInstance(),\n      }).map(assignColumnAccessor),\n    [\n      columns,\n      getHooks,\n      getInstance,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().allColumnsDeps, [], {\n        instance: getInstance(),\n      }),\n    ]\n  )\n  getInstance().allColumns = allColumns\n\n  // Access the row model using initial columns\n  const [rows, flatRows, rowsById] = React.useMemo(() => {\n    let rows = []\n    let flatRows = []\n    const rowsById = {}\n\n    const allColumnsQueue = [...allColumns]\n\n    while (allColumnsQueue.length) {\n      const column = allColumnsQueue.shift()\n      accessRowsForColumn({\n        data,\n        rows,\n        flatRows,\n        rowsById,\n        column,\n        getRowId,\n        getSubRows,\n        accessValueHooks: getHooks().accessValue,\n        getInstance,\n      })\n    }\n\n    return [rows, flatRows, rowsById]\n  }, [allColumns, data, getRowId, getSubRows, getHooks, getInstance])\n\n  Object.assign(getInstance(), {\n    rows,\n    initialRows: [...rows],\n    flatRows,\n    rowsById,\n    // materializedColumns,\n  })\n\n  loopHooks(getHooks().useInstanceAfterData, getInstance())\n\n  // Get the flat list of all columns AFTER the rows\n  // have been access, and allow hooks to decorate\n  // those columns (and trigger this memoization via deps)\n  let visibleColumns = React.useMemo(\n    () =>\n      reduceHooks(getHooks().visibleColumns, allColumns, {\n        instance: getInstance(),\n      }).map(d => decorateColumn(d, defaultColumn)),\n    [\n      getHooks,\n      allColumns,\n      getInstance,\n      defaultColumn,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().visibleColumnsDeps, [], {\n        instance: getInstance(),\n      }),\n    ]\n  )\n\n  // Combine new visible columns with all columns\n  allColumns = React.useMemo(() => {\n    const columns = [...visibleColumns]\n\n    allColumns.forEach(column => {\n      if (!columns.find(d => d.id === column.id)) {\n        columns.push(column)\n      }\n    })\n\n    return columns\n  }, [allColumns, visibleColumns])\n  getInstance().allColumns = allColumns\n\n  if (process.env.NODE_ENV !== 'production') {\n    const duplicateColumns = allColumns.filter((column, i) => {\n      return allColumns.findIndex(d => d.id === column.id) !== i\n    })\n\n    if (duplicateColumns.length) {\n      console.info(allColumns)\n      throw new Error(\n        `Duplicate columns were found with ids: \"${duplicateColumns\n          .map(d => d.id)\n          .join(', ')}\" in the columns array above`\n      )\n    }\n  }\n\n  // Make the headerGroups\n  const headerGroups = React.useMemo(\n    () =>\n      reduceHooks(\n        getHooks().headerGroups,\n        makeHeaderGroups(visibleColumns, defaultColumn),\n        getInstance()\n      ),\n    [\n      getHooks,\n      visibleColumns,\n      defaultColumn,\n      getInstance,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().headerGroupsDeps, [], {\n        instance: getInstance(),\n      }),\n    ]\n  )\n  getInstance().headerGroups = headerGroups\n\n  // Get the first level of headers\n  const headers = React.useMemo(\n    () => (headerGroups.length ? headerGroups[0].headers : []),\n    [headerGroups]\n  )\n  getInstance().headers = headers\n\n  // Provide a flat header list for utilities\n  getInstance().flatHeaders = headerGroups.reduce(\n    (all, headerGroup) => [...all, ...headerGroup.headers],\n    []\n  )\n\n  loopHooks(getHooks().useInstanceBeforeDimensions, getInstance())\n\n  // Filter columns down to visible ones\n  const visibleColumnsDep = visibleColumns\n    .filter(d => d.isVisible)\n    .map(d => d.id)\n    .sort()\n    .join('_')\n\n  visibleColumns = React.useMemo(\n    () => visibleColumns.filter(d => d.isVisible),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [visibleColumns, visibleColumnsDep]\n  )\n  getInstance().visibleColumns = visibleColumns\n\n  // Header Visibility is needed by this point\n  const [\n    totalColumnsMinWidth,\n    totalColumnsWidth,\n    totalColumnsMaxWidth,\n  ] = calculateHeaderWidths(headers)\n\n  getInstance().totalColumnsMinWidth = totalColumnsMinWidth\n  getInstance().totalColumnsWidth = totalColumnsWidth\n  getInstance().totalColumnsMaxWidth = totalColumnsMaxWidth\n\n  loopHooks(getHooks().useInstance, getInstance())\n\n  // Each materialized header needs to be assigned a render function and other\n  // prop getter properties here.\n  ;[...getInstance().flatHeaders, ...getInstance().allColumns].forEach(\n    column => {\n      // Give columns/headers rendering power\n      column.render = makeRenderer(getInstance(), column)\n\n      // Give columns/headers a default getHeaderProps\n      column.getHeaderProps = makePropGetter(getHooks().getHeaderProps, {\n        instance: getInstance(),\n        column,\n      })\n\n      // Give columns/headers a default getFooterProps\n      column.getFooterProps = makePropGetter(getHooks().getFooterProps, {\n        instance: getInstance(),\n        column,\n      })\n    }\n  )\n\n  getInstance().headerGroups = React.useMemo(\n    () =>\n      headerGroups.filter((headerGroup, i) => {\n        // Filter out any headers and headerGroups that don't have visible columns\n        headerGroup.headers = headerGroup.headers.filter(column => {\n          const recurse = headers =>\n            headers.filter(column => {\n              if (column.headers) {\n                return recurse(column.headers)\n              }\n              return column.isVisible\n            }).length\n          if (column.headers) {\n            return recurse(column.headers)\n          }\n          return column.isVisible\n        })\n\n        // Give headerGroups getRowProps\n        if (headerGroup.headers.length) {\n          headerGroup.getHeaderGroupProps = makePropGetter(\n            getHooks().getHeaderGroupProps,\n            { instance: getInstance(), headerGroup, index: i }\n          )\n\n          headerGroup.getFooterGroupProps = makePropGetter(\n            getHooks().getFooterGroupProps,\n            { instance: getInstance(), headerGroup, index: i }\n          )\n\n          return true\n        }\n\n        return false\n      }),\n    [headerGroups, getInstance, getHooks]\n  )\n\n  getInstance().footerGroups = [...getInstance().headerGroups].reverse()\n\n  // The prepareRow function is absolutely necessary and MUST be called on\n  // any rows the user wishes to be displayed.\n\n  getInstance().prepareRow = React.useCallback(\n    row => {\n      row.getRowProps = makePropGetter(getHooks().getRowProps, {\n        instance: getInstance(),\n        row,\n      })\n\n      // Build the visible cells for each row\n      row.allCells = allColumns.map(column => {\n        const value = row.values[column.id]\n\n        const cell = {\n          column,\n          row,\n          value,\n        }\n\n        // Give each cell a getCellProps base\n        cell.getCellProps = makePropGetter(getHooks().getCellProps, {\n          instance: getInstance(),\n          cell,\n        })\n\n        // Give each cell a renderer function (supports multiple renderers)\n        cell.render = makeRenderer(getInstance(), column, {\n          row,\n          cell,\n          value,\n        })\n\n        return cell\n      })\n\n      row.cells = visibleColumns.map(column =>\n        row.allCells.find(cell => cell.column.id === column.id)\n      )\n\n      // need to apply any row specific hooks (useExpanded requires this)\n      loopHooks(getHooks().prepareRow, row, { instance: getInstance() })\n    },\n    [getHooks, getInstance, allColumns, visibleColumns]\n  )\n\n  getInstance().getTableProps = makePropGetter(getHooks().getTableProps, {\n    instance: getInstance(),\n  })\n\n  getInstance().getTableBodyProps = makePropGetter(\n    getHooks().getTableBodyProps,\n    {\n      instance: getInstance(),\n    }\n  )\n\n  loopHooks(getHooks().useFinalInstance, getInstance())\n\n  return getInstance()\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n  let sumTotalMinWidth = 0\n  let sumTotalWidth = 0\n  let sumTotalMaxWidth = 0\n  let sumTotalFlexWidth = 0\n\n  headers.forEach(header => {\n    let { headers: subHeaders } = header\n\n    header.totalLeft = left\n\n    if (subHeaders && subHeaders.length) {\n      const [\n        totalMinWidth,\n        totalWidth,\n        totalMaxWidth,\n        totalFlexWidth,\n      ] = calculateHeaderWidths(subHeaders, left)\n      header.totalMinWidth = totalMinWidth\n      header.totalWidth = totalWidth\n      header.totalMaxWidth = totalMaxWidth\n      header.totalFlexWidth = totalFlexWidth\n    } else {\n      header.totalMinWidth = header.minWidth\n      header.totalWidth = Math.min(\n        Math.max(header.minWidth, header.width),\n        header.maxWidth\n      )\n      header.totalMaxWidth = header.maxWidth\n      header.totalFlexWidth = header.canResize ? header.totalWidth : 0\n    }\n    if (header.isVisible) {\n      left += header.totalWidth\n      sumTotalMinWidth += header.totalMinWidth\n      sumTotalWidth += header.totalWidth\n      sumTotalMaxWidth += header.totalMaxWidth\n      sumTotalFlexWidth += header.totalFlexWidth\n    }\n  })\n\n  return [sumTotalMinWidth, sumTotalWidth, sumTotalMaxWidth, sumTotalFlexWidth]\n}\n\nfunction accessRowsForColumn({\n  data,\n  rows,\n  flatRows,\n  rowsById,\n  column,\n  getRowId,\n  getSubRows,\n  accessValueHooks,\n  getInstance,\n}) {\n  // Access the row's data column-by-column\n  // We do it this way so we can incrementally add materialized\n  // columns after the first pass and avoid excessive looping\n  const accessRow = (originalRow, rowIndex, depth = 0, parent, parentRows) => {\n    // Keep the original reference around\n    const original = originalRow\n\n    const id = getRowId(originalRow, rowIndex, parent)\n\n    let row = rowsById[id]\n\n    // If the row hasn't been created, let's make it\n    if (!row) {\n      row = {\n        id,\n        original,\n        index: rowIndex,\n        depth,\n        cells: [{}], // This is a dummy cell\n      }\n\n      // Override common array functions (and the dummy cell's getCellProps function)\n      // to show an error if it is accessed without calling prepareRow\n      row.cells.map = unpreparedAccessWarning\n      row.cells.filter = unpreparedAccessWarning\n      row.cells.forEach = unpreparedAccessWarning\n      row.cells[0].getCellProps = unpreparedAccessWarning\n\n      // Create the cells and values\n      row.values = {}\n\n      // Push this row into the parentRows array\n      parentRows.push(row)\n      // Keep track of every row in a flat array\n      flatRows.push(row)\n      // Also keep track of every row by its ID\n      rowsById[id] = row\n\n      // Get the original subrows\n      row.originalSubRows = getSubRows(originalRow, rowIndex)\n\n      // Then recursively access them\n      if (row.originalSubRows) {\n        const subRows = []\n        row.originalSubRows.forEach((d, i) =>\n          accessRow(d, i, depth + 1, row, subRows)\n        )\n        // Keep the new subRows array on the row\n        row.subRows = subRows\n      }\n    } else if (row.subRows) {\n      // If the row exists, then it's already been accessed\n      // Keep recursing, but don't worry about passing the\n      // accumlator array (those rows already exist)\n      row.originalSubRows.forEach((d, i) => accessRow(d, i, depth + 1, row))\n    }\n\n    // If the column has an accessor, use it to get a value\n    if (column.accessor) {\n      row.values[column.id] = column.accessor(\n        originalRow,\n        rowIndex,\n        row,\n        parentRows,\n        data\n      )\n    }\n\n    // Allow plugins to manipulate the column value\n    row.values[column.id] = reduceHooks(\n      accessValueHooks,\n      row.values[column.id],\n      {\n        row,\n        column,\n        instance: getInstance(),\n      },\n      true\n    )\n  }\n\n  data.forEach((originalRow, rowIndex) =>\n    accessRow(originalRow, rowIndex, 0, undefined, rows)\n  )\n}\n","import React from 'react'\n\nimport { expandRows } from '../utils'\n\nimport {\n  useGetLatest,\n  actions,\n  useMountedLayoutEffect,\n  makePropGetter,\n  ensurePluginOrder,\n} from '../publicUtils'\n\n// Actions\nactions.resetExpanded = 'resetExpanded'\nactions.toggleRowExpanded = 'toggleRowExpanded'\nactions.toggleAllRowsExpanded = 'toggleAllRowsExpanded'\n\nexport const useExpanded = hooks => {\n  hooks.getToggleAllRowsExpandedProps = [defaultGetToggleAllRowsExpandedProps]\n  hooks.getToggleRowExpandedProps = [defaultGetToggleRowExpandedProps]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nconst defaultGetToggleAllRowsExpandedProps = (props, { instance }) => [\n  props,\n  {\n    onClick: e => {\n      instance.toggleAllRowsExpanded()\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    title: 'Toggle All Rows Expanded',\n  },\n]\n\nconst defaultGetToggleRowExpandedProps = (props, { row }) => [\n  props,\n  {\n    onClick: () => {\n      row.toggleRowExpanded()\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    title: 'Toggle Row Expanded',\n  },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      expanded: {},\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetExpanded) {\n    return {\n      ...state,\n      expanded: instance.initialState.expanded || {},\n    }\n  }\n\n  if (action.type === actions.toggleAllRowsExpanded) {\n    const { value } = action\n    const { rowsById } = instance\n\n    const isAllRowsExpanded =\n      Object.keys(rowsById).length === Object.keys(state.expanded).length\n\n    const expandAll = typeof value !== 'undefined' ? value : !isAllRowsExpanded\n\n    if (expandAll) {\n      const expanded = {}\n\n      Object.keys(rowsById).forEach(rowId => {\n        expanded[rowId] = true\n      })\n\n      return {\n        ...state,\n        expanded,\n      }\n    }\n\n    return {\n      ...state,\n      expanded: {},\n    }\n  }\n\n  if (action.type === actions.toggleRowExpanded) {\n    const { id, value: setExpanded } = action\n    const exists = state.expanded[id]\n\n    const shouldExist =\n      typeof setExpanded !== 'undefined' ? setExpanded : !exists\n\n    if (!exists && shouldExist) {\n      return {\n        ...state,\n        expanded: {\n          ...state.expanded,\n          [id]: true,\n        },\n      }\n    } else if (exists && !shouldExist) {\n      const { [id]: _, ...rest } = state.expanded\n      return {\n        ...state,\n        expanded: rest,\n      }\n    } else {\n      return state\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    rowsById,\n    manualExpandedKey = 'expanded',\n    paginateExpandedRows = true,\n    expandSubRows = true,\n    autoResetExpanded = true,\n    getHooks,\n    plugins,\n    state: { expanded },\n    dispatch,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useSortBy', 'useGroupBy', 'usePivotColumns', 'useGlobalFilter'],\n    'useExpanded'\n  )\n\n  const getAutoResetExpanded = useGetLatest(autoResetExpanded)\n\n  let isAllRowsExpanded = Boolean(\n    Object.keys(rowsById).length && Object.keys(expanded).length\n  )\n\n  if (isAllRowsExpanded) {\n    if (Object.keys(rowsById).some(id => !expanded[id])) {\n      isAllRowsExpanded = false\n    }\n  }\n\n  // Bypass any effects from firing when this changes\n  useMountedLayoutEffect(() => {\n    if (getAutoResetExpanded()) {\n      dispatch({ type: actions.resetExpanded })\n    }\n  }, [dispatch, data])\n\n  const toggleRowExpanded = React.useCallback(\n    (id, value) => {\n      dispatch({ type: actions.toggleRowExpanded, id, value })\n    },\n    [dispatch]\n  )\n\n  const toggleAllRowsExpanded = React.useCallback(\n    value => dispatch({ type: actions.toggleAllRowsExpanded, value }),\n    [dispatch]\n  )\n\n  const expandedRows = React.useMemo(() => {\n    if (paginateExpandedRows) {\n      return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n    }\n\n    return rows\n  }, [paginateExpandedRows, rows, manualExpandedKey, expanded, expandSubRows])\n\n  const expandedDepth = React.useMemo(() => findExpandedDepth(expanded), [\n    expanded,\n  ])\n\n  const getInstance = useGetLatest(instance)\n\n  const getToggleAllRowsExpandedProps = makePropGetter(\n    getHooks().getToggleAllRowsExpandedProps,\n    { instance: getInstance() }\n  )\n\n  Object.assign(instance, {\n    preExpandedRows: rows,\n    expandedRows,\n    rows: expandedRows,\n    expandedDepth,\n    isAllRowsExpanded,\n    toggleRowExpanded,\n    toggleAllRowsExpanded,\n    getToggleAllRowsExpandedProps,\n  })\n}\n\nfunction prepareRow(row, { instance: { getHooks }, instance }) {\n  row.toggleRowExpanded = set => instance.toggleRowExpanded(row.id, set)\n\n  row.getToggleRowExpandedProps = makePropGetter(\n    getHooks().getToggleRowExpandedProps,\n    {\n      instance,\n      row,\n    }\n  )\n}\n\nfunction findExpandedDepth(expanded) {\n  let maxDepth = 0\n\n  Object.keys(expanded).forEach(id => {\n    const splitId = id.split('.')\n    maxDepth = Math.max(maxDepth, splitId.length)\n  })\n\n  return maxDepth\n}\n","export const text = (rows, ids, filterValue) => {\n  rows = rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return String(rowValue)\n        .toLowerCase()\n        .includes(String(filterValue).toLowerCase())\n    })\n  })\n  return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue !== undefined\n        ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n        : true\n    })\n  })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue !== undefined\n        ? String(rowValue) === String(filterValue)\n        : true\n    })\n  })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue.includes(filterValue)\n    })\n  })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return (\n        rowValue &&\n        rowValue.length &&\n        filterValue.every(val => rowValue.includes(val))\n      )\n    })\n  })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const includesSome = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return (\n        rowValue &&\n        rowValue.length &&\n        filterValue.some(val => rowValue.includes(val))\n      )\n    })\n  })\n}\n\nincludesSome.autoRemove = val => !val || !val.length\n\nexport const includesValue = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return filterValue.includes(rowValue)\n    })\n  })\n}\n\nincludesValue.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue === filterValue\n    })\n  })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      // eslint-disable-next-line eqeqeq\n      return rowValue == filterValue\n    })\n  })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, ids, filterValue) => {\n  let [min, max] = filterValue || []\n\n  min = typeof min === 'number' ? min : -Infinity\n  max = typeof max === 'number' ? max : Infinity\n\n  if (min > max) {\n    const temp = min\n    min = max\n    max = temp\n  }\n\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue >= min && rowValue <= max\n    })\n  })\n}\n\nbetween.autoRemove = val =>\n  !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n","import React from 'react'\n\nimport {\n  getFirstDefined,\n  getFilterMethod,\n  shouldAutoRemoveFilter,\n} from '../utils'\n\nimport {\n  actions,\n  useGetLatest,\n  functionalUpdate,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetFilters = 'resetFilters'\nactions.setFilter = 'setFilter'\nactions.setAllFilters = 'setAllFilters'\n\nexport const useFilters = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      filters: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetFilters) {\n    return {\n      ...state,\n      filters: instance.initialState.filters || [],\n    }\n  }\n\n  if (action.type === actions.setFilter) {\n    const { columnId, filterValue } = action\n    const { allColumns, filterTypes: userFilterTypes } = instance\n\n    const column = allColumns.find(d => d.id === columnId)\n\n    if (!column) {\n      throw new Error(\n        `React-Table: Could not find a column with id: ${columnId}`\n      )\n    }\n\n    const filterMethod = getFilterMethod(\n      column.filter,\n      userFilterTypes || {},\n      filterTypes\n    )\n\n    const previousfilter = state.filters.find(d => d.id === columnId)\n\n    const newFilter = functionalUpdate(\n      filterValue,\n      previousfilter && previousfilter.value\n    )\n\n    //\n    if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter, column)) {\n      return {\n        ...state,\n        filters: state.filters.filter(d => d.id !== columnId),\n      }\n    }\n\n    if (previousfilter) {\n      return {\n        ...state,\n        filters: state.filters.map(d => {\n          if (d.id === columnId) {\n            return { id: columnId, value: newFilter }\n          }\n          return d\n        }),\n      }\n    }\n\n    return {\n      ...state,\n      filters: [...state.filters, { id: columnId, value: newFilter }],\n    }\n  }\n\n  if (action.type === actions.setAllFilters) {\n    const { filters } = action\n    const { allColumns, filterTypes: userFilterTypes } = instance\n\n    return {\n      ...state,\n      // Filter out undefined values\n      filters: functionalUpdate(filters, state.filters).filter(filter => {\n        const column = allColumns.find(d => d.id === filter.id)\n        const filterMethod = getFilterMethod(\n          column.filter,\n          userFilterTypes || {},\n          filterTypes\n        )\n\n        if (\n          shouldAutoRemoveFilter(filterMethod.autoRemove, filter.value, column)\n        ) {\n          return false\n        }\n        return true\n      }),\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    filterTypes: userFilterTypes,\n    manualFilters,\n    defaultCanFilter = false,\n    disableFilters,\n    state: { filters },\n    dispatch,\n    autoResetFilters = true,\n  } = instance\n\n  const setFilter = React.useCallback(\n    (columnId, filterValue) => {\n      dispatch({ type: actions.setFilter, columnId, filterValue })\n    },\n    [dispatch]\n  )\n\n  const setAllFilters = React.useCallback(\n    filters => {\n      dispatch({\n        type: actions.setAllFilters,\n        filters,\n      })\n    },\n    [dispatch]\n  )\n\n  allColumns.forEach(column => {\n    const {\n      id,\n      accessor,\n      defaultCanFilter: columnDefaultCanFilter,\n      disableFilters: columnDisableFilters,\n    } = column\n\n    // Determine if a column is filterable\n    column.canFilter = accessor\n      ? getFirstDefined(\n          columnDisableFilters === true ? false : undefined,\n          disableFilters === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(columnDefaultCanFilter, defaultCanFilter, false)\n\n    // Provide the column a way of updating the filter value\n    column.setFilter = val => setFilter(column.id, val)\n\n    // Provide the current filter value to the column for\n    // convenience\n    const found = filters.find(d => d.id === id)\n    column.filterValue = found && found.value\n  })\n\n  const [\n    filteredRows,\n    filteredFlatRows,\n    filteredRowsById,\n  ] = React.useMemo(() => {\n    if (manualFilters || !filters.length) {\n      return [rows, flatRows, rowsById]\n    }\n\n    const filteredFlatRows = []\n    const filteredRowsById = {}\n\n    // Filters top level and nested rows\n    const filterRows = (rows, depth = 0) => {\n      let filteredRows = rows\n\n      filteredRows = filters.reduce(\n        (filteredSoFar, { id: columnId, value: filterValue }) => {\n          // Find the filters column\n          const column = allColumns.find(d => d.id === columnId)\n\n          if (!column) {\n            return filteredSoFar\n          }\n\n          if (depth === 0) {\n            column.preFilteredRows = filteredSoFar\n          }\n\n          const filterMethod = getFilterMethod(\n            column.filter,\n            userFilterTypes || {},\n            filterTypes\n          )\n\n          if (!filterMethod) {\n            console.warn(\n              `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n            )\n            return filteredSoFar\n          }\n\n          // Pass the rows, id, filterValue and column to the filterMethod\n          // to get the filtered rows back\n          column.filteredRows = filterMethod(\n            filteredSoFar,\n            [columnId],\n            filterValue\n          )\n\n          return column.filteredRows\n        },\n        rows\n      )\n\n      // Apply the filter to any subRows\n      // We technically could do this recursively in the above loop,\n      // but that would severely hinder the API for the user, since they\n      // would be required to do that recursion in some scenarios\n      filteredRows.forEach(row => {\n        filteredFlatRows.push(row)\n        filteredRowsById[row.id] = row\n        if (!row.subRows) {\n          return\n        }\n\n        row.subRows =\n          row.subRows && row.subRows.length > 0\n            ? filterRows(row.subRows, depth + 1)\n            : row.subRows\n      })\n\n      return filteredRows\n    }\n\n    return [filterRows(rows), filteredFlatRows, filteredRowsById]\n  }, [\n    manualFilters,\n    filters,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    userFilterTypes,\n  ])\n\n  React.useMemo(() => {\n    // Now that each filtered column has it's partially filtered rows,\n    // lets assign the final filtered rows to all of the other columns\n    const nonFilteredColumns = allColumns.filter(\n      column => !filters.find(d => d.id === column.id)\n    )\n\n    // This essentially enables faceted filter options to be built easily\n    // using every column's preFilteredRows value\n    nonFilteredColumns.forEach(column => {\n      column.preFilteredRows = filteredRows\n      column.filteredRows = filteredRows\n    })\n  }, [filteredRows, filters, allColumns])\n\n  const getAutoResetFilters = useGetLatest(autoResetFilters)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetFilters()) {\n      dispatch({ type: actions.resetFilters })\n    }\n  }, [dispatch, manualFilters ? null : data])\n\n  Object.assign(instance, {\n    preFilteredRows: rows,\n    preFilteredFlatRows: flatRows,\n    preFilteredRowsById: rowsById,\n    filteredRows,\n    filteredFlatRows,\n    filteredRowsById,\n    rows: filteredRows,\n    flatRows: filteredFlatRows,\n    rowsById: filteredRowsById,\n    setFilter,\n    setAllFilters,\n  })\n}\n","import React from 'react'\n\nimport {\n  getFilterMethod,\n  shouldAutoRemoveFilter,\n  getFirstDefined,\n} from '../utils'\n\nimport {\n  actions,\n  useMountedLayoutEffect,\n  functionalUpdate,\n  useGetLatest,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetGlobalFilter = 'resetGlobalFilter'\nactions.setGlobalFilter = 'setGlobalFilter'\n\nexport const useGlobalFilter = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nuseGlobalFilter.pluginName = 'useGlobalFilter'\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.resetGlobalFilter) {\n    return {\n      ...state,\n      globalFilter: instance.initialState.globalFilter || undefined,\n    }\n  }\n\n  if (action.type === actions.setGlobalFilter) {\n    const { filterValue } = action\n    const { userFilterTypes } = instance\n\n    const filterMethod = getFilterMethod(\n      instance.globalFilter,\n      userFilterTypes || {},\n      filterTypes\n    )\n\n    const newFilter = functionalUpdate(filterValue, state.globalFilter)\n\n    //\n    if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter)) {\n      const { globalFilter, ...stateWithoutGlobalFilter } = state\n      return stateWithoutGlobalFilter\n    }\n\n    return {\n      ...state,\n      globalFilter: newFilter,\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    filterTypes: userFilterTypes,\n    globalFilter,\n    manualGlobalFilter,\n    state: { globalFilter: globalFilterValue },\n    dispatch,\n    autoResetGlobalFilter = true,\n    disableGlobalFilter,\n  } = instance\n\n  const setGlobalFilter = React.useCallback(\n    filterValue => {\n      dispatch({ type: actions.setGlobalFilter, filterValue })\n    },\n    [dispatch]\n  )\n\n  // TODO: Create a filter cache for incremental high speed multi-filtering\n  // This gets pretty complicated pretty fast, since you have to maintain a\n  // cache for each row group (top-level rows, and each row's recursive subrows)\n  // This would make multi-filtering a lot faster though. Too far?\n\n  const [\n    globalFilteredRows,\n    globalFilteredFlatRows,\n    globalFilteredRowsById,\n  ] = React.useMemo(() => {\n    if (manualGlobalFilter || typeof globalFilterValue === 'undefined') {\n      return [rows, flatRows, rowsById]\n    }\n\n    const filteredFlatRows = []\n    const filteredRowsById = {}\n\n    const filterMethod = getFilterMethod(\n      globalFilter,\n      userFilterTypes || {},\n      filterTypes\n    )\n\n    if (!filterMethod) {\n      console.warn(`Could not find a valid 'globalFilter' option.`)\n      return rows\n    }\n\n    allColumns.forEach(column => {\n      const { disableGlobalFilter: columnDisableGlobalFilter } = column\n\n      column.canFilter = getFirstDefined(\n        columnDisableGlobalFilter === true ? false : undefined,\n        disableGlobalFilter === true ? false : undefined,\n        true\n      )\n    })\n\n    const filterableColumns = allColumns.filter(c => c.canFilter === true)\n\n    // Filters top level and nested rows\n    const filterRows = filteredRows => {\n      filteredRows = filterMethod(\n        filteredRows,\n        filterableColumns.map(d => d.id),\n        globalFilterValue\n      )\n\n      filteredRows.forEach(row => {\n        filteredFlatRows.push(row)\n        filteredRowsById[row.id] = row\n\n        row.subRows =\n          row.subRows && row.subRows.length\n            ? filterRows(row.subRows)\n            : row.subRows\n      })\n\n      return filteredRows\n    }\n\n    return [filterRows(rows), filteredFlatRows, filteredRowsById]\n  }, [\n    manualGlobalFilter,\n    globalFilterValue,\n    globalFilter,\n    userFilterTypes,\n    allColumns,\n    rows,\n    flatRows,\n    rowsById,\n    disableGlobalFilter,\n  ])\n\n  const getAutoResetGlobalFilter = useGetLatest(autoResetGlobalFilter)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetGlobalFilter()) {\n      dispatch({ type: actions.resetGlobalFilter })\n    }\n  }, [dispatch, manualGlobalFilter ? null : data])\n\n  Object.assign(instance, {\n    preGlobalFilteredRows: rows,\n    preGlobalFilteredFlatRows: flatRows,\n    preGlobalFilteredRowsById: rowsById,\n    globalFilteredRows,\n    globalFilteredFlatRows,\n    globalFilteredRowsById,\n    rows: globalFilteredRows,\n    flatRows: globalFilteredFlatRows,\n    rowsById: globalFilteredRowsById,\n    setGlobalFilter,\n    disableGlobalFilter,\n  })\n}\n","export function sum(values, aggregatedValues) {\n  // It's faster to just add the aggregations together instead of\n  // process leaf nodes individually\n  return aggregatedValues.reduce(\n    (sum, next) => sum + (typeof next === 'number' ? next : 0),\n    0\n  )\n}\n\nexport function min(values) {\n  let min = values[0] || 0\n\n  values.forEach(value => {\n    if (typeof value === 'number') {\n      min = Math.min(min, value)\n    }\n  })\n\n  return min\n}\n\nexport function max(values) {\n  let max = values[0] || 0\n\n  values.forEach(value => {\n    if (typeof value === 'number') {\n      max = Math.max(max, value)\n    }\n  })\n\n  return max\n}\n\nexport function minMax(values) {\n  let min = values[0] || 0\n  let max = values[0] || 0\n\n  values.forEach(value => {\n    if (typeof value === 'number') {\n      min = Math.min(min, value)\n      max = Math.max(max, value)\n    }\n  })\n\n  return `${min}..${max}`\n}\n\nexport function average(values) {\n  return sum(null, values) / values.length\n}\n\nexport function median(values) {\n  if (!values.length) {\n    return null\n  }\n\n  const mid = Math.floor(values.length / 2)\n  const nums = [...values].sort((a, b) => a - b)\n  return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2\n}\n\nexport function unique(values) {\n  return Array.from(new Set(values).values())\n}\n\nexport function uniqueCount(values) {\n  return new Set(values).size\n}\n\nexport function count(values) {\n  return values.length\n}\n","import React from 'react'\n\nimport * as aggregations from '../aggregations'\n\nimport { getFirstDefined, flattenBy } from '../utils'\n\nimport {\n  actions,\n  makePropGetter,\n  ensurePluginOrder,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nconst emptyArray = []\nconst emptyObject = {}\n\n// Actions\nactions.resetGroupBy = 'resetGroupBy'\nactions.setGroupBy = 'setGroupBy'\nactions.toggleGroupBy = 'toggleGroupBy'\n\nexport const useGroupBy = hooks => {\n  hooks.getGroupByToggleProps = [defaultGetGroupByToggleProps]\n  hooks.stateReducers.push(reducer)\n  hooks.visibleColumnsDeps.push((deps, { instance }) => [\n    ...deps,\n    instance.state.groupBy,\n  ])\n  hooks.visibleColumns.push(visibleColumns)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nconst defaultGetGroupByToggleProps = (props, { header }) => [\n  props,\n  {\n    onClick: header.canGroupBy\n      ? e => {\n          e.persist()\n          header.toggleGroupBy()\n        }\n      : undefined,\n    style: {\n      cursor: header.canGroupBy ? 'pointer' : undefined,\n    },\n    title: 'Toggle GroupBy',\n  },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      groupBy: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetGroupBy) {\n    return {\n      ...state,\n      groupBy: instance.initialState.groupBy || [],\n    }\n  }\n\n  if (action.type === actions.setGroupBy) {\n    const { value } = action\n    return {\n      ...state,\n      groupBy: value,\n    }\n  }\n\n  if (action.type === actions.toggleGroupBy) {\n    const { columnId, value: setGroupBy } = action\n\n    const resolvedGroupBy =\n      typeof setGroupBy !== 'undefined'\n        ? setGroupBy\n        : !state.groupBy.includes(columnId)\n\n    if (resolvedGroupBy) {\n      return {\n        ...state,\n        groupBy: [...state.groupBy, columnId],\n      }\n    }\n\n    return {\n      ...state,\n      groupBy: state.groupBy.filter(d => d !== columnId),\n    }\n  }\n}\n\nfunction visibleColumns(\n  columns,\n  {\n    instance: {\n      state: { groupBy },\n    },\n  }\n) {\n  // Sort grouped columns to the start of the column list\n  // before the headers are built\n\n  const groupByColumns = groupBy\n    .map(g => columns.find(col => col.id === g))\n    .filter(Boolean)\n\n  const nonGroupByColumns = columns.filter(col => !groupBy.includes(col.id))\n\n  columns = [...groupByColumns, ...nonGroupByColumns]\n\n  columns.forEach(column => {\n    column.isGrouped = groupBy.includes(column.id)\n    column.groupedIndex = groupBy.indexOf(column.id)\n  })\n\n  return columns\n}\n\nconst defaultUserAggregations = {}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    flatHeaders,\n    groupByFn = defaultGroupByFn,\n    manualGroupBy,\n    aggregations: userAggregations = defaultUserAggregations,\n    plugins,\n    state: { groupBy },\n    dispatch,\n    autoResetGroupBy = true,\n    disableGroupBy,\n    defaultCanGroupBy,\n    getHooks,\n  } = instance\n\n  ensurePluginOrder(plugins, ['useColumnOrder', 'useFilters'], 'useGroupBy')\n\n  const getInstance = useGetLatest(instance)\n\n  allColumns.forEach(column => {\n    const {\n      accessor,\n      defaultGroupBy: defaultColumnGroupBy,\n      disableGroupBy: columnDisableGroupBy,\n    } = column\n\n    column.canGroupBy = accessor\n      ? getFirstDefined(\n          column.canGroupBy,\n          columnDisableGroupBy === true ? false : undefined,\n          disableGroupBy === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(\n          column.canGroupBy,\n          defaultColumnGroupBy,\n          defaultCanGroupBy,\n          false\n        )\n\n    if (column.canGroupBy) {\n      column.toggleGroupBy = () => instance.toggleGroupBy(column.id)\n    }\n\n    column.Aggregated = column.Aggregated || column.Cell\n  })\n\n  const toggleGroupBy = React.useCallback(\n    (columnId, value) => {\n      dispatch({ type: actions.toggleGroupBy, columnId, value })\n    },\n    [dispatch]\n  )\n\n  const setGroupBy = React.useCallback(\n    value => {\n      dispatch({ type: actions.setGroupBy, value })\n    },\n    [dispatch]\n  )\n\n  flatHeaders.forEach(header => {\n    header.getGroupByToggleProps = makePropGetter(\n      getHooks().getGroupByToggleProps,\n      { instance: getInstance(), header }\n    )\n  })\n\n  const [\n    groupedRows,\n    groupedFlatRows,\n    groupedRowsById,\n    onlyGroupedFlatRows,\n    onlyGroupedRowsById,\n    nonGroupedFlatRows,\n    nonGroupedRowsById,\n  ] = React.useMemo(() => {\n    if (manualGroupBy || !groupBy.length) {\n      return [\n        rows,\n        flatRows,\n        rowsById,\n        emptyArray,\n        emptyObject,\n        flatRows,\n        rowsById,\n      ]\n    }\n\n    // Ensure that the list of filtered columns exist\n    const existingGroupBy = groupBy.filter(g =>\n      allColumns.find(col => col.id === g)\n    )\n\n    // Find the columns that can or are aggregating\n    // Uses each column to aggregate rows into a single value\n    const aggregateRowsToValues = (leafRows, groupedRows, depth) => {\n      const values = {}\n\n      allColumns.forEach(column => {\n        // Don't aggregate columns that are in the groupBy\n        if (existingGroupBy.includes(column.id)) {\n          values[column.id] = groupedRows[0]\n            ? groupedRows[0].values[column.id]\n            : null\n          return\n        }\n\n        // Aggregate the values\n        let aggregateFn =\n          typeof column.aggregate === 'function'\n            ? column.aggregate\n            : userAggregations[column.aggregate] ||\n              aggregations[column.aggregate]\n\n        if (aggregateFn) {\n          // Get the columnValues to aggregate\n          const groupedValues = groupedRows.map(row => row.values[column.id])\n\n          // Get the columnValues to aggregate\n          const leafValues = leafRows.map(row => {\n            let columnValue = row.values[column.id]\n\n            if (!depth && column.aggregateValue) {\n              const aggregateValueFn =\n                typeof column.aggregateValue === 'function'\n                  ? column.aggregateValue\n                  : userAggregations[column.aggregateValue] ||\n                    aggregations[column.aggregateValue]\n\n              if (!aggregateValueFn) {\n                console.info({ column })\n                throw new Error(\n                  `React Table: Invalid column.aggregateValue option for column listed above`\n                )\n              }\n\n              columnValue = aggregateValueFn(columnValue, row, column)\n            }\n            return columnValue\n          })\n\n          values[column.id] = aggregateFn(leafValues, groupedValues)\n        } else if (column.aggregate) {\n          console.info({ column })\n          throw new Error(\n            `React Table: Invalid column.aggregate option for column listed above`\n          )\n        } else {\n          values[column.id] = null\n        }\n      })\n\n      return values\n    }\n\n    let groupedFlatRows = []\n    const groupedRowsById = {}\n    const onlyGroupedFlatRows = []\n    const onlyGroupedRowsById = {}\n    const nonGroupedFlatRows = []\n    const nonGroupedRowsById = {}\n\n    // Recursively group the data\n    const groupUpRecursively = (rows, depth = 0, parentId) => {\n      // This is the last level, just return the rows\n      if (depth === existingGroupBy.length) {\n        return rows.map((row) => ({ ...row, depth }))\n      }\n\n      const columnId = existingGroupBy[depth]\n\n      // Group the rows together for this level\n      let rowGroupsMap = groupByFn(rows, columnId)\n\n      // Peform aggregations for each group\n      const aggregatedGroupedRows = Object.entries(rowGroupsMap).map(\n        ([groupByVal, groupedRows], index) => {\n          let id = `${columnId}:${groupByVal}`\n          id = parentId ? `${parentId}>${id}` : id\n\n          // First, Recurse to group sub rows before aggregation\n          const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n          // Flatten the leaf rows of the rows in this group\n          const leafRows = depth\n            ? flattenBy(groupedRows, 'leafRows')\n            : groupedRows\n\n          const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n          const row = {\n            id,\n            isGrouped: true,\n            groupByID: columnId,\n            groupByVal,\n            values,\n            subRows,\n            leafRows,\n            depth,\n            index,\n          }\n\n          subRows.forEach(subRow => {\n            groupedFlatRows.push(subRow)\n            groupedRowsById[subRow.id] = subRow\n            if (subRow.isGrouped) {\n              onlyGroupedFlatRows.push(subRow)\n              onlyGroupedRowsById[subRow.id] = subRow\n            } else {\n              nonGroupedFlatRows.push(subRow)\n              nonGroupedRowsById[subRow.id] = subRow\n            }\n          })\n\n          return row\n        }\n      )\n\n      return aggregatedGroupedRows\n    }\n\n    const groupedRows = groupUpRecursively(rows)\n\n    groupedRows.forEach(subRow => {\n      groupedFlatRows.push(subRow)\n      groupedRowsById[subRow.id] = subRow\n      if (subRow.isGrouped) {\n        onlyGroupedFlatRows.push(subRow)\n        onlyGroupedRowsById[subRow.id] = subRow\n      } else {\n        nonGroupedFlatRows.push(subRow)\n        nonGroupedRowsById[subRow.id] = subRow\n      }\n    })\n\n    // Assign the new data\n    return [\n      groupedRows,\n      groupedFlatRows,\n      groupedRowsById,\n      onlyGroupedFlatRows,\n      onlyGroupedRowsById,\n      nonGroupedFlatRows,\n      nonGroupedRowsById,\n    ]\n  }, [\n    manualGroupBy,\n    groupBy,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    userAggregations,\n    groupByFn,\n  ])\n\n  const getAutoResetGroupBy = useGetLatest(autoResetGroupBy)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetGroupBy()) {\n      dispatch({ type: actions.resetGroupBy })\n    }\n  }, [dispatch, manualGroupBy ? null : data])\n\n  Object.assign(instance, {\n    preGroupedRows: rows,\n    preGroupedFlatRow: flatRows,\n    preGroupedRowsById: rowsById,\n    groupedRows,\n    groupedFlatRows,\n    groupedRowsById,\n    onlyGroupedFlatRows,\n    onlyGroupedRowsById,\n    nonGroupedFlatRows,\n    nonGroupedRowsById,\n    rows: groupedRows,\n    flatRows: groupedFlatRows,\n    rowsById: groupedRowsById,\n    toggleGroupBy,\n    setGroupBy,\n  })\n}\n\nfunction prepareRow(row) {\n  row.allCells.forEach(cell => {\n    // Grouped cells are in the groupBy and the pivot cell for the row\n    cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n    // Placeholder cells are any columns in the groupBy that are not grouped\n    cell.isPlaceholder = !cell.isGrouped && cell.column.isGrouped\n    // Aggregated cells are not grouped, not repeated, but still have subRows\n    cell.isAggregated =\n      !cell.isGrouped && !cell.isPlaceholder && row.subRows?.length\n  })\n}\n\nexport function defaultGroupByFn(rows, columnId) {\n  return rows.reduce((prev, row, i) => {\n    // TODO: Might want to implement a key serializer here so\n    // irregular column values can still be grouped if needed?\n    const resKey = `${row.values[columnId]}`\n    prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n    prev[resKey].push(row)\n    return prev\n  }, {})\n}\n","const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnId) => {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  // Force to strings (or \"\" for unsupported types)\n  a = toString(a)\n  b = toString(b)\n\n  // Split on number groups, but keep the delimiter\n  // Then remove falsey split values\n  a = a.split(reSplitAlphaNumeric).filter(Boolean)\n  b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n  // While\n  while (a.length && b.length) {\n    let aa = a.shift()\n    let bb = b.shift()\n\n    const an = parseInt(aa, 10)\n    const bn = parseInt(bb, 10)\n\n    const combo = [an, bn].sort()\n\n    // Both are string\n    if (isNaN(combo[0])) {\n      if (aa > bb) {\n        return 1\n      }\n      if (bb > aa) {\n        return -1\n      }\n      continue\n    }\n\n    // One is a string, one is a number\n    if (isNaN(combo[1])) {\n      return isNaN(an) ? -1 : 1\n    }\n\n    // Both are numbers\n    if (an > bn) {\n      return 1\n    }\n    if (bn > an) {\n      return -1\n    }\n  }\n\n  return a.length - b.length\n}\nexport function datetime(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  a = a.getTime()\n  b = b.getTime()\n\n  return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  return compareBasic(a, b)\n}\n\nexport function string(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  a = a.split('').filter(Boolean)\n  b = b.split('').filter(Boolean)\n\n  while (a.length && b.length) {\n    let aa = a.shift()\n    let bb = b.shift()\n\n    let alower = aa.toLowerCase()\n    let blower = bb.toLowerCase()\n\n    // Case insensitive comparison until characters match\n    if (alower > blower) {\n      return 1\n    }\n    if (blower > alower) {\n      return -1\n    }\n    // If lowercase characters are identical\n    if (aa > bb) {\n      return 1\n    }\n    if (bb > aa) {\n      return -1\n    }\n    continue\n  }\n\n  return a.length - b.length\n}\n\nexport function number(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  const replaceNonNumeric = /[^0-9.]/gi\n\n  a = Number(String(a).replace(replaceNonNumeric, ''))\n  b = Number(String(b).replace(replaceNonNumeric, ''))\n\n  return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n  return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValuesByColumnID(row1, row2, columnId) {\n  return [row1.values[columnId], row2.values[columnId]]\n}\n\nfunction toString(a) {\n  if (typeof a === 'number') {\n    if (isNaN(a) || a === Infinity || a === -Infinity) {\n      return ''\n    }\n    return String(a)\n  }\n  if (typeof a === 'string') {\n    return a\n  }\n  return ''\n}\n","import React from 'react'\n\nimport {\n  actions,\n  ensurePluginOrder,\n  defaultColumn,\n  makePropGetter,\n  useGetLatest,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, isFunction } from '../utils'\n\nimport * as sortTypes from '../sortTypes'\n\n// Actions\nactions.resetSortBy = 'resetSortBy'\nactions.setSortBy = 'setSortBy'\nactions.toggleSortBy = 'toggleSortBy'\nactions.clearSortBy = 'clearSortBy'\n\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\nexport const useSortBy = hooks => {\n  hooks.getSortByToggleProps = [defaultGetSortByToggleProps]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nconst defaultGetSortByToggleProps = (props, { instance, column }) => {\n  const { isMultiSortEvent = e => e.shiftKey } = instance\n\n  return [\n    props,\n    {\n      onClick: column.canSort\n        ? e => {\n            e.persist()\n            column.toggleSortBy(\n              undefined,\n              !instance.disableMultiSort && isMultiSortEvent(e)\n            )\n          }\n        : undefined,\n      style: {\n        cursor: column.canSort ? 'pointer' : undefined,\n      },\n      title: column.canSort ? 'Toggle SortBy' : undefined,\n    },\n  ]\n}\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      sortBy: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetSortBy) {\n    return {\n      ...state,\n      sortBy: instance.initialState.sortBy || [],\n    }\n  }\n\n  if (action.type === actions.clearSortBy) {\n    const { sortBy } = state\n    const newSortBy = sortBy.filter(d => d.id !== action.columnId)\n\n    return {\n      ...state,\n      sortBy: newSortBy,\n    }\n  }\n\n  if (action.type === actions.setSortBy) {\n    const { sortBy } = action\n    return {\n      ...state,\n      sortBy,\n    }\n  }\n\n  if (action.type === actions.toggleSortBy) {\n    const { columnId, desc, multi } = action\n\n    const {\n      allColumns,\n      disableMultiSort,\n      disableSortRemove,\n      disableMultiRemove,\n      maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n    } = instance\n\n    const { sortBy } = state\n\n    // Find the column for this columnId\n    const column = allColumns.find(d => d.id === columnId)\n    const { sortDescFirst } = column\n\n    // Find any existing sortBy for this column\n    const existingSortBy = sortBy.find(d => d.id === columnId)\n    const existingIndex = sortBy.findIndex(d => d.id === columnId)\n    const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n    let newSortBy = []\n\n    // What should we do with this sort action?\n    let sortAction\n\n    if (!disableMultiSort && multi) {\n      if (existingSortBy) {\n        sortAction = 'toggle'\n      } else {\n        sortAction = 'add'\n      }\n    } else {\n      // Normal mode\n      if (existingIndex !== sortBy.length - 1 || sortBy.length !== 1) {\n        sortAction = 'replace'\n      } else if (existingSortBy) {\n        sortAction = 'toggle'\n      } else {\n        sortAction = 'replace'\n      }\n    }\n\n    // Handle toggle states that will remove the sortBy\n    if (\n      sortAction === 'toggle' && // Must be toggling\n      !disableSortRemove && // If disableSortRemove, disable in general\n      !hasDescDefined && // Must not be setting desc\n      (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n      ((existingSortBy && // Finally, detect if it should indeed be removed\n        existingSortBy.desc &&\n        !sortDescFirst) ||\n        (!existingSortBy.desc && sortDescFirst))\n    ) {\n      sortAction = 'remove'\n    }\n\n    if (sortAction === 'replace') {\n      newSortBy = [\n        {\n          id: columnId,\n          desc: hasDescDefined ? desc : sortDescFirst,\n        },\n      ]\n    } else if (sortAction === 'add') {\n      newSortBy = [\n        ...sortBy,\n        {\n          id: columnId,\n          desc: hasDescDefined ? desc : sortDescFirst,\n        },\n      ]\n      // Take latest n columns\n      newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n    } else if (sortAction === 'toggle') {\n      // This flips (or sets) the\n      newSortBy = sortBy.map(d => {\n        if (d.id === columnId) {\n          return {\n            ...d,\n            desc: hasDescDefined ? desc : !existingSortBy.desc,\n          }\n        }\n        return d\n      })\n    } else if (sortAction === 'remove') {\n      newSortBy = sortBy.filter(d => d.id !== columnId)\n    }\n\n    return {\n      ...state,\n      sortBy: newSortBy,\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    allColumns,\n    orderByFn = defaultOrderByFn,\n    sortTypes: userSortTypes,\n    manualSortBy,\n    defaultCanSort,\n    disableSortBy,\n    flatHeaders,\n    state: { sortBy },\n    dispatch,\n    plugins,\n    getHooks,\n    autoResetSortBy = true,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useFilters', 'useGlobalFilter', 'useGroupBy', 'usePivotColumns'],\n    'useSortBy'\n  )\n\n  const setSortBy = React.useCallback(\n    sortBy => {\n      dispatch({ type: actions.setSortBy, sortBy })\n    },\n    [dispatch]\n  )\n\n  // Updates sorting based on a columnId, desc flag and multi flag\n  const toggleSortBy = React.useCallback(\n    (columnId, desc, multi) => {\n      dispatch({ type: actions.toggleSortBy, columnId, desc, multi })\n    },\n    [dispatch]\n  )\n\n  // use reference to avoid memory leak in #1608\n  const getInstance = useGetLatest(instance)\n\n  // Add the getSortByToggleProps method to columns and headers\n  flatHeaders.forEach(column => {\n    const {\n      accessor,\n      canSort: defaultColumnCanSort,\n      disableSortBy: columnDisableSortBy,\n      id,\n    } = column\n\n    const canSort = accessor\n      ? getFirstDefined(\n          columnDisableSortBy === true ? false : undefined,\n          disableSortBy === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(defaultCanSort, defaultColumnCanSort, false)\n\n    column.canSort = canSort\n\n    if (column.canSort) {\n      column.toggleSortBy = (desc, multi) =>\n        toggleSortBy(column.id, desc, multi)\n\n      column.clearSortBy = () => {\n        dispatch({ type: actions.clearSortBy, columnId: column.id })\n      }\n    }\n\n    column.getSortByToggleProps = makePropGetter(\n      getHooks().getSortByToggleProps,\n      {\n        instance: getInstance(),\n        column,\n      }\n    )\n\n    const columnSort = sortBy.find(d => d.id === id)\n    column.isSorted = !!columnSort\n    column.sortedIndex = sortBy.findIndex(d => d.id === id)\n    column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n  })\n\n  const [sortedRows, sortedFlatRows] = React.useMemo(() => {\n    if (manualSortBy || !sortBy.length) {\n      return [rows, flatRows]\n    }\n\n    const sortedFlatRows = []\n\n    // Filter out sortBys that correspond to non existing columns\n    const availableSortBy = sortBy.filter(sort =>\n      allColumns.find(col => col.id === sort.id)\n    )\n\n    const sortData = rows => {\n      // Use the orderByFn to compose multiple sortBy's together.\n      // This will also perform a stable sorting using the row index\n      // if needed.\n      const sortedData = orderByFn(\n        rows,\n        availableSortBy.map(sort => {\n          // Support custom sorting methods for each column\n          const column = allColumns.find(d => d.id === sort.id)\n\n          if (!column) {\n            throw new Error(\n              `React-Table: Could not find a column with id: ${sort.id} while sorting`\n            )\n          }\n\n          const { sortType } = column\n\n          // Look up sortBy functions in this order:\n          // column function\n          // column string lookup on user sortType\n          // column string lookup on built-in sortType\n          // default function\n          // default string lookup on user sortType\n          // default string lookup on built-in sortType\n          const sortMethod =\n            isFunction(sortType) ||\n            (userSortTypes || {})[sortType] ||\n            sortTypes[sortType]\n\n          if (!sortMethod) {\n            throw new Error(\n              `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n            )\n          }\n\n          // Return the correct sortFn.\n          // This function should always return in ascending order\n          return (a, b) => sortMethod(a, b, sort.id, sort.desc)\n        }),\n        // Map the directions\n        availableSortBy.map(sort => {\n          // Detect and use the sortInverted option\n          const column = allColumns.find(d => d.id === sort.id)\n\n          if (column && column.sortInverted) {\n            return sort.desc\n          }\n\n          return !sort.desc\n        })\n      )\n\n      // If there are sub-rows, sort them\n      sortedData.forEach(row => {\n        sortedFlatRows.push(row)\n        if (!row.subRows || row.subRows.length === 0) {\n          return\n        }\n        row.subRows = sortData(row.subRows)\n      })\n\n      return sortedData\n    }\n\n    return [sortData(rows), sortedFlatRows]\n  }, [\n    manualSortBy,\n    sortBy,\n    rows,\n    flatRows,\n    allColumns,\n    orderByFn,\n    userSortTypes,\n  ])\n\n  const getAutoResetSortBy = useGetLatest(autoResetSortBy)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetSortBy()) {\n      dispatch({ type: actions.resetSortBy })\n    }\n  }, [manualSortBy ? null : data])\n\n  Object.assign(instance, {\n    preSortedRows: rows,\n    preSortedFlatRows: flatRows,\n    sortedRows,\n    sortedFlatRows,\n    rows: sortedRows,\n    flatRows: sortedFlatRows,\n    setSortBy,\n    toggleSortBy,\n  })\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n  return [...arr].sort((rowA, rowB) => {\n    for (let i = 0; i < funcs.length; i += 1) {\n      const sortFn = funcs[i]\n      const desc = dirs[i] === false || dirs[i] === 'desc'\n      const sortInt = sortFn(rowA, rowB)\n      if (sortInt !== 0) {\n        return desc ? -sortInt : sortInt\n      }\n    }\n    return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n  })\n}\n","import React from 'react'\n\n//\n\nimport {\n  actions,\n  ensurePluginOrder,\n  functionalUpdate,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nimport { expandRows } from '../utils'\n\nconst pluginName = 'usePagination'\n\n// Actions\nactions.resetPage = 'resetPage'\nactions.gotoPage = 'gotoPage'\nactions.setPageSize = 'setPageSize'\n\nexport const usePagination = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nusePagination.pluginName = pluginName\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      pageSize: 10,\n      pageIndex: 0,\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetPage) {\n    return {\n      ...state,\n      pageIndex: instance.initialState.pageIndex || 0,\n    }\n  }\n\n  if (action.type === actions.gotoPage) {\n    const { pageCount, page } = instance\n    const newPageIndex = functionalUpdate(action.pageIndex, state.pageIndex)\n    let canNavigate = false\n\n    if (newPageIndex > state.pageIndex) {\n      // next page\n      canNavigate =\n        pageCount === -1\n          ? page.length >= state.pageSize\n          : newPageIndex < pageCount\n    } else if (newPageIndex < state.pageIndex) {\n      // prev page\n      canNavigate = newPageIndex > -1\n    }\n\n    if (!canNavigate) {\n      return state\n    }\n\n    return {\n      ...state,\n      pageIndex: newPageIndex,\n    }\n  }\n\n  if (action.type === actions.setPageSize) {\n    const { pageSize } = action\n    const topRowIndex = state.pageSize * state.pageIndex\n    const pageIndex = Math.floor(topRowIndex / pageSize)\n\n    return {\n      ...state,\n      pageIndex,\n      pageSize,\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    rows,\n    autoResetPage = true,\n    manualExpandedKey = 'expanded',\n    plugins,\n    pageCount: userPageCount,\n    paginateExpandedRows = true,\n    expandSubRows = true,\n    state: {\n      pageSize,\n      pageIndex,\n      expanded,\n      globalFilter,\n      filters,\n      groupBy,\n      sortBy,\n    },\n    dispatch,\n    data,\n    manualPagination,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useGlobalFilter', 'useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n    'usePagination'\n  )\n\n  const getAutoResetPage = useGetLatest(autoResetPage)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetPage()) {\n      dispatch({ type: actions.resetPage })\n    }\n  }, [\n    dispatch,\n    manualPagination ? null : data,\n    globalFilter,\n    filters,\n    groupBy,\n    sortBy,\n  ])\n\n  const pageCount = manualPagination\n    ? userPageCount\n    : Math.ceil(rows.length / pageSize)\n\n  const pageOptions = React.useMemo(\n    () =>\n      pageCount > 0\n        ? [...new Array(pageCount)].fill(null).map((d, i) => i)\n        : [],\n    [pageCount]\n  )\n\n  const page = React.useMemo(() => {\n    let page\n\n    if (manualPagination) {\n      page = rows\n    } else {\n      const pageStart = pageSize * pageIndex\n      const pageEnd = pageStart + pageSize\n\n      page = rows.slice(pageStart, pageEnd)\n    }\n\n    if (paginateExpandedRows) {\n      return page\n    }\n\n    return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n  }, [\n    expandSubRows,\n    expanded,\n    manualExpandedKey,\n    manualPagination,\n    pageIndex,\n    pageSize,\n    paginateExpandedRows,\n    rows,\n  ])\n\n  const canPreviousPage = pageIndex > 0\n  const canNextPage =\n    pageCount === -1 ? page.length >= pageSize : pageIndex < pageCount - 1\n\n  const gotoPage = React.useCallback(\n    pageIndex => {\n      dispatch({ type: actions.gotoPage, pageIndex })\n    },\n    [dispatch]\n  )\n\n  const previousPage = React.useCallback(() => {\n    return gotoPage(old => old - 1)\n  }, [gotoPage])\n\n  const nextPage = React.useCallback(() => {\n    return gotoPage(old => old + 1)\n  }, [gotoPage])\n\n  const setPageSize = React.useCallback(\n    pageSize => {\n      dispatch({ type: actions.setPageSize, pageSize })\n    },\n    [dispatch]\n  )\n\n  Object.assign(instance, {\n    pageOptions,\n    pageCount,\n    page,\n    canPreviousPage,\n    canNextPage,\n    gotoPage,\n    previousPage,\n    nextPage,\n    setPageSize,\n  })\n}\n","/* istanbul ignore file */\n\nimport {\n  actions,\n  makePropGetter,\n  ensurePluginOrder,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nimport { flattenColumns, getFirstDefined } from '../utils'\n\n// Actions\nactions.resetPivot = 'resetPivot'\nactions.togglePivot = 'togglePivot'\n\nexport const _UNSTABLE_usePivotColumns = hooks => {\n  hooks.getPivotToggleProps = [defaultGetPivotToggleProps]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstanceAfterData.push(useInstanceAfterData)\n  hooks.allColumns.push(allColumns)\n  hooks.accessValue.push(accessValue)\n  hooks.materializedColumns.push(materializedColumns)\n  hooks.materializedColumnsDeps.push(materializedColumnsDeps)\n  hooks.visibleColumns.push(visibleColumns)\n  hooks.visibleColumnsDeps.push(visibleColumnsDeps)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\n_UNSTABLE_usePivotColumns.pluginName = 'usePivotColumns'\n\nconst defaultPivotColumns = []\n\nconst defaultGetPivotToggleProps = (props, { header }) => [\n  props,\n  {\n    onClick: header.canPivot\n      ? e => {\n          e.persist()\n          header.togglePivot()\n        }\n      : undefined,\n    style: {\n      cursor: header.canPivot ? 'pointer' : undefined,\n    },\n    title: 'Toggle Pivot',\n  },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      pivotColumns: defaultPivotColumns,\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetPivot) {\n    return {\n      ...state,\n      pivotColumns: instance.initialState.pivotColumns || defaultPivotColumns,\n    }\n  }\n\n  if (action.type === actions.togglePivot) {\n    const { columnId, value: setPivot } = action\n\n    const resolvedPivot =\n      typeof setPivot !== 'undefined'\n        ? setPivot\n        : !state.pivotColumns.includes(columnId)\n\n    if (resolvedPivot) {\n      return {\n        ...state,\n        pivotColumns: [...state.pivotColumns, columnId],\n      }\n    }\n\n    return {\n      ...state,\n      pivotColumns: state.pivotColumns.filter(d => d !== columnId),\n    }\n  }\n}\n\nfunction useInstanceAfterData(instance) {\n  instance.allColumns.forEach(column => {\n    column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n  })\n}\n\nfunction allColumns(columns, { instance }) {\n  columns.forEach(column => {\n    column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n    column.uniqueValues = new Set()\n  })\n  return columns\n}\n\nfunction accessValue(value, { column }) {\n  if (column.uniqueValues && typeof value !== 'undefined') {\n    column.uniqueValues.add(value)\n  }\n  return value\n}\n\nfunction materializedColumns(materialized, { instance }) {\n  const { allColumns, state } = instance\n\n  if (!state.pivotColumns.length || !state.groupBy || !state.groupBy.length) {\n    return materialized\n  }\n\n  const pivotColumns = state.pivotColumns\n    .map(id => allColumns.find(d => d.id === id))\n    .filter(Boolean)\n\n  const sourceColumns = allColumns.filter(\n    d =>\n      !d.isPivotSource &&\n      !state.groupBy.includes(d.id) &&\n      !state.pivotColumns.includes(d.id)\n  )\n\n  const buildPivotColumns = (depth = 0, parent, pivotFilters = []) => {\n    const pivotColumn = pivotColumns[depth]\n\n    if (!pivotColumn) {\n      return sourceColumns.map(sourceColumn => {\n        // TODO: We could offer support here for renesting pivoted\n        // columns inside copies of their header groups. For now,\n        // that seems like it would be (1) overkill on nesting, considering\n        // you already get nesting for every pivot level and (2)\n        // really hard. :)\n\n        return {\n          ...sourceColumn,\n          canPivot: false,\n          isPivoted: true,\n          parent,\n          depth: depth,\n          id: `${parent ? `${parent.id}.${sourceColumn.id}` : sourceColumn.id}`,\n          accessor: (originalRow, i, row) => {\n            if (pivotFilters.every(filter => filter(row))) {\n              return row.values[sourceColumn.id]\n            }\n          },\n        }\n      })\n    }\n\n    const uniqueValues = Array.from(pivotColumn.uniqueValues).sort()\n\n    return uniqueValues.map(uniqueValue => {\n      const columnGroup = {\n        ...pivotColumn,\n        Header:\n          pivotColumn.PivotHeader || typeof pivotColumn.header === 'string'\n            ? `${pivotColumn.Header}: ${uniqueValue}`\n            : uniqueValue,\n        isPivotGroup: true,\n        parent,\n        depth,\n        id: parent\n          ? `${parent.id}.${pivotColumn.id}.${uniqueValue}`\n          : `${pivotColumn.id}.${uniqueValue}`,\n        pivotValue: uniqueValue,\n      }\n\n      columnGroup.columns = buildPivotColumns(depth + 1, columnGroup, [\n        ...pivotFilters,\n        row => row.values[pivotColumn.id] === uniqueValue,\n      ])\n\n      return columnGroup\n    })\n  }\n\n  const newMaterialized = flattenColumns(buildPivotColumns())\n\n  return [...materialized, ...newMaterialized]\n}\n\nfunction materializedColumnsDeps(\n  deps,\n  {\n    instance: {\n      state: { pivotColumns, groupBy },\n    },\n  }\n) {\n  return [...deps, pivotColumns, groupBy]\n}\n\nfunction visibleColumns(visibleColumns, { instance: { state } }) {\n  visibleColumns = visibleColumns.filter(d => !d.isPivotSource)\n\n  if (state.pivotColumns.length && state.groupBy && state.groupBy.length) {\n    visibleColumns = visibleColumns.filter(\n      column => column.isGrouped || column.isPivoted\n    )\n  }\n\n  return visibleColumns\n}\n\nfunction visibleColumnsDeps(deps, { instance }) {\n  return [...deps, instance.state.pivotColumns, instance.state.groupBy]\n}\n\nfunction useInstance(instance) {\n  const {\n    columns,\n    allColumns,\n    flatHeaders,\n    // pivotFn = defaultPivotFn,\n    // manualPivot,\n    getHooks,\n    plugins,\n    dispatch,\n    autoResetPivot = true,\n    manaulPivot,\n    disablePivot,\n    defaultCanPivot,\n  } = instance\n\n  ensurePluginOrder(plugins, ['useGroupBy'], 'usePivotColumns')\n\n  const getInstance = useGetLatest(instance)\n\n  allColumns.forEach(column => {\n    const {\n      accessor,\n      defaultPivot: defaultColumnPivot,\n      disablePivot: columnDisablePivot,\n    } = column\n\n    column.canPivot = accessor\n      ? getFirstDefined(\n          column.canPivot,\n          columnDisablePivot === true ? false : undefined,\n          disablePivot === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(\n          column.canPivot,\n          defaultColumnPivot,\n          defaultCanPivot,\n          false\n        )\n\n    if (column.canPivot) {\n      column.togglePivot = () => instance.togglePivot(column.id)\n    }\n\n    column.Aggregated = column.Aggregated || column.Cell\n  })\n\n  const togglePivot = (columnId, value) => {\n    dispatch({ type: actions.togglePivot, columnId, value })\n  }\n\n  flatHeaders.forEach(header => {\n    header.getPivotToggleProps = makePropGetter(\n      getHooks().getPivotToggleProps,\n      {\n        instance: getInstance(),\n        header,\n      }\n    )\n  })\n\n  const getAutoResetPivot = useGetLatest(autoResetPivot)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetPivot()) {\n      dispatch({ type: actions.resetPivot })\n    }\n  }, [dispatch, manaulPivot ? null : columns])\n\n  Object.assign(instance, {\n    togglePivot,\n  })\n}\n\nfunction prepareRow(row) {\n  row.allCells.forEach(cell => {\n    // Grouped cells are in the pivotColumns and the pivot cell for the row\n    cell.isPivoted = cell.column.isPivoted\n  })\n}\n","import React from 'react'\n\nimport {\n  actions,\n  makePropGetter,\n  ensurePluginOrder,\n  useGetLatest,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nconst pluginName = 'useRowSelect'\n\n// Actions\nactions.resetSelectedRows = 'resetSelectedRows'\nactions.toggleAllRowsSelected = 'toggleAllRowsSelected'\nactions.toggleRowSelected = 'toggleRowSelected'\nactions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected'\n\nexport const useRowSelect = hooks => {\n  hooks.getToggleRowSelectedProps = [defaultGetToggleRowSelectedProps]\n  hooks.getToggleAllRowsSelectedProps = [defaultGetToggleAllRowsSelectedProps]\n  hooks.getToggleAllPageRowsSelectedProps = [\n    defaultGetToggleAllPageRowsSelectedProps,\n  ]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseRowSelect.pluginName = pluginName\n\nconst defaultGetToggleRowSelectedProps = (props, { instance, row }) => {\n  const { manualRowSelectedKey = 'isSelected' } = instance\n  let checked = false\n\n  if (row.original && row.original[manualRowSelectedKey]) {\n    checked = true\n  } else {\n    checked = row.isSelected\n  }\n\n  return [\n    props,\n    {\n      onChange: e => {\n        row.toggleRowSelected(e.target.checked)\n      },\n      style: {\n        cursor: 'pointer',\n      },\n      checked,\n      title: 'Toggle Row Selected',\n      indeterminate: row.isSomeSelected,\n    },\n  ]\n}\n\nconst defaultGetToggleAllRowsSelectedProps = (props, { instance }) => [\n  props,\n  {\n    onChange: e => {\n      instance.toggleAllRowsSelected(e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: instance.isAllRowsSelected,\n    title: 'Toggle All Rows Selected',\n    indeterminate: Boolean(\n      !instance.isAllRowsSelected &&\n        Object.keys(instance.state.selectedRowIds).length\n    ),\n  },\n]\n\nconst defaultGetToggleAllPageRowsSelectedProps = (props, { instance }) => [\n  props,\n  {\n    onChange(e) {\n      instance.toggleAllPageRowsSelected(e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: instance.isAllPageRowsSelected,\n    title: 'Toggle All Current Page Rows Selected',\n    indeterminate: Boolean(\n      !instance.isAllPageRowsSelected &&\n        instance.page.some(({ id }) => instance.state.selectedRowIds[id])\n    ),\n  },\n]\n\n// eslint-disable-next-line max-params\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      selectedRowIds: {},\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetSelectedRows) {\n    return {\n      ...state,\n      selectedRowIds: instance.initialState.selectedRowIds || {},\n    }\n  }\n\n  if (action.type === actions.toggleAllRowsSelected) {\n    const { value: setSelected } = action\n    const {\n      isAllRowsSelected,\n      rowsById,\n      nonGroupedRowsById = rowsById,\n    } = instance\n\n    const selectAll =\n      typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected\n\n    // Only remove/add the rows that are visible on the screen\n    //  Leave all the other rows that are selected alone.\n    const selectedRowIds = Object.assign({}, state.selectedRowIds)\n\n    if (selectAll) {\n      Object.keys(nonGroupedRowsById).forEach(rowId => {\n        selectedRowIds[rowId] = true\n      })\n    } else {\n      Object.keys(nonGroupedRowsById).forEach(rowId => {\n        delete selectedRowIds[rowId]\n      })\n    }\n\n    return {\n      ...state,\n      selectedRowIds,\n    }\n  }\n\n  if (action.type === actions.toggleRowSelected) {\n    const { id, value: setSelected } = action\n    const { rowsById, selectSubRows = true, getSubRows } = instance\n    const isSelected = state.selectedRowIds[id]\n    const shouldExist =\n      typeof setSelected !== 'undefined' ? setSelected : !isSelected\n\n    if (isSelected === shouldExist) {\n      return state\n    }\n\n    const newSelectedRowIds = { ...state.selectedRowIds }\n\n    const handleRowById = id => {\n      const row = rowsById[id]\n\n      if (row) {\n        if (!row.isGrouped) {\n          if (shouldExist) {\n            newSelectedRowIds[id] = true\n          } else {\n            delete newSelectedRowIds[id]\n          }\n        }\n\n        if (selectSubRows && getSubRows(row)) {\n          return getSubRows(row).forEach(row => handleRowById(row.id))\n        }\n      }\n    }\n\n    handleRowById(id)\n\n    return {\n      ...state,\n      selectedRowIds: newSelectedRowIds,\n    }\n  }\n\n  if (action.type === actions.toggleAllPageRowsSelected) {\n    const { value: setSelected } = action\n    const {\n      page,\n      rowsById,\n      selectSubRows = true,\n      isAllPageRowsSelected,\n      getSubRows,\n    } = instance\n\n    const selectAll =\n      typeof setSelected !== 'undefined' ? setSelected : !isAllPageRowsSelected\n\n    const newSelectedRowIds = { ...state.selectedRowIds }\n\n    const handleRowById = id => {\n      const row = rowsById[id]\n\n      if (!row.isGrouped) {\n        if (selectAll) {\n          newSelectedRowIds[id] = true\n        } else {\n          delete newSelectedRowIds[id]\n        }\n      }\n\n      if (selectSubRows && getSubRows(row)) {\n        return getSubRows(row).forEach(row => handleRowById(row.id))\n      }\n    }\n\n    page.forEach(row => handleRowById(row.id))\n\n    return {\n      ...state,\n      selectedRowIds: newSelectedRowIds,\n    }\n  }\n  return state\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    getHooks,\n    plugins,\n    rowsById,\n    nonGroupedRowsById = rowsById,\n    autoResetSelectedRows = true,\n    state: { selectedRowIds },\n    selectSubRows = true,\n    dispatch,\n    page,\n    getSubRows,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'],\n    'useRowSelect'\n  )\n\n  const selectedFlatRows = React.useMemo(() => {\n    const selectedFlatRows = []\n\n    rows.forEach(row => {\n      const isSelected = selectSubRows\n        ? getRowIsSelected(row, selectedRowIds, getSubRows)\n        : !!selectedRowIds[row.id]\n      row.isSelected = !!isSelected\n      row.isSomeSelected = isSelected === null\n\n      if (isSelected) {\n        selectedFlatRows.push(row)\n      }\n    })\n\n    return selectedFlatRows\n  }, [rows, selectSubRows, selectedRowIds, getSubRows])\n\n  let isAllRowsSelected = Boolean(\n    Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length\n  )\n\n  let isAllPageRowsSelected = isAllRowsSelected\n\n  if (isAllRowsSelected) {\n    if (Object.keys(nonGroupedRowsById).some(id => !selectedRowIds[id])) {\n      isAllRowsSelected = false\n    }\n  }\n\n  if (!isAllRowsSelected) {\n    if (page && page.length && page.some(({ id }) => !selectedRowIds[id])) {\n      isAllPageRowsSelected = false\n    }\n  }\n\n  const getAutoResetSelectedRows = useGetLatest(autoResetSelectedRows)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetSelectedRows()) {\n      dispatch({ type: actions.resetSelectedRows })\n    }\n  }, [dispatch, data])\n\n  const toggleAllRowsSelected = React.useCallback(\n    value => dispatch({ type: actions.toggleAllRowsSelected, value }),\n    [dispatch]\n  )\n\n  const toggleAllPageRowsSelected = React.useCallback(\n    value => dispatch({ type: actions.toggleAllPageRowsSelected, value }),\n    [dispatch]\n  )\n\n  const toggleRowSelected = React.useCallback(\n    (id, value) => dispatch({ type: actions.toggleRowSelected, id, value }),\n    [dispatch]\n  )\n\n  const getInstance = useGetLatest(instance)\n\n  const getToggleAllRowsSelectedProps = makePropGetter(\n    getHooks().getToggleAllRowsSelectedProps,\n    { instance: getInstance() }\n  )\n\n  const getToggleAllPageRowsSelectedProps = makePropGetter(\n    getHooks().getToggleAllPageRowsSelectedProps,\n    { instance: getInstance() }\n  )\n\n  Object.assign(instance, {\n    selectedFlatRows,\n    isAllRowsSelected,\n    isAllPageRowsSelected,\n    toggleRowSelected,\n    toggleAllRowsSelected,\n    getToggleAllRowsSelectedProps,\n    getToggleAllPageRowsSelectedProps,\n    toggleAllPageRowsSelected,\n  })\n}\n\nfunction prepareRow(row, { instance }) {\n  row.toggleRowSelected = set => instance.toggleRowSelected(row.id, set)\n\n  row.getToggleRowSelectedProps = makePropGetter(\n    instance.getHooks().getToggleRowSelectedProps,\n    { instance: instance, row }\n  )\n}\n\nfunction getRowIsSelected(row, selectedRowIds, getSubRows) {\n  if (selectedRowIds[row.id]) {\n    return true\n  }\n\n  const subRows = getSubRows(row)\n\n  if (subRows && subRows.length) {\n    let allChildrenSelected = true\n    let someSelected = false\n\n    subRows.forEach(subRow => {\n      // Bail out early if we know both of these\n      if (someSelected && !allChildrenSelected) {\n        return\n      }\n\n      if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {\n        someSelected = true\n      } else {\n        allChildrenSelected = false\n      }\n    })\n    return allChildrenSelected ? true : someSelected ? null : false\n  }\n\n  return false\n}\n","import React from 'react'\n\nimport {\n  actions,\n  functionalUpdate,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nconst defaultInitialRowStateAccessor = row => ({})\nconst defaultInitialCellStateAccessor = cell => ({})\n\n// Actions\nactions.setRowState = 'setRowState'\nactions.setCellState = 'setCellState'\nactions.resetRowState = 'resetRowState'\n\nexport const useRowState = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction reducer(state, action, previousState, instance) {\n  const {\n    initialRowStateAccessor = defaultInitialRowStateAccessor,\n    initialCellStateAccessor = defaultInitialCellStateAccessor,\n    rowsById,\n  } = instance\n\n  if (action.type === actions.init) {\n    return {\n      rowState: {},\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetRowState) {\n    return {\n      ...state,\n      rowState: instance.initialState.rowState || {},\n    }\n  }\n\n  if (action.type === actions.setRowState) {\n    const { rowId, value } = action\n\n    const oldRowState =\n      typeof state.rowState[rowId] !== 'undefined'\n        ? state.rowState[rowId]\n        : initialRowStateAccessor(rowsById[rowId])\n\n    return {\n      ...state,\n      rowState: {\n        ...state.rowState,\n        [rowId]: functionalUpdate(value, oldRowState),\n      },\n    }\n  }\n\n  if (action.type === actions.setCellState) {\n    const { rowId, columnId, value } = action\n\n    const oldRowState =\n      typeof state.rowState[rowId] !== 'undefined'\n        ? state.rowState[rowId]\n        : initialRowStateAccessor(rowsById[rowId])\n\n    const oldCellState =\n      typeof oldRowState?.cellState?.[columnId] !== 'undefined'\n        ? oldRowState.cellState[columnId]\n        : initialCellStateAccessor(\n            rowsById[rowId]?.cells?.find(cell => cell.column.id === columnId)\n          )\n\n    return {\n      ...state,\n      rowState: {\n        ...state.rowState,\n        [rowId]: {\n          ...oldRowState,\n          cellState: {\n            ...(oldRowState.cellState || {}),\n            [columnId]: functionalUpdate(value, oldCellState),\n          },\n        },\n      },\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const { autoResetRowState = true, data, dispatch } = instance\n\n  const setRowState = React.useCallback(\n    (rowId, value) =>\n      dispatch({\n        type: actions.setRowState,\n        rowId,\n        value,\n      }),\n    [dispatch]\n  )\n\n  const setCellState = React.useCallback(\n    (rowId, columnId, value) =>\n      dispatch({\n        type: actions.setCellState,\n        rowId,\n        columnId,\n        value,\n      }),\n    [dispatch]\n  )\n\n  const getAutoResetRowState = useGetLatest(autoResetRowState)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetRowState()) {\n      dispatch({ type: actions.resetRowState })\n    }\n  }, [data])\n\n  Object.assign(instance, {\n    setRowState,\n    setCellState,\n  })\n}\n\nfunction prepareRow(row, { instance }) {\n  const {\n    initialRowStateAccessor = defaultInitialRowStateAccessor,\n    initialCellStateAccessor = defaultInitialCellStateAccessor,\n    state: { rowState },\n  } = instance\n\n  if (row) {\n    row.state =\n      typeof rowState[row.id] !== 'undefined'\n        ? rowState[row.id]\n        : initialRowStateAccessor(row)\n\n    row.setState = updater => {\n      return instance.setRowState(row.id, updater)\n    }\n\n    row.cells.forEach(cell => {\n      if (!row.state.cellState) {\n        row.state.cellState = {}\n      }\n\n      cell.state =\n        typeof row.state.cellState[cell.column.id] !== 'undefined'\n          ? row.state.cellState[cell.column.id]\n          : initialCellStateAccessor(cell)\n\n      cell.setState = updater => {\n        return instance.setCellState(row.id, cell.column.id, updater)\n      }\n    })\n  }\n}\n","import React from 'react'\n\nimport { functionalUpdate, actions } from '../publicUtils'\n\n// Actions\nactions.resetColumnOrder = 'resetColumnOrder'\nactions.setColumnOrder = 'setColumnOrder'\n\nexport const useColumnOrder = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.visibleColumnsDeps.push((deps, { instance }) => {\n    return [...deps, instance.state.columnOrder]\n  })\n  hooks.visibleColumns.push(visibleColumns)\n  hooks.useInstance.push(useInstance)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      columnOrder: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetColumnOrder) {\n    return {\n      ...state,\n      columnOrder: instance.initialState.columnOrder || [],\n    }\n  }\n\n  if (action.type === actions.setColumnOrder) {\n    return {\n      ...state,\n      columnOrder: functionalUpdate(action.columnOrder, state.columnOrder),\n    }\n  }\n}\n\nfunction visibleColumns(\n  columns,\n  {\n    instance: {\n      state: { columnOrder },\n    },\n  }\n) {\n  // If there is no order, return the normal columns\n  if (!columnOrder || !columnOrder.length) {\n    return columns\n  }\n\n  const columnOrderCopy = [...columnOrder]\n\n  // If there is an order, make a copy of the columns\n  const columnsCopy = [...columns]\n\n  // And make a new ordered array of the columns\n  const columnsInOrder = []\n\n  // Loop over the columns and place them in order into the new array\n  while (columnsCopy.length && columnOrderCopy.length) {\n    const targetColumnId = columnOrderCopy.shift()\n    const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId)\n    if (foundIndex > -1) {\n      columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n    }\n  }\n\n  // If there are any columns left, add them to the end\n  return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useInstance(instance) {\n  const { dispatch } = instance\n\n  instance.setColumnOrder = React.useCallback(\n    columnOrder => {\n      return dispatch({ type: actions.setColumnOrder, columnOrder })\n    },\n    [dispatch]\n  )\n}\n","import React from 'react'\n\nimport {\n  actions,\n  defaultColumn,\n  makePropGetter,\n  useGetLatest,\n  ensurePluginOrder,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, passiveEventSupported } from '../utils'\n\n// Default Column\ndefaultColumn.canResize = true\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport const useResizeColumns = hooks => {\n  hooks.getResizerProps = [defaultGetResizerProps]\n  hooks.getHeaderProps.push({\n    style: {\n      position: 'relative',\n    },\n  })\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n}\n\nconst defaultGetResizerProps = (props, { instance, header }) => {\n  const { dispatch } = instance\n\n  const onResizeStart = (e, header) => {\n    let isTouchEvent = false\n    if (e.type === 'touchstart') {\n      // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n      if (e.touches && e.touches.length > 1) {\n        return\n      }\n      isTouchEvent = true\n    }\n    const headersToResize = getLeafHeaders(header)\n    const headerIdWidths = headersToResize.map(d => [d.id, d.totalWidth])\n\n    const clientX = isTouchEvent ? Math.round(e.touches[0].clientX) : e.clientX\n\n    let raf\n    let mostRecentClientX\n\n    const dispatchEnd = () => {\n      window.cancelAnimationFrame(raf)\n      raf = null\n      dispatch({ type: actions.columnDoneResizing })\n    }\n    const dispatchMove = () => {\n      window.cancelAnimationFrame(raf)\n      raf = null\n      dispatch({ type: actions.columnResizing, clientX: mostRecentClientX })\n    }\n\n    const scheduleDispatchMoveOnNextAnimationFrame = clientXPos => {\n      mostRecentClientX = clientXPos\n      if (!raf) {\n        raf = window.requestAnimationFrame(dispatchMove)\n      }\n    }\n\n    const handlersAndEvents = {\n      mouse: {\n        moveEvent: 'mousemove',\n        moveHandler: e => scheduleDispatchMoveOnNextAnimationFrame(e.clientX),\n        upEvent: 'mouseup',\n        upHandler: e => {\n          document.removeEventListener(\n            'mousemove',\n            handlersAndEvents.mouse.moveHandler\n          )\n          document.removeEventListener(\n            'mouseup',\n            handlersAndEvents.mouse.upHandler\n          )\n          dispatchEnd()\n        },\n      },\n      touch: {\n        moveEvent: 'touchmove',\n        moveHandler: e => {\n          if (e.cancelable) {\n            e.preventDefault()\n            e.stopPropagation()\n          }\n          scheduleDispatchMoveOnNextAnimationFrame(e.touches[0].clientX)\n          return false\n        },\n        upEvent: 'touchend',\n        upHandler: e => {\n          document.removeEventListener(\n            handlersAndEvents.touch.moveEvent,\n            handlersAndEvents.touch.moveHandler\n          )\n          document.removeEventListener(\n            handlersAndEvents.touch.upEvent,\n            handlersAndEvents.touch.moveHandler\n          )\n          dispatchEnd()\n        },\n      },\n    }\n\n    const events = isTouchEvent\n      ? handlersAndEvents.touch\n      : handlersAndEvents.mouse\n    const passiveIfSupported = passiveEventSupported()\n      ? { passive: false }\n      : false\n    document.addEventListener(\n      events.moveEvent,\n      events.moveHandler,\n      passiveIfSupported\n    )\n    document.addEventListener(\n      events.upEvent,\n      events.upHandler,\n      passiveIfSupported\n    )\n\n    dispatch({\n      type: actions.columnStartResizing,\n      columnId: header.id,\n      columnWidth: header.totalWidth,\n      headerIdWidths,\n      clientX,\n    })\n  }\n\n  return [\n    props,\n    {\n      onMouseDown: e => e.persist() || onResizeStart(e, header),\n      onTouchStart: e => e.persist() || onResizeStart(e, header),\n      style: {\n        cursor: 'col-resize',\n      },\n      draggable: false,\n      role: 'separator',\n    },\n  ]\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nfunction reducer(state, action) {\n  if (action.type === actions.init) {\n    return {\n      columnResizing: {\n        columnWidths: {},\n      },\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetResize) {\n    return {\n      ...state,\n      columnResizing: {\n        columnWidths: {},\n      },\n    }\n  }\n\n  if (action.type === actions.columnStartResizing) {\n    const { clientX, columnId, columnWidth, headerIdWidths } = action\n\n    return {\n      ...state,\n      columnResizing: {\n        ...state.columnResizing,\n        startX: clientX,\n        headerIdWidths,\n        columnWidth,\n        isResizingColumn: columnId,\n      },\n    }\n  }\n\n  if (action.type === actions.columnResizing) {\n    const { clientX } = action\n    const { startX, columnWidth, headerIdWidths = [] } = state.columnResizing\n\n    const deltaX = clientX - startX\n    const percentageDeltaX = deltaX / columnWidth\n\n    const newColumnWidths = {}\n\n    headerIdWidths.forEach(([headerId, headerWidth]) => {\n      newColumnWidths[headerId] = Math.max(\n        headerWidth + headerWidth * percentageDeltaX,\n        0\n      )\n    })\n\n    return {\n      ...state,\n      columnResizing: {\n        ...state.columnResizing,\n        columnWidths: {\n          ...state.columnResizing.columnWidths,\n          ...newColumnWidths,\n        },\n      },\n    }\n  }\n\n  if (action.type === actions.columnDoneResizing) {\n    return {\n      ...state,\n      columnResizing: {\n        ...state.columnResizing,\n        startX: null,\n        isResizingColumn: null,\n      },\n    }\n  }\n}\n\nconst useInstanceBeforeDimensions = instance => {\n  const {\n    flatHeaders,\n    disableResizing,\n    getHooks,\n    state: { columnResizing },\n  } = instance\n\n  const getInstance = useGetLatest(instance)\n\n  flatHeaders.forEach(header => {\n    const canResize = getFirstDefined(\n      header.disableResizing === true ? false : undefined,\n      disableResizing === true ? false : undefined,\n      true\n    )\n\n    header.canResize = canResize\n    header.width =\n      columnResizing.columnWidths[header.id] ||\n      header.originalWidth ||\n      header.width\n    header.isResizing = columnResizing.isResizingColumn === header.id\n\n    if (canResize) {\n      header.getResizerProps = makePropGetter(getHooks().getResizerProps, {\n        instance: getInstance(),\n        header,\n      })\n    }\n  })\n}\n\nfunction useInstance(instance) {\n  const { plugins, dispatch, autoResetResize = true, columns } = instance\n\n  ensurePluginOrder(plugins, ['useAbsoluteLayout'], 'useResizeColumns')\n\n  const getAutoResetResize = useGetLatest(autoResetResize)\n  useMountedLayoutEffect(() => {\n    if (getAutoResetResize()) {\n      dispatch({ type: actions.resetResize })\n    }\n  }, [columns])\n\n  const resetResizing = React.useCallback(\n    () => dispatch({ type: actions.resetResize }),\n    [dispatch]\n  )\n\n  Object.assign(instance, {\n    resetResizing,\n  })\n}\n\nfunction getLeafHeaders(header) {\n  const leafHeaders = []\n  const recurseHeader = header => {\n    if (header.columns && header.columns.length) {\n      header.columns.map(recurseHeader)\n    }\n    leafHeaders.push(header)\n  }\n  recurseHeader(header)\n  return leafHeaders\n}\n","const cellStyles = {\n  position: 'absolute',\n  top: 0,\n}\n\nexport const useAbsoluteLayout = hooks => {\n  hooks.getTableBodyProps.push(getRowStyles)\n  hooks.getRowProps.push(getRowStyles)\n  hooks.getHeaderGroupProps.push(getRowStyles)\n  hooks.getFooterGroupProps.push(getRowStyles)\n\n  hooks.getHeaderProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        left: `${column.totalLeft}px`,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getCellProps.push((props, { cell }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        left: `${cell.column.totalLeft}px`,\n        width: `${cell.column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getFooterProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        left: `${column.totalLeft}px`,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst getRowStyles = (props, { instance }) => [\n  props,\n  {\n    style: {\n      position: 'relative',\n      width: `${instance.totalColumnsWidth}px`,\n    },\n  },\n]\n","const cellStyles = {\n  display: 'inline-block',\n  boxSizing: 'border-box',\n}\n\nconst getRowStyles = (props, { instance }) => [\n  props,\n  {\n    style: {\n      display: 'flex',\n      width: `${instance.totalColumnsWidth}px`,\n    },\n  },\n]\n\nexport const useBlockLayout = hooks => {\n  hooks.getRowProps.push(getRowStyles)\n  hooks.getHeaderGroupProps.push(getRowStyles)\n  hooks.getFooterGroupProps.push(getRowStyles)\n\n  hooks.getHeaderProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getCellProps.push((props, { cell }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        width: `${cell.column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getFooterProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n","export function useFlexLayout(hooks) {\n  hooks.getTableProps.push(getTableProps)\n  hooks.getRowProps.push(getRowStyles)\n  hooks.getHeaderGroupProps.push(getRowStyles)\n  hooks.getFooterGroupProps.push(getRowStyles)\n  hooks.getHeaderProps.push(getHeaderProps)\n  hooks.getCellProps.push(getCellProps)\n  hooks.getFooterProps.push(getFooterProps)\n}\n\nuseFlexLayout.pluginName = 'useFlexLayout'\n\nconst getTableProps = (props, { instance }) => [\n  props,\n  {\n    style: {\n      minWidth: `${instance.totalColumnsMinWidth}px`,\n    },\n  },\n]\n\nconst getRowStyles = (props, { instance }) => [\n  props,\n  {\n    style: {\n      display: 'flex',\n      flex: '1 0 auto',\n      minWidth: `${instance.totalColumnsMinWidth}px`,\n    },\n  },\n]\n\nconst getHeaderProps = (props, { column }) => [\n  props,\n  {\n    style: {\n      boxSizing: 'border-box',\n      flex: column.totalFlexWidth\n        ? `${column.totalFlexWidth} 0 auto`\n        : undefined,\n      minWidth: `${column.totalMinWidth}px`,\n      width: `${column.totalWidth}px`,\n    },\n  },\n]\n\nconst getCellProps = (props, { cell }) => [\n  props,\n  {\n    style: {\n      boxSizing: 'border-box',\n      flex: `${cell.column.totalFlexWidth} 0 auto`,\n      minWidth: `${cell.column.totalMinWidth}px`,\n      width: `${cell.column.totalWidth}px`,\n    },\n  },\n]\n\nconst getFooterProps = (props, { column }) => [\n  props,\n  {\n    style: {\n      boxSizing: 'border-box',\n      flex: column.totalFlexWidth\n        ? `${column.totalFlexWidth} 0 auto`\n        : undefined,\n      minWidth: `${column.totalMinWidth}px`,\n      width: `${column.totalWidth}px`,\n    },\n  },\n]\n","import { actions } from '../publicUtils'\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport function useGridLayout(hooks) {\n  hooks.stateReducers.push(reducer)\n  hooks.getTableProps.push(getTableProps)\n  hooks.getHeaderProps.push(getHeaderProps)\n  hooks.getRowProps.push(getRowProps)\n}\n\nuseGridLayout.pluginName = 'useGridLayout'\n\nconst getTableProps = (props, { instance }) => {\n  const gridTemplateColumns = instance.visibleColumns.map(column => {\n    if (instance.state.gridLayout.columnWidths[column.id])\n      return `${instance.state.gridLayout.columnWidths[column.id]}px`\n    // When resizing, lock the width of all unset columns\n    // instead of using user-provided width or defaultColumn width,\n    // which could potentially be 'auto' or 'fr' units that don't scale linearly\n    if (instance.state.columnResizing?.isResizingColumn)\n      return `${instance.state.gridLayout.startWidths[column.id]}px`\n    if (typeof column.width === 'number') return `${column.width}px`\n    return column.width\n  })\n  return [\n    props,\n    {\n      style: {\n        display: `grid`,\n        gridTemplateColumns: gridTemplateColumns.join(` `),\n      },\n    },\n  ]\n}\n\nconst getHeaderProps = (props, { column }) => [\n  props,\n  {\n    id: `header-cell-${column.id}`,\n    style: {\n      position: `sticky`, //enables a scroll wrapper to be placed around the table and have sticky headers\n      gridColumn: `span ${column.totalVisibleHeaderCount}`,\n    },\n  },\n]\n\nconst getRowProps = (props, { row }) => {\n  if (row.isExpanded) {\n    return [\n      props,\n      {\n        style: {\n          gridColumn: `1 / ${row.cells.length + 1}`,\n        },\n      },\n    ]\n  }\n  return [props, {}]\n}\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      gridLayout: {\n        columnWidths: {},\n      },\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetResize) {\n    return {\n      ...state,\n      gridLayout: {\n        columnWidths: {},\n      },\n    }\n  }\n\n  if (action.type === actions.columnStartResizing) {\n    const { columnId, headerIdWidths } = action\n    const columnWidth = getElementWidth(columnId)\n\n    if (columnWidth !== undefined) {\n      const startWidths = instance.visibleColumns.reduce(\n        (acc, column) => ({\n          ...acc,\n          [column.id]: getElementWidth(column.id),\n        }),\n        {}\n      )\n      const minWidths = instance.visibleColumns.reduce(\n        (acc, column) => ({\n          ...acc,\n          [column.id]: column.minWidth,\n        }),\n        {}\n      )\n      const maxWidths = instance.visibleColumns.reduce(\n        (acc, column) => ({\n          ...acc,\n          [column.id]: column.maxWidth,\n        }),\n        {}\n      )\n\n      const headerIdGridWidths = headerIdWidths.map(([headerId]) => [\n        headerId,\n        getElementWidth(headerId),\n      ])\n\n      return {\n        ...state,\n        gridLayout: {\n          ...state.gridLayout,\n          startWidths,\n          minWidths,\n          maxWidths,\n          headerIdGridWidths,\n          columnWidth,\n        },\n      }\n    } else {\n      return state\n    }\n  }\n\n  if (action.type === actions.columnResizing) {\n    const { clientX } = action\n    const { startX } = state.columnResizing\n    const {\n      columnWidth,\n      minWidths,\n      maxWidths,\n      headerIdGridWidths = [],\n    } = state.gridLayout\n\n    const deltaX = clientX - startX\n    const percentageDeltaX = deltaX / columnWidth\n\n    const newColumnWidths = {}\n\n    headerIdGridWidths.forEach(([headerId, headerWidth]) => {\n      newColumnWidths[headerId] = Math.min(\n        Math.max(\n          minWidths[headerId],\n          headerWidth + headerWidth * percentageDeltaX\n        ),\n        maxWidths[headerId]\n      )\n    })\n\n    return {\n      ...state,\n      gridLayout: {\n        ...state.gridLayout,\n        columnWidths: {\n          ...state.gridLayout.columnWidths,\n          ...newColumnWidths,\n        },\n      },\n    }\n  }\n\n  if (action.type === actions.columnDoneResizing) {\n    return {\n      ...state,\n      gridLayout: {\n        ...state.gridLayout,\n        startWidths: {},\n        minWidths: {},\n        maxWidths: {},\n      },\n    }\n  }\n}\n\nfunction getElementWidth(columnId) {\n  const width = document.getElementById(`header-cell-${columnId}`)?.offsetWidth\n\n  if (width !== undefined) {\n    return width\n  }\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n    return exports;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  var exports = {},\n    Op = Object.prototype,\n    hasOwn = Op.hasOwnProperty,\n    defineProperty = Object.defineProperty || function (obj, key, desc) {\n      obj[key] = desc.value;\n    },\n    $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n    iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n    asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n    toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n  function define(obj, key, value) {\n    return Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), obj[key];\n  }\n  try {\n    define({}, \"\");\n  } catch (err) {\n    define = function define(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n      generator = Object.create(protoGenerator.prototype),\n      context = new Context(tryLocsList || []);\n    return defineProperty(generator, \"_invoke\", {\n      value: makeInvokeMethod(innerFn, self, context)\n    }), generator;\n  }\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n  exports.wrap = wrap;\n  var ContinueSentinel = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n  var getProto = Object.getPrototypeOf,\n    NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function (method) {\n      define(prototype, method, function (arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (\"throw\" !== record.type) {\n        var result = record.arg,\n          value = result.value;\n        return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n          invoke(\"next\", value, resolve, reject);\n        }, function (err) {\n          invoke(\"throw\", err, resolve, reject);\n        }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n          result.value = unwrapped, resolve(result);\n        }, function (error) {\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n      reject(record.arg);\n    }\n    var previousPromise;\n    defineProperty(this, \"_invoke\", {\n      value: function value(method, arg) {\n        function callInvokeWithMethodAndArg() {\n          return new PromiseImpl(function (resolve, reject) {\n            invoke(method, arg, resolve, reject);\n          });\n        }\n        return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = \"suspendedStart\";\n    return function (method, arg) {\n      if (\"executing\" === state) throw new Error(\"Generator is already running\");\n      if (\"completed\" === state) {\n        if (\"throw\" === method) throw arg;\n        return doneResult();\n      }\n      for (context.method = method, context.arg = arg;;) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n        if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n          if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n          context.dispatchException(context.arg);\n        } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n        state = \"executing\";\n        var record = tryCatch(innerFn, self, context);\n        if (\"normal\" === record.type) {\n          if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n          return {\n            value: record.arg,\n            done: context.done\n          };\n        }\n        \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method,\n      method = delegate.iterator[methodName];\n    if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n    var record = tryCatch(method, delegate.iterator, context.arg);\n    if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n    var info = record.arg;\n    return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n  }\n  function pushTryEntry(locs) {\n    var entry = {\n      tryLoc: locs[0]\n    };\n    1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n  }\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\", delete record.arg, entry.completion = record;\n  }\n  function Context(tryLocsList) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) return iteratorMethod.call(iterable);\n      if (\"function\" == typeof iterable.next) return iterable;\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n          next = function next() {\n            for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n            return next.value = undefined, next.done = !0, next;\n          };\n        return next.next = next;\n      }\n    }\n    return {\n      next: doneResult\n    };\n  }\n  function doneResult() {\n    return {\n      value: undefined,\n      done: !0\n    };\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n    var ctor = \"function\" == typeof genFun && genFun.constructor;\n    return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n  }, exports.mark = function (genFun) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n  }, exports.awrap = function (arg) {\n    return {\n      __await: arg\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    void 0 === PromiseImpl && (PromiseImpl = Promise);\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n    return this;\n  }), define(Gp, \"toString\", function () {\n    return \"[object Generator]\";\n  }), exports.keys = function (val) {\n    var object = Object(val),\n      keys = [];\n    for (var key in object) keys.push(key);\n    return keys.reverse(), function next() {\n      for (; keys.length;) {\n        var key = keys.pop();\n        if (key in object) return next.value = key, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, exports.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var rootRecord = this.tryEntries[0].completion;\n      if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) throw exception;\n      var context = this;\n      function handle(loc, caught) {\n        return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n      }\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i],\n          record = entry.completion;\n        if (\"root\" === entry.tryLoc) return handle(\"end\");\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n            hasFinally = hasOwn.call(entry, \"finallyLoc\");\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n          } else {\n            if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n      finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n      var record = finallyEntry ? finallyEntry.completion : {};\n      return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (\"throw\" === record.type) throw record.arg;\n      return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (\"throw\" === record.type) {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      return this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n    }\n  }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n  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}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  } else {\n    module.exports = _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n      return desc.value;\n    }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  }\n  return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n  return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const property of Object.keys(configTypes)) {\n      const expectedTypes = configTypes[property]\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CSVLink = exports.CSVDownload = undefined;\n\nvar _Download = require('./components/Download');\n\nvar _Download2 = _interopRequireDefault(_Download);\n\nvar _Link = require('./components/Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CSVDownload = exports.CSVDownload = _Download2.default;\nvar CSVLink = exports.CSVLink = _Link2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _core = require('../core');\n\nvar _metaProps = require('../metaProps');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultProps = {\n  target: '_blank'\n};\n\nvar CSVDownload = function (_React$Component) {\n  _inherits(CSVDownload, _React$Component);\n\n  function CSVDownload(props) {\n    _classCallCheck(this, CSVDownload);\n\n    var _this = _possibleConstructorReturn(this, (CSVDownload.__proto__ || Object.getPrototypeOf(CSVDownload)).call(this, props));\n\n    _this.state = {};\n    return _this;\n  }\n\n  _createClass(CSVDownload, [{\n    key: 'buildURI',\n    value: function buildURI() {\n      return _core.buildURI.apply(undefined, arguments);\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _props = this.props,\n          data = _props.data,\n          headers = _props.headers,\n          separator = _props.separator,\n          enclosingCharacter = _props.enclosingCharacter,\n          uFEFF = _props.uFEFF,\n          target = _props.target,\n          specs = _props.specs,\n          replace = _props.replace;\n\n      this.state.page = window.open(this.buildURI(data, uFEFF, headers, separator, enclosingCharacter), target, specs, replace);\n    }\n  }, {\n    key: 'getWindow',\n    value: function getWindow() {\n      return this.state.page;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return null;\n    }\n  }]);\n\n  return CSVDownload;\n}(_react2.default.Component);\n\nCSVDownload.defaultProps = Object.assign(_metaProps.defaultProps, defaultProps);\nCSVDownload.propTypes = _metaProps.propTypes;\nexports.default = CSVDownload;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _core = require('../core');\n\nvar _metaProps = require('../metaProps');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CSVLink = function (_React$Component) {\n  _inherits(CSVLink, _React$Component);\n\n  function CSVLink(props) {\n    _classCallCheck(this, CSVLink);\n\n    var _this = _possibleConstructorReturn(this, (CSVLink.__proto__ || Object.getPrototypeOf(CSVLink)).call(this, props));\n\n    _this.buildURI = _this.buildURI.bind(_this);\n    return _this;\n  }\n\n  _createClass(CSVLink, [{\n    key: 'buildURI',\n    value: function buildURI() {\n      return _core.buildURI.apply(undefined, arguments);\n    }\n  }, {\n    key: 'handleLegacy',\n    value: function handleLegacy(event) {\n      var isAsync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (window.navigator.msSaveOrOpenBlob) {\n        event.preventDefault();\n\n        var _props = this.props,\n            data = _props.data,\n            headers = _props.headers,\n            separator = _props.separator,\n            filename = _props.filename,\n            enclosingCharacter = _props.enclosingCharacter,\n            uFEFF = _props.uFEFF;\n\n\n        var csvData = isAsync && typeof data === 'function' ? data() : data;\n\n        var blob = new Blob([uFEFF ? '\\uFEFF' : '', (0, _core.toCSV)(csvData, headers, separator, enclosingCharacter)]);\n        window.navigator.msSaveBlob(blob, filename);\n\n        return false;\n      }\n    }\n  }, {\n    key: 'handleAsyncClick',\n    value: function handleAsyncClick(event) {\n      var _this2 = this;\n\n      var done = function done(proceed) {\n        if (proceed === false) {\n          event.preventDefault();\n          return;\n        }\n        _this2.handleLegacy(event, true);\n      };\n\n      this.props.onClick(event, done);\n    }\n  }, {\n    key: 'handleSyncClick',\n    value: function handleSyncClick(event) {\n      var stopEvent = this.props.onClick(event) === false;\n      if (stopEvent) {\n        event.preventDefault();\n        return;\n      }\n      this.handleLegacy(event);\n    }\n  }, {\n    key: 'handleClick',\n    value: function handleClick() {\n      var _this3 = this;\n\n      return function (event) {\n        if (typeof _this3.props.onClick === 'function') {\n          return _this3.props.asyncOnClick ? _this3.handleAsyncClick(event) : _this3.handleSyncClick(event);\n        }\n        _this3.handleLegacy(event);\n      };\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      var _props2 = this.props,\n          data = _props2.data,\n          headers = _props2.headers,\n          separator = _props2.separator,\n          filename = _props2.filename,\n          uFEFF = _props2.uFEFF,\n          children = _props2.children,\n          onClick = _props2.onClick,\n          asyncOnClick = _props2.asyncOnClick,\n          enclosingCharacter = _props2.enclosingCharacter,\n          rest = _objectWithoutProperties(_props2, ['data', 'headers', 'separator', 'filename', 'uFEFF', 'children', 'onClick', 'asyncOnClick', 'enclosingCharacter']);\n\n      var isNodeEnvironment = typeof window === 'undefined';\n      var href = isNodeEnvironment ? '' : this.buildURI(data, uFEFF, headers, separator, enclosingCharacter);\n\n      return _react2.default.createElement(\n        'a',\n        _extends({\n          download: filename\n        }, rest, {\n          ref: function ref(link) {\n            return _this4.link = link;\n          },\n          target: '_self',\n          href: href,\n          onClick: this.handleClick()\n        }),\n        children\n      );\n    }\n  }]);\n\n  return CSVLink;\n}(_react2.default.Component);\n\nCSVLink.defaultProps = _metaProps.defaultProps;\nCSVLink.propTypes = _metaProps.propTypes;\nexports.default = CSVLink;","//! moment-timezone.js\n//! version : 0.5.40\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.40\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MAX_RESULTS = exports.DEFAULT_INPUT_DEBOUNCE = void 0;\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar fuse_js_1 = __importDefault(require(\"fuse.js\"));\nvar react_1 = __importStar(require(\"react\"));\nvar styled_components_1 = __importStar(require(\"styled-components\"));\nvar config_1 = require(\"../config/config\");\nvar utils_1 = require(\"../utils/utils\");\nvar Results_1 = __importDefault(require(\"./Results\"));\nvar SearchInput_1 = __importDefault(require(\"./SearchInput\"));\nexports.DEFAULT_INPUT_DEBOUNCE = 200;\nexports.MAX_RESULTS = 10;\nfunction ReactSearchAutocomplete(_a) {\n    var _b = _a.items, items = _b === void 0 ? [] : _b, _c = _a.fuseOptions, fuseOptions = _c === void 0 ? config_1.defaultFuseOptions : _c, _d = _a.inputDebounce, inputDebounce = _d === void 0 ? exports.DEFAULT_INPUT_DEBOUNCE : _d, _e = _a.onSearch, onSearch = _e === void 0 ? function () { } : _e, _f = _a.onHover, onHover = _f === void 0 ? function () { } : _f, _g = _a.onSelect, onSelect = _g === void 0 ? function () { } : _g, _h = _a.onFocus, onFocus = _h === void 0 ? function () { } : _h, _j = _a.onClear, onClear = _j === void 0 ? function () { } : _j, _k = _a.showIcon, showIcon = _k === void 0 ? true : _k, _l = _a.showClear, showClear = _l === void 0 ? true : _l, _m = _a.maxResults, maxResults = _m === void 0 ? exports.MAX_RESULTS : _m, _o = _a.placeholder, placeholder = _o === void 0 ? '' : _o, _p = _a.autoFocus, autoFocus = _p === void 0 ? false : _p, _q = _a.styling, styling = _q === void 0 ? {} : _q, _r = _a.resultStringKeyName, resultStringKeyName = _r === void 0 ? 'name' : _r, _s = _a.inputSearchString, inputSearchString = _s === void 0 ? '' : _s, formatResult = _a.formatResult, _t = _a.showNoResults, showNoResults = _t === void 0 ? true : _t, _u = _a.showNoResultsText, showNoResultsText = _u === void 0 ? 'No results' : _u, _v = _a.showItemsOnFocus, showItemsOnFocus = _v === void 0 ? false : _v, _w = _a.maxLength, maxLength = _w === void 0 ? 0 : _w, className = _a.className;\n    var theme = __assign(__assign({}, config_1.defaultTheme), styling);\n    var options = __assign(__assign({}, config_1.defaultFuseOptions), fuseOptions);\n    var fuse = new fuse_js_1.default(items, options);\n    fuse.setCollection(items);\n    var _x = (0, react_1.useState)(inputSearchString), searchString = _x[0], setSearchString = _x[1];\n    var _y = (0, react_1.useState)([]), results = _y[0], setResults = _y[1];\n    var _z = (0, react_1.useState)(-1), highlightedItem = _z[0], setHighlightedItem = _z[1];\n    var _0 = (0, react_1.useState)(false), isSearchComplete = _0[0], setIsSearchComplete = _0[1];\n    var _1 = (0, react_1.useState)(false), isTyping = _1[0], setIsTyping = _1[1];\n    var _2 = (0, react_1.useState)(false), showNoResultsFlag = _2[0], setShowNoResultsFlag = _2[1];\n    var _3 = (0, react_1.useState)(false), hasFocus = _3[0], setHasFocus = _3[1];\n    (0, react_1.useEffect)(function () {\n        setSearchString(inputSearchString);\n        var timeoutId = setTimeout(function () { return setResults(fuseResults(inputSearchString)); }, 0);\n        return function () { return clearTimeout(timeoutId); };\n    }, [inputSearchString]);\n    (0, react_1.useEffect)(function () {\n        (searchString === null || searchString === void 0 ? void 0 : searchString.length) > 0 &&\n            results &&\n            (results === null || results === void 0 ? void 0 : results.length) > 0 &&\n            setResults(fuseResults(searchString));\n    }, [items]);\n    (0, react_1.useEffect)(function () {\n        if (showNoResults &&\n            searchString.length > 0 &&\n            !isTyping &&\n            results.length === 0 &&\n            !isSearchComplete) {\n            setShowNoResultsFlag(true);\n        }\n        else {\n            setShowNoResultsFlag(false);\n        }\n    }, [isTyping, showNoResults, isSearchComplete, searchString, results]);\n    (0, react_1.useEffect)(function () {\n        if (showItemsOnFocus && results.length === 0 && searchString.length === 0 && hasFocus) {\n            setResults(items.slice(0, maxResults));\n        }\n    }, [showItemsOnFocus, results, searchString, hasFocus]);\n    (0, react_1.useEffect)(function () {\n        var handleDocumentClick = function () {\n            eraseResults();\n            setHasFocus(false);\n        };\n        document.addEventListener('click', handleDocumentClick);\n        return function () { return document.removeEventListener('click', handleDocumentClick); };\n    }, []);\n    var handleOnFocus = function (event) {\n        onFocus(event);\n        setHasFocus(true);\n    };\n    var callOnSearch = function (keyword) {\n        var newResults = [];\n        (keyword === null || keyword === void 0 ? void 0 : keyword.length) > 0 && (newResults = fuseResults(keyword));\n        setResults(newResults);\n        onSearch(keyword, newResults);\n        setIsTyping(false);\n    };\n    var handleOnSearch = react_1.default.useCallback(inputDebounce > 0\n        ? (0, utils_1.debounce)(function (keyword) { return callOnSearch(keyword); }, inputDebounce)\n        : function (keyword) { return callOnSearch(keyword); }, [items]);\n    var handleOnClick = function (result) {\n        eraseResults();\n        onSelect(result);\n        setSearchString(result[resultStringKeyName]);\n        setHighlightedItem(0);\n    };\n    var fuseResults = function (keyword) {\n        return fuse\n            .search(keyword, { limit: maxResults })\n            .map(function (result) { return (__assign({}, result.item)); })\n            .slice(0, maxResults);\n    };\n    var handleSetSearchString = function (_a) {\n        var target = _a.target;\n        var keyword = target.value;\n        setSearchString(keyword);\n        handleOnSearch(keyword);\n        setIsTyping(true);\n        if (isSearchComplete) {\n            setIsSearchComplete(false);\n        }\n    };\n    var eraseResults = function () {\n        setResults([]);\n        setIsSearchComplete(true);\n    };\n    var handleSetHighlightedItem = function (_a) {\n        var index = _a.index, event = _a.event;\n        var itemIndex = -1;\n        var setValues = function (index) {\n            setHighlightedItem(index);\n            (results === null || results === void 0 ? void 0 : results[index]) && onHover(results[index]);\n        };\n        if (index !== undefined) {\n            setHighlightedItem(index);\n            (results === null || results === void 0 ? void 0 : results[index]) && onHover(results[index]);\n        }\n        else if (event) {\n            switch (event.key) {\n                case 'Enter':\n                    if (results.length > 0 && results[highlightedItem]) {\n                        event.preventDefault();\n                        onSelect(results[highlightedItem]);\n                        setSearchString(results[highlightedItem][resultStringKeyName]);\n                        onSearch(results[highlightedItem][resultStringKeyName], results);\n                    }\n                    else {\n                        onSearch(searchString, results);\n                    }\n                    setHighlightedItem(-1);\n                    eraseResults();\n                    break;\n                case 'ArrowUp':\n                    event.preventDefault();\n                    itemIndex = highlightedItem > -1 ? highlightedItem - 1 : results.length - 1;\n                    setValues(itemIndex);\n                    break;\n                case 'ArrowDown':\n                    event.preventDefault();\n                    itemIndex = highlightedItem < results.length - 1 ? highlightedItem + 1 : -1;\n                    setValues(itemIndex);\n                    break;\n                default:\n                    break;\n            }\n        }\n    };\n    return ((0, jsx_runtime_1.jsx)(styled_components_1.ThemeProvider, __assign({ theme: theme }, { children: (0, jsx_runtime_1.jsx)(StyledReactSearchAutocomplete, __assign({ className: className }, { children: (0, jsx_runtime_1.jsxs)(\"div\", __assign({ className: \"wrapper\" }, { children: [(0, jsx_runtime_1.jsx)(SearchInput_1.default, { searchString: searchString, setSearchString: handleSetSearchString, eraseResults: eraseResults, autoFocus: autoFocus, onFocus: handleOnFocus, onClear: onClear, placeholder: placeholder, showIcon: showIcon, showClear: showClear, setHighlightedItem: handleSetHighlightedItem, maxLength: maxLength }), (0, jsx_runtime_1.jsx)(Results_1.default, { results: results, onClick: handleOnClick, setSearchString: setSearchString, showIcon: showIcon, maxResults: maxResults, resultStringKeyName: resultStringKeyName, formatResult: formatResult, highlightedItem: highlightedItem, setHighlightedItem: handleSetHighlightedItem, showNoResultsFlag: showNoResultsFlag, showNoResultsText: showNoResultsText })] })) })) })));\n}\nexports.default = ReactSearchAutocomplete;\nvar StyledReactSearchAutocomplete = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n  position: relative;\\n\\n  height: \", \";\\n\\n  .wrapper {\\n    position: absolute;\\n    display: flex;\\n    flex-direction: column;\\n    width: 100%;\\n\\n    border: \", \";\\n    border-radius: \", \";\\n\\n    background-color: \", \";\\n    color: \", \";\\n\\n    font-size: \", \";\\n    font-family: \", \";\\n\\n    z-index: \", \";\\n\\n    &:hover {\\n      box-shadow: \", \";\\n    }\\n    &:active {\\n      box-shadow: \", \";\\n    }\\n    &:focus-within {\\n      box-shadow: \", \";\\n    }\\n  }\\n\"], [\"\\n  position: relative;\\n\\n  height: \", \";\\n\\n  .wrapper {\\n    position: absolute;\\n    display: flex;\\n    flex-direction: column;\\n    width: 100%;\\n\\n    border: \", \";\\n    border-radius: \", \";\\n\\n    background-color: \", \";\\n    color: \", \";\\n\\n    font-size: \", \";\\n    font-family: \", \";\\n\\n    z-index: \", \";\\n\\n    &:hover {\\n      box-shadow: \", \";\\n    }\\n    &:active {\\n      box-shadow: \", \";\\n    }\\n    &:focus-within {\\n      box-shadow: \", \";\\n    }\\n  }\\n\"])), function (props) { return parseInt(props.theme.height) + 2 + 'px'; }, function (props) { return props.theme.border; }, function (props) { return props.theme.borderRadius; }, function (props) { return props.theme.backgroundColor; }, function (props) { return props.theme.color; }, function (props) { return props.theme.fontSize; }, function (props) { return props.theme.fontFamily; }, function (props) { return props.theme.zIndex; }, function (props) { return props.theme.boxShadow; }, function (props) { return props.theme.boxShadow; }, function (props) { return props.theme.boxShadow; });\nvar templateObject_1;\n","/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n  return !Array.isArray\n    ? getTag(value) === '[object Array]'\n    : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\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  let result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n  return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n  return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n  return (\n    value === true ||\n    value === false ||\n    (isObjectLike(value) && getTag(value) == '[object Boolean]')\n  )\n}\n\nfunction isObject(value) {\n  return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n  return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n  return value == null\n    ? value === undefined\n      ? '[object Undefined]'\n      : '[object Null]'\n    : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n  `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n  `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n  `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n\n    let totalWeight = 0;\n\n    keys.forEach((key) => {\n      let obj = createKey(key);\n\n      totalWeight += obj.weight;\n\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n\n      totalWeight += obj.weight;\n    });\n\n    // Normalize weights so that their sum is equal to 1\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId]\n  }\n  keys() {\n    return this._keys\n  }\n  toJSON() {\n    return JSON.stringify(this._keys)\n  }\n}\n\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n  let getFn = null;\n\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, 'name')) {\n      throw new Error(MISSING_KEY_PROPERTY('name'))\n    }\n\n    const name = key.name;\n    src = name;\n\n    if (hasOwn.call(key, 'weight')) {\n      weight = key.weight;\n\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n      }\n    }\n\n    path = createKeyPath(name);\n    id = createKeyId(name);\n    getFn = key.getFn;\n  }\n\n  return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n  return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n\n  const deepGet = (obj, path, index) => {\n    if (!isDefined(obj)) {\n      return\n    }\n    if (!path[index]) {\n      // If there's no path left, we've arrived at the object we care about.\n      list.push(obj);\n    } else {\n      let key = path[index];\n\n      const value = obj[key];\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      // If we're at the last value in the path, and if it's a string/number/bool,\n      // add it to the list\n      if (\n        index === path.length - 1 &&\n        (isString(value) || isNumber(value) || isBoolean(value))\n      ) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        // Search each item in the array.\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path, index + 1);\n        }\n      } else if (path.length) {\n        // An object. Recurse further.\n        deepGet(value, path, index + 1);\n      }\n    }\n  };\n\n  // Backwards compatibility (since path used to be a string)\n  deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n  return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) =>\n    a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\n\nconst AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\n\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = new Map();\n  const m = Math.pow(10, mantissa);\n\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens)\n      }\n\n      // Default function is 1/sqrt(x), weight makes that variable\n      const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n      // In place of `toFixed(mantissa)`, for faster computation\n      const n = parseFloat(Math.round(norm * m) / m);\n\n      cache.set(numTokens, n);\n\n      return n\n    },\n    clear() {\n      cache.clear();\n    }\n  }\n}\n\nclass FuseIndex {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return\n    }\n\n    this.isCreated = true;\n\n    // List is Array<String>\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      // List is Array<Object>\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n\n    // Change ref index of every subsquent doc\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]]\n  }\n  size() {\n    return this.records.length\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return\n    }\n\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n\n    // Iterate over every key (i.e, path), and fetch the value at that key\n    this.keys.forEach((key, keyIndex) => {\n      let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n\n        while (stack.length) {\n          const { nestedArrIndex, value } = stack.pop();\n\n          if (!isDefined(value)) {\n            continue\n          }\n\n          if (isString(value) && !isBlank(value)) {\n            let subRecord = {\n              v: value,\n              i: nestedArrIndex,\n              n: this.norm.get(value)\n            };\n\n            subRecords.push(subRecord);\n          } else if (isArray(value)) {\n            value.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (isString(value) && !isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n\n        record.$[keyIndex] = subRecord;\n      }\n    });\n\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    }\n  }\n}\n\nfunction createIndex(\n  keys,\n  docs,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex\n}\n\nfunction parseIndex(\n  data,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex\n}\n\nfunction computeScore$1(\n  pattern,\n  {\n    errors = 0,\n    currentLocation = 0,\n    expectedLocation = 0,\n    distance = Config.distance,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  const accuracy = errors / pattern.length;\n\n  if (ignoreLocation) {\n    return accuracy\n  }\n\n  const proximity = Math.abs(expectedLocation - currentLocation);\n\n  if (!distance) {\n    // Dodge divide by zero error.\n    return proximity ? 1.0 : accuracy\n  }\n\n  return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n  matchmask = [],\n  minMatchCharLength = Config.minMatchCharLength\n) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n\n  // (i-1 - start) + 1 => i - start\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n\n  return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n  text,\n  pattern,\n  patternAlphabet,\n  {\n    location = Config.location,\n    distance = Config.distance,\n    threshold = Config.threshold,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    includeMatches = Config.includeMatches,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n  }\n\n  const patternLen = pattern.length;\n  // Set starting location at beginning text and initialize the alphabet.\n  const textLen = text.length;\n  // Handle the case when location > text.length\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  // Highest score beyond which we give up.\n  let currentThreshold = threshold;\n  // Is there a nearby exact match? (speedup)\n  let bestLocation = expectedLocation;\n\n  // Performance: only computer matches when the minMatchCharLength > 1\n  // OR if `includeMatches` is true.\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  // A mask of the matches, used for building the indices\n  const matchMask = computeMatches ? Array(textLen) : [];\n\n  let index;\n\n  // Get all exact matches, here for speed up\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n\n  // Reset the best location\n  bestLocation = -1;\n\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n\n  const mask = 1 << (patternLen - 1);\n\n  for (let i = 0; i < patternLen; i += 1) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from the match location we can stray\n    // at this error level.\n    let binMin = 0;\n    let binMid = binMax;\n\n    while (binMin < binMid) {\n      const score = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n\n      if (score <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n\n    // Use the result from this iteration as the maximum for the next.\n    binMax = binMid;\n\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches\n      ? textLen\n      : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n    // Initialize the bit array\n    let bitArr = Array(finish + 2);\n\n    bitArr[finish + 1] = (1 << i) - 1;\n\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n      if (computeMatches) {\n        // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n        matchMask[currentLocation] = +!!charMatch;\n      }\n\n      // First pass: exact match\n      bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n      // Subsequent passes: fuzzy match\n      if (i) {\n        bitArr[j] |=\n          ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n      }\n\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (finalScore <= currentThreshold) {\n          // Indeed it is\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n\n          // Already passed `loc`, downhill from here on in.\n          if (bestLocation <= expectedLocation) {\n            break\n          }\n\n          // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n\n    // No hope for a (better) match at greater error levels.\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    if (score > currentThreshold) {\n      break\n    }\n\n    lastBitArr = bitArr;\n  }\n\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(0.001, finalScore)\n  };\n\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n\n  return result\n}\n\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n  }\n\n  return mask\n}\n\nclass BitapSearch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n    this.chunks = [];\n\n    if (!this.pattern.length) {\n      return\n    }\n\n    const addChunk = (pattern, startIndex) => {\n      this.chunks.push({\n        pattern,\n        alphabet: createPatternAlphabet(pattern),\n        startIndex\n      });\n    };\n\n    const len = this.pattern.length;\n\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n\n    // Exact match\n    if (this.pattern === text) {\n      let result = {\n        isMatch: true,\n        score: 0\n      };\n\n      if (includeMatches) {\n        result.indices = [[0, text.length - 1]];\n      }\n\n      return result\n    }\n\n    // Otherwise, use Bitap algorithm\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n\n      if (isMatch) {\n        hasMatches = true;\n      }\n\n      totalScore += score;\n\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n\n    return result\n  }\n}\n\nclass BaseMatch {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex)\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex)\n  }\n  search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'exact'\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^=(.*)$/\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!(.*)$/\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'prefix-exact'\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-prefix-exact'\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'suffix-exact'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    }\n  }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-suffix-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\nclass FuzzyMatch extends BaseMatch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return 'fuzzy'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^(.*)$/\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text)\n  }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'include'\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^'(.*)$/\n  }\n  search(text) {\n    let location = 0;\n    let index;\n\n    const indices = [];\n    const patternLen = this.pattern.length;\n\n    // Get all exact matches\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n\n    const isMatch = !!indices.length;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    }\n  }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item\n      .trim()\n      .split(SPACE_RE)\n      .filter((item) => item && !!item.trim());\n\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n\n      // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n\n      if (found) {\n        continue\n      }\n\n      // 2. Handle single query matches (i.e, once that are *not* quoted)\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break\n        }\n      }\n    }\n\n    return results\n  })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token       | Match type                 | Description                            |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript`   | fuzzy-match                | Items that fuzzy match `jscript`       |\n * | `=scheme`   | exact-match                | Items that are `scheme`                |\n * | `'python`   | include-match              | Items that include `python`            |\n * | `!ruby`     | inverse-exact-match        | Items that do not include `ruby`       |\n * | `^java`     | prefix-exact-match         | Items that start with `java`           |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$`      | suffix-exact-match         | Items that end with `.js`              |\n * | `!.go$`     | inverse-suffix-exact-match | Items that do not end with `.go`       |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n  constructor(\n    pattern,\n    {\n      isCaseSensitive = Config.isCaseSensitive,\n      includeMatches = Config.includeMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      ignoreLocation = Config.ignoreLocation,\n      findAllMatches = Config.findAllMatches,\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance\n    } = {}\n  ) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n\n  static condition(_, options) {\n    return options.useExtendedSearch\n  }\n\n  searchIn(text) {\n    const query = this.query;\n\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      }\n    }\n\n    const { includeMatches, isCaseSensitive } = this.options;\n\n    text = isCaseSensitive ? text : text.toLowerCase();\n\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n\n    // ORs\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers = query[i];\n\n      // Reset indices\n      allIndices.length = 0;\n      numMatches = 0;\n\n      // ANDs\n      for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n        const searcher = searchers[j];\n        const { isMatch, indices, score } = searcher.search(text);\n\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break\n        }\n      }\n\n      // OR condition, so if TRUE, return\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n\n        return result\n      }\n    }\n\n    // Nothing was matched\n    return {\n      isMatch: false,\n      score: 1\n    }\n  }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options)\n    }\n  }\n\n  return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n  AND: '$and',\n  OR: '$or'\n};\n\nconst KeyType = {\n  PATH: '$path',\n  PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n  !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n  !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query) => {\n    let keys = Object.keys(query);\n\n    const isQueryPath = isPath(query);\n\n    if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n      return next(convertToExplicit(query))\n    }\n\n    if (isLeaf(query)) {\n      const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n      const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n      }\n\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n\n      return obj\n    }\n\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n\n    keys.forEach((key) => {\n      const value = query[key];\n\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n\n    return node\n  };\n\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n\n  return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n  results,\n  { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n  results.forEach((result) => {\n    let totalScore = 1;\n\n    result.matches.forEach(({ key, norm, score }) => {\n      const weight = key ? key.weight : null;\n\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n      );\n    });\n\n    result.score = totalScore;\n  });\n}\n\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n\n  if (!isDefined(matches)) {\n    return\n  }\n\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return\n    }\n\n    const { indices, value } = match;\n\n    let obj = {\n      indices,\n      value\n    };\n\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n\n    data.matches.push(obj);\n  });\n}\n\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\n\nfunction format(\n  results,\n  docs,\n  {\n    includeMatches = Config.includeMatches,\n    includeScore = Config.includeScore\n  } = {}\n) {\n  const transformers = [];\n\n  if (includeMatches) transformers.push(transformMatches);\n  if (includeScore) transformers.push(transformScore);\n\n  return results.map((result) => {\n    const { idx } = result;\n\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n\n    return data\n  })\n}\n\nclass Fuse {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n\n    if (\n      this.options.useExtendedSearch &&\n      !true\n    ) {\n      throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n    }\n\n    this._keyStore = new KeyStore(this.options.keys);\n\n    this.setCollection(docs, index);\n  }\n\n  setCollection(docs, index) {\n    this._docs = docs;\n\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE)\n    }\n\n    this._myIndex =\n      index ||\n      createIndex(this.options.keys, this._docs, {\n        getFn: this.options.getFn,\n        fieldNormWeight: this.options.fieldNormWeight\n      });\n  }\n\n  add(doc) {\n    if (!isDefined(doc)) {\n      return\n    }\n\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n\n  remove(predicate = (/* doc, idx */) => false) {\n    const results = [];\n\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n\n        results.push(doc);\n      }\n    }\n\n    return results\n  }\n\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n\n  getIndex() {\n    return this._myIndex\n  }\n\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n\n    let results = isString(query)\n      ? isString(this._docs[0])\n        ? this._searchStringList(query)\n        : this._searchObjectList(query)\n      : this._searchLogical(query);\n\n    computeScore(results, { ignoreFieldNorm });\n\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    })\n  }\n\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n\n    // Iterate over every string in the index\n    records.forEach(({ v: text, i: idx, n: norm }) => {\n      if (!isDefined(text)) {\n        return\n      }\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm, indices }]\n        });\n      }\n    });\n\n    return results\n  }\n\n  _searchLogical(query) {\n\n    const expression = parse(query, this.options);\n\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ]\n        }\n\n        return []\n      }\n\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return []\n        }\n      }\n      return res\n    };\n\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n\n        if (expResults.length) {\n          // Dedupe when adding\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n\n    return results\n  }\n\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n\n    // List is Array<Object>\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return\n      }\n\n      let matches = [];\n\n      // Iterate over every key (i.e, path), and fetch the value at that key\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n\n    return results\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return []\n    }\n\n    let matches = [];\n\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm }) => {\n        if (!isDefined(text)) {\n          return\n        }\n\n        const { isMatch, score, indices } = searcher.searchIn(text);\n\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm } = value;\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm, indices });\n      }\n    }\n\n    return matches\n  }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n  Fuse.parseQuery = parse;\n}\n\n{\n  register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultFuseOptions = exports.defaultTheme = void 0;\nvar defaultTheme = {\n    height: '44px',\n    border: '1px solid #dfe1e5',\n    borderRadius: '24px',\n    backgroundColor: 'white',\n    boxShadow: 'rgba(32, 33, 36, 0.28) 0px 1px 6px 0px',\n    hoverBackgroundColor: '#eee',\n    color: '#212121',\n    fontSize: '16px',\n    fontFamily: 'Arial',\n    iconColor: 'grey',\n    lineColor: 'rgb(232, 234, 237)',\n    placeholderColor: 'grey',\n    zIndex: 0,\n    clearIconMargin: '3px 14px 0 0',\n    searchIconMargin: '0 0 0 16px'\n};\nexports.defaultTheme = defaultTheme;\nvar defaultFuseOptions = {\n    shouldSort: true,\n    threshold: 0.6,\n    location: 0,\n    distance: 100,\n    minMatchCharLength: 1,\n    keys: ['name']\n};\nexports.defaultFuseOptions = defaultFuseOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounce = void 0;\nfunction debounce(func, wait, immediate) {\n    var timeout;\n    return function () {\n        var context = this;\n        var args = arguments;\n        var later = function () {\n            timeout = null;\n            if (!immediate)\n                func.apply(context, args);\n        };\n        if (immediate && !timeout)\n            func.apply(context, args);\n        timeout && clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n    };\n}\nexports.debounce = debounce;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar styled_components_1 = __importDefault(require(\"styled-components\"));\nvar SearchIcon_1 = require(\"./SearchIcon\");\nfunction Results(_a) {\n    var _b = _a.results, results = _b === void 0 ? [] : _b, onClick = _a.onClick, setSearchString = _a.setSearchString, showIcon = _a.showIcon, maxResults = _a.maxResults, _c = _a.resultStringKeyName, resultStringKeyName = _c === void 0 ? 'name' : _c, highlightedItem = _a.highlightedItem, setHighlightedItem = _a.setHighlightedItem, formatResult = _a.formatResult, _d = _a.showNoResultsFlag, showNoResultsFlag = _d === void 0 ? true : _d, _e = _a.showNoResultsText, showNoResultsText = _e === void 0 ? 'No results' : _e;\n    var formatResultWithKey = formatResult\n        ? formatResult\n        : function (item) { return item[resultStringKeyName]; };\n    var handleClick = function (result) {\n        onClick(result);\n        setSearchString(result[resultStringKeyName]);\n    };\n    var handleMouseDown = function (_a) {\n        var event = _a.event, result = _a.result;\n        if (event.button === 0) {\n            event.preventDefault();\n            handleClick(result);\n        }\n    };\n    if (showNoResultsFlag) {\n        return ((0, jsx_runtime_1.jsx)(ResultsWrapper, { children: (0, jsx_runtime_1.jsxs)(\"li\", __assign({ \"data-test\": \"no-results-message\" }, { children: [(0, jsx_runtime_1.jsx)(SearchIcon_1.SearchIcon, { showIcon: showIcon }), (0, jsx_runtime_1.jsx)(\"div\", __assign({ className: \"ellipsis\" }, { children: showNoResultsText }))] })) }));\n    }\n    if ((results === null || results === void 0 ? void 0 : results.length) <= 0 && !showNoResultsFlag) {\n        return null;\n    }\n    return ((0, jsx_runtime_1.jsx)(ResultsWrapper, { children: results.slice(0, maxResults).map(function (result, index) { return ((0, jsx_runtime_1.jsxs)(\"li\", __assign({ className: highlightedItem === index ? 'selected' : '', onMouseEnter: function () { return setHighlightedItem({ index: index }); }, \"data-test\": \"result\", onMouseDown: function (event) { return handleMouseDown({ event: event, result: result }); }, onClick: function () { return handleClick(result); } }, { children: [(0, jsx_runtime_1.jsx)(SearchIcon_1.SearchIcon, { showIcon: showIcon }), (0, jsx_runtime_1.jsx)(\"div\", __assign({ className: \"ellipsis\", title: result[resultStringKeyName] }, { children: formatResultWithKey(result) }))] }), \"rsa-result-\".concat(result.id))); }) }));\n}\nexports.default = Results;\nvar ResultsWrapper = function (_a) {\n    var children = _a.children;\n    return ((0, jsx_runtime_1.jsxs)(StyledResults, { children: [(0, jsx_runtime_1.jsx)(\"div\", { className: \"line\" }), (0, jsx_runtime_1.jsx)(\"ul\", { children: children })] }));\n};\nvar StyledResults = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n  > div.line {\\n    border-top-color: \", \";\\n    border-top-style: solid;\\n    border-top-width: 1px;\\n\\n    margin-bottom: 0px;\\n    margin-left: 14px;\\n    margin-right: 20px;\\n    margin-top: 0px;\\n\\n    padding-bottom: 4px;\\n  }\\n\\n  > ul {\\n    list-style-type: none;\\n    margin: 0;\\n    padding: 0px 0 16px 0;\\n    max-height: \", \";\\n\\n    > li {\\n      display: flex;\\n      align-items: center;\\n      padding: 4px 0 4px 0;\\n\\n      > div {\\n        margin-left: 13px;\\n      }\\n    }\\n  }\\n\\n  .ellipsis {\\n    text-align: left;\\n    width: 100%;\\n    white-space: nowrap;\\n    overflow: hidden;\\n    text-overflow: ellipsis;\\n  }\\n\\n  .selected {\\n    background-color: \", \";\\n  }\\n\"], [\"\\n  > div.line {\\n    border-top-color: \", \";\\n    border-top-style: solid;\\n    border-top-width: 1px;\\n\\n    margin-bottom: 0px;\\n    margin-left: 14px;\\n    margin-right: 20px;\\n    margin-top: 0px;\\n\\n    padding-bottom: 4px;\\n  }\\n\\n  > ul {\\n    list-style-type: none;\\n    margin: 0;\\n    padding: 0px 0 16px 0;\\n    max-height: \", \";\\n\\n    > li {\\n      display: flex;\\n      align-items: center;\\n      padding: 4px 0 4px 0;\\n\\n      > div {\\n        margin-left: 13px;\\n      }\\n    }\\n  }\\n\\n  .ellipsis {\\n    text-align: left;\\n    width: 100%;\\n    white-space: nowrap;\\n    overflow: hidden;\\n    text-overflow: ellipsis;\\n  }\\n\\n  .selected {\\n    background-color: \", \";\\n  }\\n\"])), function (props) { return props.theme.lineColor; }, function (props) { return props.theme.maxHeight; }, function (props) { return props.theme.hoverBackgroundColor; });\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar react_1 = require(\"react\");\nvar styled_components_1 = __importDefault(require(\"styled-components\"));\nvar ClearIcon_1 = require(\"./ClearIcon\");\nvar SearchIcon_1 = require(\"./SearchIcon\");\nfunction SearchInput(_a) {\n    var searchString = _a.searchString, setSearchString = _a.setSearchString, setHighlightedItem = _a.setHighlightedItem, eraseResults = _a.eraseResults, autoFocus = _a.autoFocus, onFocus = _a.onFocus, onClear = _a.onClear, placeholder = _a.placeholder, _b = _a.showIcon, showIcon = _b === void 0 ? true : _b, _c = _a.showClear, showClear = _c === void 0 ? true : _c, maxLength = _a.maxLength;\n    var ref = (0, react_1.useRef)(null);\n    var manualFocus = true;\n    var setFocus = function () {\n        manualFocus = false;\n        (ref === null || ref === void 0 ? void 0 : ref.current) && ref.current.focus();\n        manualFocus = true;\n    };\n    var handleOnFocus = function (event) {\n        manualFocus && onFocus(event);\n    };\n    var maxLengthProperty = maxLength ? { maxLength: maxLength } : {};\n    return ((0, jsx_runtime_1.jsxs)(StyledSearchInput, { children: [(0, jsx_runtime_1.jsx)(SearchIcon_1.SearchIcon, { showIcon: showIcon }), (0, jsx_runtime_1.jsx)(\"input\", __assign({ type: \"text\", ref: ref, spellCheck: false, value: searchString, onChange: setSearchString, onFocus: handleOnFocus, placeholder: placeholder, autoFocus: autoFocus, onBlur: function () { return eraseResults(); }, onKeyDown: function (event) { return setHighlightedItem({ event: event }); }, \"data-test\": \"search-input\" }, maxLengthProperty)), (0, jsx_runtime_1.jsx)(ClearIcon_1.ClearIcon, { showClear: showClear, setSearchString: setSearchString, searchString: searchString, onClear: onClear, setFocus: setFocus })] }));\n}\nexports.default = SearchInput;\nvar StyledSearchInput = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n  min-height: \", \";\\n  width: 100%;\\n\\n  display: flex;\\n  align-items: center;\\n\\n  > input {\\n    width: 100%;\\n\\n    padding: 0 0 0 13px;\\n\\n    border: none;\\n    outline: none;\\n\\n    background-color: rgba(0, 0, 0, 0);\\n    font-size: inherit;\\n    font-family: inherit;\\n\\n    color: \", \";\\n\\n    ::placeholder {\\n      color: \", \";\\n      opacity: 1;\\n\\n      :-ms-input-placeholder {\\n        color: \", \";\\n      }\\n\\n      ::-ms-input-placeholder {\\n        color: \", \";\\n      }\\n    }\\n  }\\n\"], [\"\\n  min-height: \", \";\\n  width: 100%;\\n\\n  display: flex;\\n  align-items: center;\\n\\n  > input {\\n    width: 100%;\\n\\n    padding: 0 0 0 13px;\\n\\n    border: none;\\n    outline: none;\\n\\n    background-color: rgba(0, 0, 0, 0);\\n    font-size: inherit;\\n    font-family: inherit;\\n\\n    color: \", \";\\n\\n    ::placeholder {\\n      color: \", \";\\n      opacity: 1;\\n\\n      :-ms-input-placeholder {\\n        color: \", \";\\n      }\\n\\n      ::-ms-input-placeholder {\\n        color: \", \";\\n      }\\n    }\\n  }\\n\"])), function (props) { return props.theme.height; }, function (props) { return props.theme.color; }, function (props) { return props.theme.placeholderColor; }, function (props) { return props.theme.placeholderColor; }, function (props) { return props.theme.placeholderColor; });\nvar templateObject_1;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClearIcon = void 0;\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar styled_components_1 = __importDefault(require(\"styled-components\"));\nvar ClearIcon = function (_a) {\n    var showClear = _a.showClear, setSearchString = _a.setSearchString, searchString = _a.searchString, setFocus = _a.setFocus, onClear = _a.onClear;\n    var handleClearSearchString = function () {\n        setSearchString({ target: { value: '' } });\n        setFocus();\n        onClear();\n    };\n    if (!showClear) {\n        return null;\n    }\n    if (!searchString || (searchString === null || searchString === void 0 ? void 0 : searchString.length) <= 0) {\n        return null;\n    }\n    return ((0, jsx_runtime_1.jsx)(StyledClearIcon, __assign({ className: \"clear-icon\", onClick: handleClearSearchString }, { children: (0, jsx_runtime_1.jsx)(\"svg\", __assign({ width: 20, height: 20, focusable: \"false\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\" }, { children: (0, jsx_runtime_1.jsx)(\"path\", { d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.58 12 5 17.58 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" }) })) })));\n};\nexports.ClearIcon = ClearIcon;\nvar StyledClearIcon = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n  margin: \", \";\\n\\n  &:hover {\\n    cursor: pointer;\\n  }\\n\\n  > svg {\\n    fill: \", \";\\n  }\\n\"], [\"\\n  margin: \", \";\\n\\n  &:hover {\\n    cursor: pointer;\\n  }\\n\\n  > svg {\\n    fill: \", \";\\n  }\\n\"])), function (props) { return props.theme.clearIconMargin; }, function (props) { return props.theme.iconColor; });\nvar templateObject_1;\n","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar placeholders = require(\"./placeholders\");\nvar utils_1 = require(\"./utils\");\nvar ReactPlaceholder = function (_a) {\n    var _b = _a.delay, delay = _b === void 0 ? 0 : _b, _c = _a.type, type = _c === void 0 ? 'text' : _c, _d = _a.color, color = _d === void 0 ? '#CDCDCD' : _d, _e = _a.rows, rows = _e === void 0 ? 3 : _e, readyProp = _a.ready, firstLaunchOnly = _a.firstLaunchOnly, children = _a.children, className = _a.className, showLoadingAnimation = _a.showLoadingAnimation, customPlaceholder = _a.customPlaceholder, rest = __rest(_a, [\"delay\", \"type\", \"color\", \"rows\", \"ready\", \"firstLaunchOnly\", \"children\", \"className\", \"showLoadingAnimation\", \"customPlaceholder\"]);\n    var _f = React.useState(readyProp), ready = _f[0], setReady = _f[1];\n    var timeout = React.useRef(null);\n    var getFiller = function () {\n        var classes = showLoadingAnimation\n            ? utils_1.joinClassNames('show-loading-animation', className)\n            : className;\n        if (customPlaceholder && React.isValidElement(customPlaceholder)) {\n            var mergedCustomClasses = utils_1.joinClassNames(customPlaceholder.props.className, classes);\n            return React.cloneElement(customPlaceholder, {\n                className: mergedCustomClasses\n            });\n        }\n        else if (customPlaceholder) {\n            return customPlaceholder;\n        }\n        var Placeholder = placeholders[type];\n        return (React.createElement(Placeholder, __assign({}, rest, { color: color, rows: rows, className: classes })));\n    };\n    React.useEffect(function () {\n        if (!firstLaunchOnly && ready && !readyProp) {\n            if (delay && delay > 0) {\n                timeout.current = window.setTimeout(function () {\n                    setReady(false);\n                }, delay);\n            }\n            else {\n                setReady(false);\n            }\n        }\n        else if (readyProp) {\n            if (timeout.current) {\n                window.clearTimeout(timeout.current);\n            }\n            if (!ready) {\n                setReady(true);\n            }\n        }\n    }, [firstLaunchOnly, ready, readyProp, delay]);\n    // clear the timeout when the component unmounts\n    React.useEffect(function () { return function () {\n        if (timeout.current) {\n            window.clearTimeout(timeout.current);\n        }\n    }; }, []);\n    // Casting - workaround for DefinitelyTyped/react issue with\n    // FunctionComponents returning ReactElement, where they should be able to\n    // return ReactNode. Casting also doesn't introduce another layer in the\n    // component tree like another `<>children</>` workaround does.\n    //\n    // See https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33006\n    // and https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051\n    return ready ? children : getFiller();\n};\nexports[\"default\"] = ReactPlaceholder;\n","\"use strict\";\nexports.__esModule = true;\nexports.media = exports.text = exports.rect = exports.round = exports.textRow = exports.MediaBlock = exports.TextBlock = exports.RectShape = exports.RoundShape = exports.TextRow = void 0;\nvar TextRow_1 = require(\"./TextRow\");\nexports.TextRow = TextRow_1[\"default\"];\nvar RoundShape_1 = require(\"./RoundShape\");\nexports.RoundShape = RoundShape_1[\"default\"];\nvar RectShape_1 = require(\"./RectShape\");\nexports.RectShape = RectShape_1[\"default\"];\nvar TextBlock_1 = require(\"./TextBlock\");\nexports.TextBlock = TextBlock_1[\"default\"];\nvar MediaBlock_1 = require(\"./MediaBlock\");\nexports.MediaBlock = MediaBlock_1[\"default\"];\nexports.textRow = TextRow_1[\"default\"];\nexports.round = RoundShape_1[\"default\"];\nexports.rect = RectShape_1[\"default\"];\nexports.text = TextBlock_1[\"default\"];\nexports.media = MediaBlock_1[\"default\"];\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar utils_1 = require(\"../utils\");\nvar RectShape = function (_a) {\n    var className = _a.className, style = _a.style, color = _a.color;\n    var defaultStyle = {\n        backgroundColor: color,\n        width: '100%',\n        height: '100%',\n        marginRight: 10\n    };\n    return (React.createElement(\"div\", { className: utils_1.joinClassNames('rect-shape', className), style: __assign(__assign({}, defaultStyle), style) }));\n};\nexports[\"default\"] = RectShape;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar TextBlock_1 = require(\"./TextBlock\");\nvar RoundShape_1 = require(\"./RoundShape\");\nvar utils_1 = require(\"../utils\");\nvar defaultStyles = {\n    display: 'flex'\n};\nvar MediaBlock = function (_a) {\n    var className = _a.className, style = _a.style, color = _a.color, rows = _a.rows;\n    return (React.createElement(\"div\", { className: utils_1.joinClassNames('media-block', className), style: __assign(__assign({}, defaultStyles), style) },\n        React.createElement(RoundShape_1[\"default\"], { color: color, style: { minHeight: 55, width: 55, minWidth: 55, marginRight: 10 } }),\n        React.createElement(TextBlock_1[\"default\"], { color: color, rows: rows })));\n};\nexports[\"default\"] = MediaBlock;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport {\r\n    ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto,\r\n    strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype\r\n} from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\n\r\nexport const SymbolObj = (getGlobal()||{})[\"Symbol\"];\r\nexport const ReflectObj = (getGlobal()||{})[\"Reflect\"];\r\nexport const __hasSymbol = !!SymbolObj;\r\nexport const __hasReflect = !!ReflectObj;\r\n\r\nconst strDecorate = \"decorate\";\r\nconst strMetadata = \"metadata\";\r\nconst strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nconst strIterator = \"iterator\";\r\n\r\nexport declare type ObjAssignFunc = (t: any, ...sources:any[]) => any;\r\n\r\nexport var __objAssignFnImpl: ObjAssignFunc = function(t: any): any {\r\n    // tslint:disable-next-line: ban-comma-operator\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) {\r\n            if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n                (t as any)[p] = s[p];\r\n            }\r\n        }\r\n    }\r\n    return t;\r\n};\r\n\r\nexport var __assignFn: ObjAssignFunc = ObjAssign || __objAssignFnImpl;\r\n\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function(d: any, b: any): any {\r\n    extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n        // tslint:disable-next-line: only-arrow-functions\r\n        ({ __proto__: [] } instanceof Array && function (d: any, b: any) {\r\n            d.__proto__ = b;\r\n        }) ||\r\n        // tslint:disable-next-line: only-arrow-functions\r\n        function (d: any, b: any) {\r\n            for (var p in b) {\r\n                if (b[strShimHasOwnProperty](p)) {\r\n                    d[p] = b[p];\r\n                }\r\n            }\r\n        };\r\n    return extendStaticsFn(d, b);\r\n};\r\n\r\nexport function __extendsFn(d: any, b: any) {\r\n    if (typeof b !== strShimFunction && b !== null) {\r\n        throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    }\r\n    extendStaticsFn(d, b);\r\n    function __(this: any) {\r\n        this.constructor = d;\r\n    }\r\n    // tslint:disable-next-line: ban-comma-operator\r\n    d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new (__ as any)());\r\n}\r\n\r\nexport function __restFn(s: any, e: any) {\r\n    var t = {};\r\n    for (var k in s) {\r\n        if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n            t[k] = s[k];\r\n        }\r\n    }\r\n    if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n        for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n                t[p[i]] = s[p[i]];\r\n            }\r\n        }\r\n    }\r\n    return t;\r\n}\r\n\r\nexport function __decorateFn(decorators: any, target: any, key: any, desc: any) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n    if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n        r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n    } else {\r\n        for (var i = decorators.length - 1; i >= 0; i--) {\r\n            // eslint-disable-next-line no-cond-assign\r\n            if (d = decorators[i]) {\r\n                r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n            }\r\n        }\r\n    }\r\n\r\n    // tslint:disable-next-line:ban-comma-operator\r\n    return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __paramFn(paramIndex: number, decorator: Function) {\r\n    return function (target: any, key: any) {\r\n        decorator(target, key, paramIndex);\r\n    }\r\n}\r\n\r\nexport function __metadataFn(metadataKey: any, metadataValue: any) {\r\n    if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n        return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n    }\r\n}\r\n\r\nexport function __exportStarFn(m: any, o: any) {\r\n    for (var p in m) {\r\n        if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n            __createBindingFn(o, m, p);\r\n        }\r\n    }\r\n}\r\n\r\nexport function __createBindingFn(o: any, m: any, k: any, k2?: any) {\r\n    if (k2 === undefined) {\r\n        k2 = k;\r\n    }\r\n    \r\n    if (!!ObjCreate) {\r\n        ObjDefineProperty(o, k2, {\r\n            enumerable: true,\r\n            get() {\r\n                return m[k];\r\n            }\r\n        });\r\n    } else {\r\n        o[k2] = m[k];\r\n    }\r\n}\r\n\r\nexport function __valuesFn(o: any) {\r\n    var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n    if (m) {\r\n        return m.call(o);\r\n    }\r\n\r\n    if (o && typeof o.length === \"number\") {\r\n        return {\r\n            next () {\r\n                if (o && i >= o.length) {\r\n                    o = void 0;\r\n                }\r\n                return { value: o && o[i++], done: !o };\r\n            }\r\n        };\r\n    }\r\n\r\n    throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __readFn(o: any, n: any) {\r\n    var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n    if (!m) {\r\n        return o;\r\n    }\r\n\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) {\r\n            ar.push(r.value);\r\n        }\r\n    } catch (error) {\r\n        e = {\r\n            error\r\n        };\r\n    } finally {\r\n        try {\r\n            // tslint:disable-next-line:no-conditional-assignment\r\n            if (r && !r.done && (m = i[\"return\"])) {\r\n                m.call(i);\r\n            }\r\n        } finally {\r\n            if (e) {\r\n                // eslint-disable-next-line no-unsafe-finally\r\n                throw e.error;\r\n            }\r\n        }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n    var theArgs = arguments;\r\n    // Calculate new total size\r\n    for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n        s += theArgs[i].length;\r\n    }\r\n\r\n    // Create new full array\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n        for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n            r[k] = a[j];\r\n        }\r\n    }\r\n\r\n    return r;\r\n}\r\n\r\nexport function __spreadArrayFn(to: any, from: any) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n        to[j] = from[i];\r\n    }\r\n\r\n    return to;\r\n}\r\n\r\nexport function __makeTemplateObjectFn(cooked: any, raw: any) {\r\n    if (ObjDefineProperty) {\r\n        ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n    } else {\r\n        cooked.raw = raw;\r\n    }\r\n\r\n    return cooked;\r\n}\r\n\r\nexport function __importStarFn(mod: any) {\r\n    if (mod && mod.__esModule) {\r\n        return mod;\r\n    }\r\n\r\n    var result = {};\r\n    if (mod != null) {\r\n        for (var k in mod) {\r\n            if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n                __createBindingFn(result, mod, k);\r\n            }\r\n        }\r\n    }\r\n\r\n    // Set default module\r\n    if (!!ObjCreate) {\r\n        ObjDefineProperty( result, strDefault, { enumerable: true, value: mod });\r\n    } else {\r\n        result[strDefault] = mod;\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nexport function __importDefaultFn(mod:any) {\r\n    return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\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\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\n\nvar usePrevious = function usePrevious(value, ignore) {\n  var ref = useRef();\n  useEffect(function () {\n    ref.current = ignore ? ref.current : value;\n  }, [value, ignore]);\n  return ref.current;\n};\n\nexport function useTranslation(ns) {\n  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var i18nFromProps = props.i18n;\n\n  var _ref = useContext(I18nContext) || {},\n      i18nFromContext = _ref.i18n,\n      defaultNSFromContext = _ref.defaultNS;\n\n  var i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n    var notReadyT = function notReadyT(k) {\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n\n    var retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n  var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n  var useSuspense = i18nOptions.useSuspense,\n      keyPrefix = i18nOptions.keyPrefix;\n  var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n    return hasLoadedNamespace(n, i18n, i18nOptions);\n  });\n\n  function getT() {\n    return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  }\n\n  var _useState = useState(getT),\n      _useState2 = _slicedToArray(_useState, 2),\n      t = _useState2[0],\n      setT = _useState2[1];\n\n  var joinedNS = namespaces.join();\n  var previousJoinedNS = usePrevious(joinedNS);\n  var isMounted = useRef(true);\n  useEffect(function () {\n    var bindI18n = i18nOptions.bindI18n,\n        bindI18nStore = i18nOptions.bindI18nStore;\n    isMounted.current = true;\n\n    if (!ready && !useSuspense) {\n      loadNamespaces(i18n, namespaces, function () {\n        if (isMounted.current) setT(getT);\n      });\n    }\n\n    if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n      setT(getT);\n    }\n\n    function boundReset() {\n      if (isMounted.current) setT(getT);\n    }\n\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return function () {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n        return i18n.off(e, boundReset);\n      });\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n        return i18n.store.off(e, boundReset);\n      });\n    };\n  }, [i18n, joinedNS]);\n  var isInitial = useRef(true);\n  useEffect(function () {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n\n    isInitial.current = false;\n  }, [i18n, keyPrefix]);\n  var ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(function (resolve) {\n    loadNamespaces(i18n, namespaces, function () {\n      resolve();\n    });\n  });\n}","/**\r\n* ReactPlugin.ts\r\n* @copyright Microsoft 2019\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, _throwInternal, arrForEach, isFunction, objDefineAccessors, proxyFunctions, safeGetCookieMgr } from \"@microsoft/applicationinsights-core-js\";\r\nvar ReactPlugin = /** @class */ (function (_super) {\r\n    __extends(ReactPlugin, _super);\r\n    function ReactPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.priority = 185;\r\n        _this.identifier = 'ReactPlugin';\r\n        var _analyticsPlugin;\r\n        var _extensionConfig;\r\n        var _unlisten;\r\n        var _pageViewTimer;\r\n        dynamicProto(ReactPlugin, _this, function (_self, _base) {\r\n            _initDefaults();\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                _super.prototype.initialize.call(_this, config, core, extensions, pluginChain);\r\n                _extensionConfig =\r\n                    config.extensionConfig && config.extensionConfig[_self.identifier]\r\n                        ? config.extensionConfig[_self.identifier]\r\n                        : { history: null };\r\n                arrForEach(extensions, function (ext) {\r\n                    var identifier = ext.identifier;\r\n                    if (identifier === 'ApplicationInsightsAnalytics') {\r\n                        _analyticsPlugin = ext;\r\n                    }\r\n                });\r\n                if (_extensionConfig.history) {\r\n                    _addHistoryListener(_extensionConfig.history);\r\n                    var pageViewTelemetry = {\r\n                        uri: _extensionConfig.history.location.pathname\r\n                    };\r\n                    _self.trackPageView(pageViewTelemetry);\r\n                }\r\n            };\r\n            _self.getCookieMgr = function () {\r\n                return safeGetCookieMgr(_self.core);\r\n            };\r\n            _self.getAppInsights = _getAnalytics;\r\n            _self.processTelemetry = function (event, itemCtx) {\r\n                _self.processNext(event, itemCtx);\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState, asyncCallback) {\r\n                if (isFunction(_unlisten)) {\r\n                    _unlisten();\r\n                }\r\n                if (_pageViewTimer) {\r\n                    clearTimeout(_pageViewTimer);\r\n                }\r\n                _initDefaults();\r\n            };\r\n            // Proxy the analytics functions\r\n            proxyFunctions(_self, _getAnalytics, [\r\n                \"trackMetric\",\r\n                \"trackPageView\",\r\n                \"trackEvent\",\r\n                \"trackException\",\r\n                \"trackTrace\",\r\n            ]);\r\n            function _initDefaults() {\r\n                _analyticsPlugin = null;\r\n                _extensionConfig = null;\r\n                _unlisten = null;\r\n                _pageViewTimer = null;\r\n            }\r\n            function _getAnalytics() {\r\n                if (!_analyticsPlugin) {\r\n                    _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n                }\r\n                return _analyticsPlugin;\r\n            }\r\n            function _addHistoryListener(history) {\r\n                var locationListener = function (arg) {\r\n                    // v4 of the history API passes \"location\" as the first argument, while v5 passes an object that contains location and action \r\n                    var locn = null;\r\n                    if (\"location\" in arg) {\r\n                        // Looks like v5\r\n                        locn = arg[\"location\"];\r\n                    }\r\n                    else {\r\n                        locn = arg;\r\n                    }\r\n                    // Timeout to ensure any changes to the DOM made by route changes get included in pageView telemetry\r\n                    _pageViewTimer = setTimeout(function () {\r\n                        _pageViewTimer = null;\r\n                        var pageViewTelemetry = { uri: locn.pathname };\r\n                        _self.trackPageView(pageViewTelemetry);\r\n                    }, 500);\r\n                };\r\n                _unlisten = history.listen(locationListener);\r\n            }\r\n            objDefineAccessors(_self, \"_extensionConfig\", function () { return _extensionConfig; });\r\n        });\r\n        return _this;\r\n    }\r\n    ReactPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Get the current cookie manager for this instance\r\n     */\r\n    ReactPlugin.prototype.getCookieMgr = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Get application insights instance.\r\n     */\r\n    ReactPlugin.prototype.getAppInsights = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Add Part A fields to the event\r\n     * @param event The event that needs to be processed\r\n     */\r\n    ReactPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    ReactPlugin.prototype.trackMetric = function (metric, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    ReactPlugin.prototype.trackPageView = function (pageView) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    ReactPlugin.prototype.trackEvent = function (event, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    ReactPlugin.prototype.trackException = function (exception, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    ReactPlugin.prototype.trackTrace = function (trace, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return ReactPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default ReactPlugin;\r\n//# sourceMappingURL=ReactPlugin.js.map","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\n *\n * @export\n * @enum {number}\n */\nexport enum PerformanceEvents {\n\n    /**\n     * acquireTokenByCode API (msal-browser and msal-node).\n     * Used to acquire tokens by trading an authorization code against the token endpoint.\n     */\n    AcquireTokenByCode = \"acquireTokenByCode\",\n\n    /**\n     * acquireTokenByRefreshToken API (msal-browser and msal-node).\n     * Used to renew an access token using a refresh token against the token endpoint.\n     */\n    AcquireTokenByRefreshToken = \"acquireTokenByRefreshToken\",\n\n    /**\n     * acquireTokenSilent API (msal-browser and msal-node).\n     * Used to silently acquire a new access token (from the cache or the network).\n     */\n    AcquireTokenSilent = \"acquireTokenSilent\",\n\n    /**\n     * acquireTokenSilentAsync (msal-browser).\n     * Internal API for acquireTokenSilent.\n     */\n    AcquireTokenSilentAsync = \"acquireTokenSilentAsync\",\n\n    /**\n     * acquireTokenPopup (msal-browser).\n     * Used to acquire a new access token interactively through pop ups\n     */\n    AcquireTokenPopup = \"acquireTokenPopup\",\n\n    /**\n     * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\n     * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\n     */\n    CryptoOptsGetPublicKeyThumbprint = \"cryptoOptsGetPublicKeyThumbprint\",\n\n    /**\n     * signJwt API in CryptoOpts class (msal-browser).\n     * Used to signed a pop token.\n     */\n    CryptoOptsSignJwt = \"cryptoOptsSignJwt\",\n\n    /**\n     * acquireToken API in the SilentCacheClient class (msal-browser).\n     * Used to read access tokens from the cache.\n     */\n    SilentCacheClientAcquireToken = \"silentCacheClientAcquireToken\",\n\n    /**\n     * acquireToken API in the SilentIframeClient class (msal-browser).\n     * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\n     */\n    SilentIframeClientAcquireToken = \"silentIframeClientAcquireToken\",\n\n    /**\n     * acquireToken API in SilentRereshClient (msal-browser).\n     * Used to acquire a new set of tokens from the token endpoint using a refresh token.\n     */\n    SilentRefreshClientAcquireToken = \"silentRefreshClientAcquireToken\",\n\n    /**\n     * ssoSilent API (msal-browser).\n     * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\n     */\n    SsoSilent = \"ssoSilent\",\n\n    /**\n     * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\n     * Used to load authority metadata for a request.\n     */\n    StandardInteractionClientGetDiscoveredAuthority = \"standardInteractionClientGetDiscoveredAuthority\",\n\n    /**\n     * acquireToken APIs in msal-browser.\n     * Used to make an /authorize endpoint call with native brokering enabled.\n     */\n    FetchAccountIdWithNativeBroker = \"fetchAccountIdWithNativeBroker\",\n\n    /**\n     * acquireToken API in NativeInteractionClient class (msal-browser).\n     * Used to acquire a token from Native component when native brokering is enabled.\n     */\n    NativeInteractionClientAcquireToken = \"nativeInteractionClientAcquireToken\",\n    /**\n     * Time spent creating default headers for requests to token endpoint\n     */\n    BaseClientCreateTokenRequestHeaders = \"baseClientCreateTokenRequestHeaders\",\n    /**\n     * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\n     */\n    BrokerHandhshake = \"brokerHandshake\",\n    /**\n     * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\n     */\n    AcquireTokenByRefreshTokenInBroker = \"acquireTokenByRefreshTokenInBroker\",\n    /**\n     * Time taken for token acquisition by broker\n     */\n    AcquireTokenByBroker = \"acquireTokenByBroker\",\n\n    /**\n     * Time spent on the network for refresh token acquisition\n     */\n    RefreshTokenClientExecuteTokenRequest = \"refreshTokenClientExecuteTokenRequest\",\n\n    /**\n     * Time taken for acquiring refresh token , records RT size\n     */\n    RefreshTokenClientAcquireToken = \"refreshTokenClientAcquireToken\",\n\n    /**\n     * Time taken for acquiring cached refresh token\n     */\n    RefreshTokenClientAcquireTokenWithCachedRefreshToken = \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\n\n    /**\n     * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\n     */\n    RefreshTokenClientAcquireTokenByRefreshToken = \"refreshTokenClientAcquireTokenByRefreshToken\",\n\n    /**\n     * Helper function to create token request body in RefreshTokenClient (msal-common).\n     */\n    RefreshTokenClientCreateTokenRequestBody = \"refreshTokenClientCreateTokenRequestBody\",\n\n    /**\n     * acquireTokenFromCache (msal-browser).\n     * Internal API for acquiring token from cache\n     */\n    AcquireTokenFromCache = \"acquireTokenFromCache\",\n\n    /**\n     * acquireTokenBySilentIframe (msal-browser).\n     * Internal API for acquiring token by silent Iframe\n     */\n    AcquireTokenBySilentIframe = \"acquireTokenBySilentIframe\",\n\n    /**\n     * Internal API for initializing base request in BaseInteractionClient (msal-browser)\n     */\n    InitializeBaseRequest = \"initializeBaseRequest\",\n\n    /**\n     * Internal API for initializing silent request in SilentCacheClient (msal-browser)\n     */\n    InitializeSilentRequest = \"initializeSilentRequest\",\n\n    /**\n     * Helper function in SilentIframeClient class (msal-browser).\n     */\n    SilentIframeClientTokenHelper = \"silentIframeClientTokenHelper\",\n\n    /**\n     * SilentHandler\n     */\n    SilentHandlerInitiateAuthRequest = \"silentHandlerInitiateAuthRequest\",\n    SilentHandlerMonitorIframeForHash = \"silentHandlerMonitorIframeForHash\",\n    SilentHandlerLoadFrame = \"silentHandlerLoadFrame\",\n\n    /**\n     * Helper functions in StandardInteractionClient class (msal-browser)\n     */\n    StandardInteractionClientCreateAuthCodeClient = \"standardInteractionClientCreateAuthCodeClient\",\n    StandardInteractionClientGetClientConfiguration = \"standardInteractionClientGetClientConfiguration\",\n    StandardInteractionClientInitializeAuthorizationRequest = \"standardInteractionClientInitializeAuthorizationRequest\",\n    StandardInteractionClientInitializeAuthorizationCodeRequest = \"standardInteractionClientInitializeAuthorizationCodeRequest\",\n\n    /**\n     * getAuthCodeUrl API (msal-browser and msal-node).\n     */\n    GetAuthCodeUrl = \"getAuthCodeUrl\",\n\n    /**\n     * Functions from InteractionHandler (msal-browser)\n     */\n    HandleCodeResponseFromServer = \"handleCodeResponseFromServer\",\n    HandleCodeResponseFromHash = \"handleCodeResponseFromHash\",\n    UpdateTokenEndpointAuthority = \"updateTokenEndpointAuthority\",\n\n    /**\n     * APIs in Authorization Code Client (msal-common)\n     */\n    AuthClientAcquireToken = \"authClientAcquireToken\",\n    AuthClientExecuteTokenRequest = \"authClientExecuteTokenRequest\",\n    AuthClientCreateTokenRequestBody = \"authClientCreateTokenRequestBody\",\n    AuthClientCreateQueryString = \"authClientCreateQueryString\",\n\n    /**\n     * Generate functions in PopTokenGenerator (msal-common)\n     */\n    PopTokenGenerateCnf = \"popTokenGenerateCnf\",\n    PopTokenGenerateKid = \"popTokenGenerateKid\",\n\n    /**\n     * handleServerTokenResponse API in ResponseHandler (msal-common)\n     */\n    HandleServerTokenResponse = \"handleServerTokenResponse\",\n\n    /**\n     * Authority functions\n     */\n    AuthorityFactoryCreateDiscoveredInstance = \"authorityFactoryCreateDiscoveredInstance\",\n    AuthorityResolveEndpointsAsync = \"authorityResolveEndpointsAsync\",\n    AuthorityGetCloudDiscoveryMetadataFromNetwork = \"authorityGetCloudDiscoveryMetadataFromNetwork\",\n    AuthorityUpdateCloudDiscoveryMetadata = \"authorityUpdateCloudDiscoveryMetadata\",\n    AuthorityGetEndpointMetadataFromNetwork = \"authorityGetEndpointMetadataFromNetwork\",\n    AuthorityUpdateEndpointMetadata = \"authorityUpdateEndpointMetadata\",\n    AuthorityUpdateMetadataWithRegionalInformation = \"authorityUpdateMetadataWithRegionalInformation\",\n\n    /**\n     * Region Discovery functions\n     */\n    RegionDiscoveryDetectRegion = \"regionDiscoveryDetectRegion\",\n    RegionDiscoveryGetRegionFromIMDS = \"regionDiscoveryGetRegionFromIMDS\",\n    RegionDiscoveryGetCurrentVersion = \"regionDiscoveryGetCurrentVersion\",\n\n    AcquireTokenByCodeAsync = \"acquireTokenByCodeAsync\",\n\n    GetEndpointMetadataFromNetwork = \"getEndpointMetadataFromNetwork\",\n    GetCloudDiscoveryMetadataFromNetworkMeasurement = \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\n\n    HandleRedirectPromiseMeasurement= \"handleRedirectPromiseMeasurement\",\n\n    UpdateCloudDiscoveryMetadataMeasurement = \"updateCloudDiscoveryMetadataMeasurement\",\n\n    UsernamePasswordClientAcquireToken = \"usernamePasswordClientAcquireToken\",\n\n}\n\n/**\n * State of the performance event.\n *\n * @export\n * @enum {number}\n */\nexport enum PerformanceEventStatus {\n    NotStarted,\n    InProgress,\n    Completed\n}\n\n/**\n * Fields whose value will not change throughout a request\n */\nexport type StaticFields = {\n    /**\n     * The Silent Token Cache Lookup Policy\n     *\n     * @type {?(number | undefined)}\n     */\n    cacheLookupPolicy?: number | undefined,\n\n    /**\n     * Size of the id token\n     *\n     * @type {number}\n     */\n    idTokenSize?: number,\n\n    /**\n     *\n     * Size of the access token\n     *\n     * @type {number}\n     */\n\n    accessTokenSize?: number,\n\n    /**\n     *\n     * Size of the refresh token\n     *\n     * @type {number}\n     */\n\n    refreshTokenSize?: number | undefined,\n\n    /**\n     * Application name as specified by the app.\n     *\n     * @type {?string}\n     */\n    appName?: string,\n\n    /**\n     * Application version as specified by the app.\n     *\n     * @type {?string}\n     */\n    appVersion?: string,\n\n    /**\n     * The following are fields that may be emitted in native broker scenarios\n     */\n    extensionId?: string,\n    extensionVersion?: string\n    matsBrokerVersion?: string;\n    matsAccountJoinOnStart?: string;\n    matsAccountJoinOnEnd?: string;\n    matsDeviceJoin?: string;\n    matsPromptBehavior?: string;\n    matsApiErrorCode?: number;\n    matsUiVisible?: boolean;\n    matsSilentCode?: number;\n    matsSilentBiSubCode?: number;\n    matsSilentMessage?: string;\n    matsSilentStatus?: number;\n    matsHttpStatus?: number\n    matsHttpEventCount?: number;\n    httpVerToken?: string;\n    httpVerAuthority?: string;\n};\n\n/**\n * Fields whose value may change throughout a request\n */\nexport type Counters = {\n    visibilityChangeCount?: number;\n    incompleteSubsCount?: number;\n};\n\n/**\n * Performance measurement taken by the library, including metadata about the request and application.\n *\n * @export\n * @typedef {PerformanceEvent}\n */\nexport type PerformanceEvent = StaticFields & Counters & {\n    /**\n     * Unique id for the event\n     *\n     * @type {string}\n     */\n    eventId: string,\n\n    /**\n     * State of the perforance measure.\n     *\n     * @type {PerformanceEventStatus}\n     */\n    status: PerformanceEventStatus,\n\n    /**\n     * Login authority used for the request\n     *\n     * @type {string}\n     */\n    authority: string,\n\n    /**\n     * Client id for the application\n     *\n     * @type {string}\n     */\n    clientId: string\n\n    /**\n     * Correlation ID used for the request\n     *\n     * @type {string}\n     */\n    correlationId: string,\n\n    /**\n     * End-to-end duration in milliseconds.\n     * @date 3/22/2022 - 3:40:05 PM\n     *\n     * @type {number}\n     */\n    durationMs?: number,\n\n    /**\n     * Visibility of the page when the event completed.\n     * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n     *\n     * @type {?(string | null)}\n     */\n    endPageVisibility?: string | null,\n\n    /**\n     * Whether the result was retrieved from the cache.\n     *\n     * @type {(boolean | null)}\n     */\n    fromCache?: boolean | null,\n\n    /**\n     * Event name (usually in the form of classNameFunctionName)\n     *\n     * @type {PerformanceEvents}\n     */\n    name: PerformanceEvents,\n\n    /**\n     * Visibility of the page when the event completed.\n     * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n     *\n     * @type {?(string | null)}\n     */\n    startPageVisibility?: string | null,\n\n    /**\n     * Unix millisecond timestamp when the event was initiated.\n     *\n     * @type {number}\n     */\n    startTimeMs: number,\n\n    /**\n     * Whether or the operation completed successfully.\n     *\n     * @type {(boolean | null)}\n     */\n    success?: boolean | null,\n\n    /**\n     * Add specific error code in case of failure\n     *\n     * @type {string}\n     */\n    errorCode?: string,\n\n    /**\n     * Add specific sub error code in case of failure\n     *\n     * @type {string}\n     */\n    subErrorCode?: string,\n\n    /**\n     * Name of the library used for the operation.\n     *\n     * @type {string}\n     */\n    libraryName: string,\n\n    /**\n     * Version of the library used for the operation.\n     *\n     * @type {string}\n     */\n    libraryVersion: string,\n\n    /**\n     * Whether the response is from a native component (e.g., WAM)\n     *\n     * @type {?boolean}\n     */\n    isNativeBroker?: boolean,\n\n    /**\n     * Request ID returned from the response\n     *\n     * @type {?string}\n     */\n    requestId?: string\n\n    /**\n     * Cache lookup policy\n     *\n     * @type {?number}\n     */\n    cacheLookupPolicy?: number | undefined,\n\n    /**\n     * Amount of time spent in the JS queue in milliseconds.\n     *\n     * @type {?number}\n     */\n    queuedTimeMs?: number,\n\n    /**\n     * Amount of times queued in the JS event queue.\n     *\n     * @type {?number}\n     */\n    queuedCount?: number\n};\n\nexport const IntFields: ReadonlySet<string> = new Set([\n    \"accessTokenSize\",\n    \"durationMs\",\n    \"idTokenSize\",\n    \"matsSilentStatus\",\n    \"matsHttpStatus\",\n    \"refreshTokenSize\",\n    \"queuedTimeMs\",\n    \"startTimeMs\",\n    \"status\",\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 { CachedKeyPair } from \"../crypto/CryptoOps\";\nimport { AsyncMemoryStorage } from \"./AsyncMemoryStorage\";\n\nexport enum CryptoKeyStoreNames {\n    asymmetricKeys = \"asymmetricKeys\",\n    symmetricKeys = \"symmetricKeys\"\n}\n/**\n * MSAL CryptoKeyStore DB Version 2\n */\nexport class CryptoKeyStore {\n    public asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;\n    public symmetricKeys: AsyncMemoryStorage<CryptoKey>;\n    public logger: Logger;\n\n    constructor(logger: Logger){\n        this.logger = logger;\n        this.asymmetricKeys = new AsyncMemoryStorage<CachedKeyPair>(this.logger, CryptoKeyStoreNames.asymmetricKeys);\n        this.symmetricKeys = new AsyncMemoryStorage<CryptoKey>(this.logger, CryptoKeyStoreNames.symmetricKeys);\n    }\n\n    async clear(): Promise<boolean> {\n        // Delete in-memory keystores\n        this.asymmetricKeys.clearInMemory();\n\t    this.symmetricKeys.clearInMemory();\n\t\t\n        /**\n         * There is only one database, so calling clearPersistent on asymmetric keystore takes care of\n         * every persistent keystore\n         */\n        try {\n            await this.asymmetricKeys.clearPersistent();\n            return true;\n        } catch (e) {\n            if (e instanceof Error) {\n                this.logger.error(`Clearing keystore failed with error: ${e.message}`);\n            } else {\n                this.logger.error(\"Clearing keystore failed with unknown error\");\n            }\n            \n            return false;\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 * 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 { AuthError } from \"./AuthError\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const JoseHeaderErrorMessage = {\n    missingKidError: {\n        code: \"missing_kid_error\",\n        desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\n    },\n    missingAlgError: {\n        code: \"missing_alg_error\",\n        desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\n    },\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class JoseHeaderError extends AuthError {\n    constructor(errorCode: string, errorMessage?: string) {\n        super(errorCode, errorMessage);\n        this.name = \"JoseHeaderError\";\n\n        Object.setPrototypeOf(this, JoseHeaderError.prototype);\n    }\n\n    /**\n     * Creates an error thrown when keyId isn't set on JOSE header.\n     */\n    static createMissingKidError(): JoseHeaderError {\n        return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\n    }\n\n    /**\n     * Creates an error thrown when algorithm isn't set on JOSE header.\n     */\n    static createMissingAlgError(): JoseHeaderError {\n        return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { JoseHeaderError } from \"../error/JoseHeaderError\";\nimport { JsonTypes } from \"../utils/Constants\";\n\nexport type JoseHeaderOptions = {\n    typ?: JsonTypes,\n    alg?: string,\n    kid?: string\n};\n\nexport class JoseHeader {\n    public typ?: JsonTypes;\n    public alg?: string;\n    public kid?: string;\n\n    constructor (options: JoseHeaderOptions) {\n        this.typ = options.typ;\n        this.alg = options.alg;\n        this.kid = options.kid;\n    }\n\n    /**\n     * Builds SignedHttpRequest formatted JOSE Header from the\n     * JOSE Header options provided or previously set on the object and returns\n     * the stringified header object.\n     * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\n     * @param shrHeaderOptions \n     * @returns \n     */\n    static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {\n        // KeyID is required on the SHR header\n        if (!shrHeaderOptions.kid) {\n            throw JoseHeaderError.createMissingKidError();\n        }\n\n        // Alg is required on the SHR header\n        if (!shrHeaderOptions.alg) {\n            throw JoseHeaderError.createMissingAlgError();\n        }\n\n        const shrHeader = new JoseHeader({\n            // Access Token PoP headers must have type JWT, but the type header can be overriden for special cases\n            typ: shrHeaderOptions.typ || JsonTypes.Jwt,\n            kid: shrHeaderOptions.kid,\n            alg: shrHeaderOptions.alg\n        });\n\n        return JSON.stringify(shrHeader);\n    }\n}\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 { Constants , IGuidGenerator } from \"@azure/msal-common\";\nimport { MathUtils } from \"../utils/MathUtils\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nexport class GuidGenerator implements IGuidGenerator {\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 = Constants.EMPTY_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    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\nimport { Constants } from \"@azure/msal-common\";\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 = Constants.EMPTY_STRING;\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     * Returns stringified jwk.\n     * @param jwk \n     */\n    static getSortedObjectString(obj: object): string {\n        return JSON.stringify(obj, Object.keys(obj).sort());\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\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, Constants.EMPTY_STRING)\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, Constants.EMPTY_STRING)\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 = Constants.EMPTY_STRING;\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 { Constants } from \"@azure/msal-common\";\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, Constants.EMPTY_STRING);\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. For more visit: aka.ms/msaljs/browser-errors.\"\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. For more visit: aka.ms/msaljs/browser-errors.\"\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: \"Redirects are not supported for iframed or brokered applications. 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' or 'no_session'.\"\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    authCodeOrNativeAccountRequired: {\n        code: \"auth_code_or_nativeAccountId_required\",\n        desc: \"An authorization code or nativeAccountId must be provided 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    unableToAcquireTokenFromNativePlatform: {\n        code: \"unable_to_acquire_token_from_native_platform\",\n        desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\n    },\n    nativeHandshakeTimeout: {\n        code: \"native_handshake_timeout\",\n        desc: \"Timed out while attempting to establish connection to browser extension\"\n    },\n    nativeExtensionNotInstalled: {\n        code: \"native_extension_not_installed\",\n        desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\n    },\n    nativeConnectionNotEstablished: {\n        code: \"native_connection_not_established\",\n        desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\n    },\n    nativeBrokerCalledBeforeInitialize: {\n        code: \"native_broker_called_before_initialize\",\n        desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\n    },\n    nativePromptNotSupported: {\n        code: \"native_prompt_not_supported\",\n        desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\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 or brokered applications.\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 an authorization code or native account ID is required but not provided\n     */\n    static createAuthCodeOrNativeAccountIdRequiredError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.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     * Create an error when native token acquisition is not possible\n     */\n    static createUnableToAcquireTokenFromNativePlatformError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\n    }\n\n    /**\n     * Create an error thrown when Handshake with browser extension times out\n     */\n    static createNativeHandshakeTimeoutError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\n    }\n\n    /**\n     * Create an error thrown when browser extension is not installed\n     */\n    static createNativeExtensionNotInstalledError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\n    }\n\n    /**\n     * Create an error when native connection has not been established\n     * @returns\n     */\n    static createNativeConnectionNotEstablishedError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\n    }\n\n    /**\n     * Create an error thrown when the initialize function hasn't been called\n     */\n    static createNativeBrokerCalledBeforeInitialize(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\n    }\n\n    /**\n     * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\n     * These requests must go through eSTS to ensure eSTS is aware of the new account\n     */\n    static createNativePromptParameterNotSupportedError(): BrowserAuthError {\n        return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.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 { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\n\nexport class ModernBrowserCrypto implements ISubtleCrypto {\n    getRandomValues(dataBuffer: Uint8Array): Uint8Array {\n        return window.crypto.getRandomValues(dataBuffer);\n    }\n\n    async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair> {\n        return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages) as Promise<CryptoKeyPair>;\n    }\n\n    async exportKey(key: CryptoKey): Promise<JsonWebKey> {\n        return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key) as Promise<JsonWebKey>;\n    }\n\n    async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {\n        return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages) as Promise<CryptoKey>;\n    }\n\n    async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n        return window.crypto.subtle.sign(algorithm, key, data) as Promise<ArrayBuffer>;\n    }\n\n    async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer> {\n        return window.crypto.subtle.digest(algorithm, data) as Promise<ArrayBuffer>;\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\n\ndeclare global {\n    interface Window {\n        msrCrypto: Crypto & {\n            initPrng: (entropy: Uint8Array | number[]) => void\n        }\n    }\n}\n\nexport class MsrBrowserCrypto implements ISubtleCrypto {\n    initPrng(entropy : Uint8Array): void {\n        // Turn into array, as initPrng seems to not always like Uint8Array (even though it should support both)\n        return window.msrCrypto.initPrng([...entropy]);\n    }\n\n    getRandomValues(dataBuffer: Uint8Array): Uint8Array {\n        return window.msrCrypto.getRandomValues(dataBuffer);\n    }\n\n    async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair> {\n        return window.msrCrypto.subtle.generateKey(algorithm, extractable, keyUsages) as Promise<CryptoKeyPair>;\n    }\n\n    async exportKey(key: CryptoKey): Promise<JsonWebKey> {\n        return window.msrCrypto.subtle.exportKey(KEY_FORMAT_JWK, key) as Promise<JsonWebKey> as Promise<JsonWebKey>;\n    }\n\n    async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {\n        return window.msrCrypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages) as Promise<CryptoKey>;\n    }\n\n    async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n        return window.msrCrypto.subtle.sign(algorithm, key, data) as Promise<ArrayBuffer>;\n    }\n\n    async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer> {\n        return window.msrCrypto.subtle.digest(algorithm, data) as Promise<ArrayBuffer>; \n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\n\nexport class MsBrowserCrypto implements ISubtleCrypto {\n    getRandomValues(dataBuffer: Uint8Array): Uint8Array {\n        return window[\"msCrypto\"].getRandomValues(dataBuffer);\n    }\n\n    async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair> {\n        return new Promise((resolve: Function, reject: Function) => {\n            const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(algorithm, extractable, keyUsages);\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    async exportKey(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, Constants.EMPTY_STRING)\n                    .replace(/\\n/g, Constants.EMPTY_STRING)\n                    .replace(/\\t/g, Constants.EMPTY_STRING)\n                    .split(\" \").join(Constants.EMPTY_STRING)\n                    .replace(\"\\u0000\", Constants.EMPTY_STRING);\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    async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {\n        const keyString = BrowserStringUtils.getSortedObjectString(keyData);\n        const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\n\n        return new Promise((resolve: Function, reject: Function) => {\n            const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, algorithm, extractable, keyUsages);\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    async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n        return new Promise((resolve: Function, reject: Function) => {\n            const msSign = window[\"msCrypto\"].subtle.sign(algorithm, 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    async digest(algorithm: AlgorithmIdentifier, 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 * 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 { ISubtleCrypto } from \"./ISubtleCrypto\";\nimport { ModernBrowserCrypto } from \"./ModernBrowserCrypto\";\nimport { MsrBrowserCrypto } from \"./MsrBrowserCrypto\";\nimport { MsBrowserCrypto } from \"./MsBrowserCrypto\";\nimport { Logger } from \"@azure/msal-common\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { CryptoOptions } from \"../config/Configuration\";\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 subtleCrypto: ISubtleCrypto;\n    private logger: Logger;\n    private cryptoOptions?: CryptoOptions;\n\n    constructor(logger: Logger, cryptoOptions?: CryptoOptions) {\n        this.logger = logger;\n        this.cryptoOptions = cryptoOptions;\n\n        if (this.hasBrowserCrypto()) {\n            // Use standard modern web crypto if available\n            this.logger.verbose(\"BrowserCrypto: modern crypto interface available\");\n            this.subtleCrypto = new ModernBrowserCrypto();\n        } else if (this.hasIECrypto()) {\n            // For IE11, use msCrypto interface\n            this.logger.verbose(\"BrowserCrypto: MS crypto interface available\");\n            this.subtleCrypto = new MsBrowserCrypto();\n        } else if (this.hasMsrCrypto() && this.cryptoOptions?.useMsrCrypto) {\n            // For other browsers, use MSR Crypto if found\n            this.logger.verbose(\"BrowserCrypto: MSR crypto interface available\");\n            this.subtleCrypto = new MsrBrowserCrypto();\n        } else {\n            if (this.hasMsrCrypto()) {\n                this.logger.info(\"BrowserCrypto: MSR Crypto interface available but system.cryptoOptions.useMsrCrypto not enabled\");\n            }\n            this.logger.error(\"BrowserCrypto: No crypto interfaces available.\");\n            throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto, msCrypto, or msrCrypto interfaces not available.\");\n        }\n\n        // Mainly needed for MSR Crypto: https://github.com/microsoft/MSR-JavaScript-Crypto#random-number-generator-prng\n        if (this.subtleCrypto.initPrng) {\n            this.logger.verbose(\"BrowserCrypto: Interface requires entropy\");\n\n            if (!this.cryptoOptions?.entropy) {\n                this.logger.error(\"BrowserCrypto: Interface requires entropy but none provided.\");\n                throw BrowserConfigurationAuthError.createEntropyNotProvided();\n            }\n\n            this.logger.verbose(\"BrowserCrypto: Entropy provided\");\n            this.subtleCrypto.initPrng(this.cryptoOptions.entropy);\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     * Check whether IE crypto or other browser cryptography 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     * Check whether MSR crypto polyfill is available\n     */\n    private hasMsrCrypto(): boolean {\n        return \"msrCrypto\" in window;\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        // MSR Crypto wants object with name property, instead of string\n        return this.subtleCrypto.digest({ name: S256_HASH_ALG }, data);\n    }\n\n    /**\n     * Populates buffer with cryptographically random values.\n     * @param dataBuffer \n     */\n    getRandomValues(dataBuffer: Uint8Array): Uint8Array {\n        return this.subtleCrypto.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 this.subtleCrypto.generateKey(this.keygenAlgorithmOptions, extractable, usages);\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.subtleCrypto.exportKey(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        return this.subtleCrypto.importKey(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.subtleCrypto.sign(this.keygenAlgorithmOptions, key, data);\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     * Closes the connection to IndexedDB database when all pending transactions\n     * complete.\n     */\n    closeConnection(): void {\n        const db = this.db;\n        if (db && this.dbOpen) {\n            db.close();\n            this.dbOpen = false;\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        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            \n            dbGet.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBRequestEvent;\n                this.closeConnection();\n                resolve(event.target.result);\n            });\n\n            dbGet.addEventListener(\"error\", (e: Event) => {\n                this.closeConnection();\n                reject(e);\n            });\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        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\", () => {\n                this.closeConnection();\n                resolve();\n            });\n\n            dbPut.addEventListener(\"error\", (e) => {\n                this.closeConnection();\n                reject(e);\n            });\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        return new Promise<void>((resolve: Function, reject: Function) => {\n            if (!this.db) {\n                return reject(BrowserAuthError.createDatabaseNotOpenError());\n            }\n\n            const transaction = this.db.transaction([this.tableName], \"readwrite\");\n            const objectStore = transaction.objectStore(this.tableName);\n            const dbDelete = objectStore.delete(key);\n\n            dbDelete.addEventListener(\"success\", () => {\n                this.closeConnection();\n                resolve();\n            });\n\n            dbDelete.addEventListener(\"error\", (e) => {\n                this.closeConnection();\n                reject(e);\n            });\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        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\n            dbGetKeys.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBRequestEvent;\n                this.closeConnection();\n                resolve(event.target.result);\n            });\n\n            dbGetKeys.addEventListener(\"error\",  (e: Event) => {\n                this.closeConnection();\n                reject(e);\n            });\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\n            const transaction = this.db.transaction([this.tableName], \"readonly\");\n            const objectStore = transaction.objectStore(this.tableName);\n            const dbContainsKey = objectStore.count(key);\n\n            dbContainsKey.addEventListener(\"success\", (e: Event) => {\n                const event = e as IDBRequestEvent;\n                this.closeConnection();\n                resolve(event.target.result === 1);\n            });\n\n            dbContainsKey.addEventListener(\"error\", (e: Event) => {\n                this.closeConnection();\n                reject(e);\n            });\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        // Check if database being deleted exists\n\n        if (this.db && this.dbOpen) {\n            this.closeConnection();\n        }\n\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(\"blocked\", () => 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    private storeName: string;\n\n    constructor(logger: Logger, storeName: string) {\n        this.inMemoryCache = new MemoryStorage<T>();\n        this.indexedDBCache = new DatabaseStorage<T>();\n        this.logger = logger;\n        this.storeName = storeName;\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        } else {\n            throw error;\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\n     */\n    clearInMemory(): void {\n        // InMemory cache is a Map instance, clear is straightforward\n        this.logger.verbose(`Deleting in-memory keystore ${this.storeName}`);\n        this.inMemoryCache.clear();\n        this.logger.verbose(`In-memory keystore ${this.storeName} deleted`);\n    }\n\n    /**\n     * Tries to delete the IndexedDB database\n     * @returns\n     */\n    async clearPersistent(): Promise<boolean> {\n        try {\n            this.logger.verbose(\"Deleting persistent keystore\");\n            const dbDeleted = await this.indexedDBCache.deleteDatabase();\n            if (dbDeleted) {\n                this.logger.verbose(\"Persistent keystore deleted\");\n            }\n            \n            return dbDeleted;\n        } catch (e) {\n            this.handleDatabaseAccessError(e);\n            return false;\n        }\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, IPerformanceClient, JoseHeader, Logger, PerformanceEvents, 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 { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { CryptoKeyStore } from \"../cache/CryptoKeyStore\";\nimport { CryptoOptions } from \"../config/Configuration\";\n\nexport type CachedKeyPair = {\n    publicKey: CryptoKey,\n    privateKey: CryptoKey,\n    requestMethod?: string,\n    requestUri?: string\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    /**\n     * CryptoOps can be used in contexts outside a PCA instance,\n     * meaning there won't be a performance manager available.\n     */\n    private performanceClient: IPerformanceClient | undefined;\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, performanceClient?: IPerformanceClient, cryptoConfig?: CryptoOptions) {\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, cryptoConfig);\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 = new CryptoKeyStore(this.logger);\n        this.performanceClient = performanceClient;\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        const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\n\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 = BrowserStringUtils.getSortedObjectString(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        if (publicKeyThumbMeasurement) {\n            publicKeyThumbMeasurement.endMeasurement({\n                success: true\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        return await this.cache.clear();\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, correlationId?: string): Promise<string> {\n        const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\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 = BrowserStringUtils.getSortedObjectString(publicKeyJwk);\n\n        // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: \"FULL_PUBLIC_KEY_HASH\" })\n        const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\n        \n        // Generate header\n        const shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\n        const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\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 = `${encodedShrHeader}.${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        const signedJwt = `${tokenString}.${encodedSignature}`;\n\n        if (signJwtMeasurement) {\n            signJwtMeasurement.endMeasurement({\n                success: true\n            });\n        }\n\n        return signedJwt;\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 { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\nimport { Logger } from \"../../logger/Logger\";\nimport { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport {\n    Counters,\n    PerformanceEvent,\n    IntFields,\n    PerformanceEvents,\n    PerformanceEventStatus,\n    StaticFields\n} from \"./PerformanceEvent\";\n\nexport abstract class PerformanceClient implements IPerformanceClient {\n    protected authority: string;\n    protected libraryName: string;\n    protected libraryVersion: string;\n    protected applicationTelemetry: ApplicationTelemetry;\n    protected clientId: string;\n    protected logger: Logger;\n    protected callbacks: Map<string, PerformanceCallbackFunction>;\n\n    /**\n     * Multiple events with the same correlation id.\n     * Double keyed by correlation id and event id.\n     * @protected\n     * @type {Map<string, Map<string, PerformanceEvent>>}\n     */\n    protected eventsByCorrelationId: Map<string, Map<string, PerformanceEvent>>;\n\n    /**\n     * Fields to be emitted which are scoped to the top level request and whose value will not change in submeasurements\n     * For example: App name, version, etc.\n     */\n    protected staticFieldsByCorrelationId: Map<string, StaticFields>;\n\n    /**\n     * Counters to be emitted which are scoped to the top level request and whose value may change in sub-measurements\n     */\n    protected countersByCorrelationId: Map<string, Counters>;\n\n    /**\n     * Underlying performance measurements for each operation\n     *\n     * @protected\n     * @type {Map<string, IPerformanceMeasurement>}\n     */\n    protected measurementsById: Map<string, IPerformanceMeasurement>;\n\n    /**\n     * Map of pre-queue times by correlation Id\n     *\n     * @protected\n     * @type {Map<string, Map<string, number>>}\n     */\n    protected preQueueTimeByCorrelationId: Map<string, Map<string, number>>;\n\n    /**\n     * Map of queue measurements by correlation Id\n     *\n     * @protected\n     * @type {Map<string, Array<QueueMeasurement>>}\n     */\n    protected queueMeasurements: Map<string, Array<QueueMeasurement>>;\n\n    /**\n     * Creates an instance of PerformanceClient,\n     * an abstract class containing core performance telemetry logic.\n     *\n     * @constructor\n     * @param {string} clientId Client ID of the application\n     * @param {string} authority Authority used by the application\n     * @param {Logger} logger Logger used by the application\n     * @param {string} libraryName Name of the library\n     * @param {string} libraryVersion Version of the library\n     */\n    constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\n        this.authority = authority;\n        this.libraryName = libraryName;\n        this.libraryVersion = libraryVersion;\n        this.applicationTelemetry = applicationTelemetry;\n        this.clientId = clientId;\n        this.logger = logger;\n        this.callbacks = new Map();\n        this.eventsByCorrelationId = new Map();\n        this.staticFieldsByCorrelationId = new Map();\n        this.measurementsById = new Map();\n        this.queueMeasurements = new Map();\n        this.preQueueTimeByCorrelationId = new Map();\n        this.countersByCorrelationId = new Map();\n    }\n\n    /**\n     * Generates and returns a unique id, typically a guid.\n     *\n     * @abstract\n     * @returns {string}\n     */\n    abstract generateId(): string;\n\n    /**\n     * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\n     * Note: this function can be changed to abstract at the next major version bump.\n     *\n     * @param {string} measureName\n     * @param {string} correlationId\n     * @returns {IPerformanceMeasurement}\n     */\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n    startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement {\n        return {} as IPerformanceMeasurement;\n    }\n\n    /**\n     * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\n     * Note: this incorrectly-named function will be removed at the next major version bump.\n     *\n     * @param {string} measureName\n     * @param {string} correlationId\n     * @returns {IPerformanceMeasurement}\n     */\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n    startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\n        return {} as IPerformanceMeasurement;\n    }\n\n    /**\n     * Sets pre-queue time by correlation Id\n     *\n     * @abstract\n     * @param {PerformanceEvents} eventName\n     * @param {string} correlationId\n     * @returns\n     */\n    abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void;\n\n    /**\n     * Get integral fields.\n     * Override to change the set.\n     */\n    getIntFields(): ReadonlySet<string> {\n        return IntFields;\n    }\n\n    /**\n     * Gets map of pre-queue times by correlation Id\n     *\n     * @param {PerformanceEvents} eventName\n     * @param {string} correlationId\n     * @returns {number}\n     */\n    getPreQueueTime(eventName: PerformanceEvents, correlationId: string): number | void {\n        const preQueueTimesByEvents = this.preQueueTimeByCorrelationId.get(correlationId);\n\n        if (!preQueueTimesByEvents) {\n            this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\n            return;\n        } else if (!preQueueTimesByEvents.get(eventName)) {\n            this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\n            return;\n        }\n\n        return preQueueTimesByEvents.get(eventName);\n    }\n\n    /**\n     * Calculates the difference between current time and time when function was queued.\n     * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\n     *\n     * @param {number} preQueueTime\n     * @param {number} currentTime\n     * @returns {number}\n     */\n    calculateQueuedTime(preQueueTime: number, currentTime: number): number {\n        if (preQueueTime < 1) {\n            this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\n            return 0;\n        }\n\n        if (currentTime < 1) {\n            this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\n            return 0;\n        }\n\n        if (currentTime < preQueueTime) {\n            this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\n            return 0;\n        }\n\n        return currentTime-preQueueTime;\n    }\n\n    /**\n     * Adds queue measurement time to QueueMeasurements array for given correlation ID.\n     *\n     * @param {PerformanceEvents} name\n     * @param {?string} correlationId\n     * @param {?number} time\n     * @returns\n     */\n    addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number): void {\n        if (!correlationId) {\n            this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\n            return;\n        }\n\n        if (queueTime === 0) {\n            // Possible for there to be no queue time after calculation\n            this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\n        } else if (!queueTime) {\n            this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\n            return;\n        }\n\n        const queueMeasurement = {eventName, queueTime} as QueueMeasurement;\n\n        // Adds to existing correlation Id if present in queueMeasurements\n        const existingMeasurements = this.queueMeasurements.get(correlationId);\n        if (existingMeasurements) {\n            existingMeasurements.push(queueMeasurement);\n            this.queueMeasurements.set(correlationId, existingMeasurements);\n        } else {\n            // Sets new correlation Id if not present in queueMeasurements\n            this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\n            const measurementArray = [queueMeasurement];\n            this.queueMeasurements.set(correlationId, measurementArray);\n        }\n    }\n\n    /**\n     * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n     *\n     * @param {PerformanceEvents} measureName\n     * @param {?string} [correlationId]\n     * @returns {InProgressPerformanceEvent}\n     */\n    startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n        // Generate a placeholder correlation if the request does not provide one\n        const eventCorrelationId = correlationId || this.generateId();\n        if (!correlationId) {\n            this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\n        }\n\n        // Duplicate code to address spelling error will be removed at the next major version bump.\n        this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\n        let validMeasurement: IPerformanceMeasurement;\n        const performanceMeasuremeant = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\n        if (performanceMeasuremeant.startMeasurement) {\n            performanceMeasuremeant.startMeasurement();\n            validMeasurement = performanceMeasuremeant;\n        } else {\n            const performanceMeasurement = this.startPerformanceMeasurement(measureName, eventCorrelationId);\n            performanceMeasurement.startMeasurement();\n            validMeasurement = performanceMeasurement;\n        }\n\n        const inProgressEvent: PerformanceEvent = {\n            eventId: this.generateId(),\n            status: PerformanceEventStatus.InProgress,\n            authority: this.authority,\n            libraryName: this.libraryName,\n            libraryVersion: this.libraryVersion,\n            clientId: this.clientId,\n            name: measureName,\n            startTimeMs: Date.now(),\n            correlationId: eventCorrelationId,\n        };\n\n        // Store in progress events so they can be discarded if not ended properly\n        this.cacheEventByCorrelationId(inProgressEvent);\n\n        const staticFields: StaticFields = {\n            appName: this.applicationTelemetry?.appName,\n            appVersion: this.applicationTelemetry?.appVersion,\n        };\n        this.addStaticFields(staticFields, eventCorrelationId);\n        this.cacheMeasurement(inProgressEvent, validMeasurement);\n\n        // Return the event and functions the caller can use to properly end/flush the measurement\n        return {\n            endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\n                const completedEvent = this.endMeasurement({\n                    // Initial set of event properties\n                    ...inProgressEvent,\n                    // Properties set when event ends\n                    ...event\n                });\n\n                if (completedEvent) {\n                    // Cache event so that submeasurements can be added downstream\n                    this.cacheEventByCorrelationId(completedEvent);\n                }\n                return completedEvent;\n            },\n            flushMeasurement: () => {\n                return this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\n            },\n            discardMeasurement: () => {\n                return this.discardMeasurements(inProgressEvent.correlationId);\n            },\n            addStaticFields: (fields: StaticFields) => {\n                return this.addStaticFields(fields, inProgressEvent.correlationId);\n            },\n            increment: (counters: Counters) => {\n                return this.increment(counters, inProgressEvent.correlationId);\n            },\n            measurement: validMeasurement,\n            event: inProgressEvent\n        };\n\n    }\n\n    /**\n     * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\n     * as consumers should instead use the function returned by startMeasurement.\n     *\n     * @param {PerformanceEvent} event\n     * @returns {(PerformanceEvent | null)}\n     */\n    endMeasurement(event: PerformanceEvent): PerformanceEvent | null {\n        const performanceMeasurement = this.measurementsById.get(event.eventId);\n        if (performanceMeasurement) {\n            // Immediately delete so that the same event isnt ended twice\n            this.measurementsById.delete(event.eventId);\n            performanceMeasurement.endMeasurement();\n            const durationMs = performanceMeasurement.flushMeasurement();\n            // null indicates no measurement was taken (e.g. needed performance APIs not present)\n            if (durationMs !== null) {\n                this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\n                const completedEvent: PerformanceEvent = {\n                    // Allow duration to be overwritten when event ends (e.g. testing), but not status\n                    durationMs: Math.round(durationMs),\n                    ...event,\n                    status: PerformanceEventStatus.Completed,\n                };\n\n                return completedEvent;\n            } else {\n                this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\n            }\n        } else {\n            this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\n        }\n\n        return null;\n    }\n\n    /**\n     * Saves extra information to be emitted when the measurements are flushed\n     * @param fields\n     * @param correlationId\n     */\n    addStaticFields(fields: StaticFields, correlationId: string) : void{\n        const existingStaticFields = this.staticFieldsByCorrelationId.get(correlationId);\n        if (existingStaticFields) {\n            this.logger.trace(\"PerformanceClient: Updating static fields\");\n            this.staticFieldsByCorrelationId.set(correlationId, {...existingStaticFields, ...fields});\n        } else {\n            this.logger.trace(\"PerformanceClient: Adding static fields\");\n            this.staticFieldsByCorrelationId.set(correlationId, fields);\n        }\n    }\n\n    /**\n     * Increment counters to be emitted when the measurements are flushed\n     * @param counters {Counters}\n     * @param correlationId {string} correlation identifier\n     */\n    increment(counters: Counters, correlationId: string): void {\n        const existing: Counters | undefined = this.countersByCorrelationId.get(correlationId);\n        if (!existing) {\n            this.logger.trace(\"PerformanceClient: Setting counters\");\n            this.countersByCorrelationId.set(correlationId, { ...counters });\n            return;\n        }\n\n        this.logger.trace(\"PerformanceClient: Updating counters\");\n        for (const counter in counters) {\n            if (!existing.hasOwnProperty(counter)) {\n                existing[counter] = 0;\n            }\n            existing[counter] += counters[counter];\n        }\n    }\n\n    /**\n     * Upserts event into event cache.\n     * First key is the correlation id, second key is the event id.\n     * Allows for events to be grouped by correlation id,\n     * and to easily allow for properties on them to be updated.\n     *\n     * @private\n     * @param {PerformanceEvent} event\n     */\n    private cacheEventByCorrelationId(event: PerformanceEvent) {\n        const existingEvents = this.eventsByCorrelationId.get(event.correlationId);\n        if (existingEvents) {\n            this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\n            existingEvents.set(event.eventId, event);\n        } else {\n            this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\n            this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\n        }\n    }\n\n    /**\n     * Cache measurements by their id.\n     *\n     * @private\n     * @param {PerformanceEvent} event\n     * @param {IPerformanceMeasurement} measurement\n     */\n    private cacheMeasurement(event: PerformanceEvent, measurement: IPerformanceMeasurement) {\n        this.measurementsById.set(event.eventId, measurement);\n    }\n\n    /**\n     * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\n     *\n     * @param {PerformanceEvents} measureName\n     * @param {string} correlationId\n     */\n    flushMeasurements(measureName: PerformanceEvents, correlationId: string): void {\n        this.logger.trace(`PerformanceClient: Performance measurements flushed for ${measureName}`, correlationId);\n\n        /**\n         * Adds all queue time and count measurements for given correlation ID\n         * then deletes queue times for given correlation ID from queueMeasurements map.\n         */\n\n        const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\n        if (!queueMeasurementForCorrelationId) {\n            this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\n        }\n\n        let totalQueueTime = 0;\n        let totalQueueCount = 0;\n        queueMeasurementForCorrelationId?.forEach((measurement) => {\n            totalQueueTime += measurement.queueTime;\n            totalQueueCount++;\n        });\n\n        const eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\n        const staticFields = this.staticFieldsByCorrelationId.get(correlationId);\n        const counters = this.countersByCorrelationId.get(correlationId);\n\n        if (eventsForCorrelationId) {\n            this.discardCache(correlationId);\n\n            /*\n             * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\n             * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\n             * IE only supports Map.forEach.\n             */\n            const completedEvents: PerformanceEvent[] = [];\n            let incompleteSubsCount: number = 0;\n\n            eventsForCorrelationId.forEach(event => {\n                if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\n                    this.logger.trace(`PerformanceClient: Incomplete submeasurement ${event.name} found for ${measureName}`, correlationId);\n                    incompleteSubsCount++;\n\n                    const completedEvent = this.endMeasurement(event);\n                    if (completedEvent) {\n                        completedEvents.push(completedEvent);\n                    }\n                }\n\n                completedEvents.push(event);\n            });\n\n            // Sort events by start time (earliest first)\n            const sortedCompletedEvents = completedEvents.sort((eventA, eventB) => eventA.startTimeMs - eventB.startTimeMs);\n\n            // Take completed top level event and add completed submeasurements durations as properties\n            const topLevelEvents = sortedCompletedEvents.filter(event => event.name === measureName && event.status === PerformanceEventStatus.Completed);\n            if (topLevelEvents.length > 0) {\n                /*\n                 * Only take the first top-level event if there are multiple events with the same correlation id.\n                 * This greatly simplifies logic for submeasurements.\n                 */\n                if (topLevelEvents.length > 1) {\n                    this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\n                }\n                const topLevelEvent = topLevelEvents[0];\n                this.logger.verbose(`PerformanceClient: Measurement found for ${measureName}`, correlationId);\n\n                // Build event object with top level and sub measurements\n                const eventToEmit = sortedCompletedEvents.reduce((previous, current) => {\n                    if (current.name !== measureName) {\n                        this.logger.trace(`PerformanceClient: Complete submeasurement found for ${current.name}`, correlationId);\n                        // TODO: Emit additional properties for each subMeasurement\n                        const subMeasurementName = `${current.name}DurationMs`;\n                        /*\n                         * Some code paths, such as resolving an authority, can occur multiple times.\n                         * Only take the first measurement, since the second could be read from the cache,\n                         * or due to the same correlation id being used for two distinct requests.\n                         */\n                        if (!previous[subMeasurementName]) {\n                            previous[subMeasurementName] = current.durationMs;\n                        } else {\n                            this.logger.verbose(`PerformanceClient: Submeasurement for ${measureName} already exists for ${current.name}, ignoring`, correlationId);\n                        }\n                    }\n\n                    return previous;\n                }, topLevelEvent);\n\n                const finalEvent: PerformanceEvent = {\n                    ...eventToEmit,\n                    ...staticFields,\n                    ...counters,\n                    queuedTimeMs: totalQueueTime,\n                    queuedCount: totalQueueCount,\n                    incompleteSubsCount\n                };\n                this.truncateIntegralFields(finalEvent, this.getIntFields());\n\n                this.emitEvents([finalEvent], eventToEmit.correlationId);\n            } else {\n                this.logger.verbose(`PerformanceClient: No completed top-level measurements found for ${measureName}`, correlationId);\n            }\n        } else {\n            this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\n        }\n    }\n\n    /**\n     * Removes measurements for a given correlation id.\n     *\n     * @param {string} correlationId\n     */\n    discardMeasurements(correlationId: string): void {\n        this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\n        this.eventsByCorrelationId.delete(correlationId);\n    }\n\n    /**\n     * Removes cache for a given correlation id.\n     *\n     * @param {string} correlation identifier\n     */\n    private discardCache(correlationId: string): void {\n        this.discardMeasurements(correlationId);\n\n        this.logger.trace(\"PerformanceClient: Static fields discarded\", correlationId);\n        this.staticFieldsByCorrelationId.delete(correlationId);\n\n        this.logger.trace(\"PerformanceClient: Counters discarded\", correlationId);\n        this.countersByCorrelationId.delete(correlationId);\n\n        this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\n        this.queueMeasurements.delete(correlationId);\n\n        this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\n        this.preQueueTimeByCorrelationId.delete(correlationId);\n    }\n\n    /**\n     * Registers a callback function to receive performance events.\n     *\n     * @param {PerformanceCallbackFunction} callback\n     * @returns {string}\n     */\n    addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n        const callbackId = this.generateId();\n        this.callbacks.set(callbackId, callback);\n        this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\n\n        return callbackId;\n    }\n\n    /**\n     * Removes a callback registered with addPerformanceCallback.\n     *\n     * @param {string} callbackId\n     * @returns {boolean}\n     */\n    removePerformanceCallback(callbackId: string): boolean {\n        const result = this.callbacks.delete(callbackId);\n\n        if (result) {\n            this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\n        } else {\n            this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\n        }\n\n        return result;\n    }\n\n    /**\n     * Emits events to all registered callbacks.\n     *\n     * @param {PerformanceEvent[]} events\n     * @param {?string} [correlationId]\n     */\n    emitEvents(events: PerformanceEvent[], correlationId: string): void {\n        this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\n\n        this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\n            this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\n            callback.apply(null, [events]);\n        });\n    }\n\n    /**\n     * Enforce truncation of integral fields in performance event.\n     * @param {PerformanceEvent} event performance event to update.\n     * @param {Set<string>} intFields integral fields.\n     */\n    private truncateIntegralFields(event: PerformanceEvent, intFields: ReadonlySet<string>): void {\n        intFields.forEach((key) => {\n            if (key in event && typeof event[key] === \"number\") {\n                event[key] = Math.floor(event[key]);\n            }\n        });\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IPerformanceClient } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport { PerformanceClient } from \"./PerformanceClient\";\nimport { PerformanceEvents } from \"./PerformanceEvent\";\n\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\n    /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n    startMeasurement(): void { }\n    /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n    endMeasurement(): void { }\n    flushMeasurement(): number | null {\n        return null;\n    }\n    \n}\n\nexport class StubPerformanceClient extends PerformanceClient implements IPerformanceClient {\n    generateId(): string {\n        return \"callback-id\";\n    }\n    \n    startPerformanceMeasuremeant(): IPerformanceMeasurement {\n        return new StubPerformanceMeasurement();\n    }\n\n    startPerformanceMeasurement(): IPerformanceMeasurement {\n        return new StubPerformanceMeasurement();\n    }\n\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n    calculateQueuedTime(preQueueTime: number, currentTime: number): number {\n        return 0;\n    }\n\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n    addQueueMeasurement(eventName: PerformanceEvents, correlationId: string, queueTime: number): void {\n        return;\n    }\n\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n    setPreQueueTime(eventName: PerformanceEvents, correlationId?: string | undefined): void {\n        return;\n    }\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 { 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 *      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 *      userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\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    userAssertionHash?: string;\n    tokenType?: AuthenticationScheme;\n    keyId?: string;\n    requestedClaimsHash?: string;\n\n    // Match host names like \"login.microsoftonline.com\", \"https://accounts.google.com:4000\", https://localhost:5000, etc.\n    private static credentialDomainRegex = \"(https?:\\\\/\\\\/)?((([\\\\w-]+\\\\.)*([\\\\w-]{1,63})(\\\\.(\\\\w{2,63})))|(localhost))(\\\\:[0-9]{4,5})?\";\n    // Maps {CredentialType} to the corresponding regular expression.\n    private static credentialRegexMap: Map<CredentialType, RegExp>;\n\n    /**\n     * Initializes a map with credential {CredentialType} regular expressions.\n     */\n    static _initRegex(): void {\n        const separator = Separators.CACHE_KEY_SEPARATOR;\n        CredentialEntity.credentialRegexMap = new Map<CredentialType, RegExp>();\n        for (const credKey of Object.keys(CredentialType)) {\n            const credVal = CredentialType[credKey].toLowerCase();\n\n            try {\n                // Verify credential type is preceded by a valid host name (environment) using lookbehind\n                CredentialEntity.credentialRegexMap.set(\n                    CredentialType[credKey],\n                    new RegExp(`(?<=${separator}${CredentialEntity.credentialDomainRegex})${separator}${credVal}${separator}`));\n            } catch (err) {\n                // Lookbehind is not supported (Safari or older versions of IE) - removing it\n                CredentialEntity.credentialRegexMap.set(\n                    CredentialType[credKey],\n                    new RegExp(`${separator}${CredentialEntity.credentialDomainRegex}${separator}${credVal}${separator}`));\n            }\n        }\n    }\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        for (const credKey of Object.keys(CredentialType)) {\n            if (this.credentialRegexMap.get(CredentialType[credKey])?.test(key.toLowerCase())) {\n                return CredentialType[credKey];\n            }\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\nCredentialEntity._initRegex();\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', 'none' and 'no_session'.  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\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 { 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 { 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     * Determine if the token's max_age has transpired\n     */\n    static checkMaxAge(authTime: number, maxAge: number): void {\n        /*\n         * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n         * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\n         * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\n         */\n        const fiveMinuteSkew = 300000; // five minutes in milliseconds\n        if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\n            throw ClientAuthError.createMaxAgeTranspiredError();\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.idToken = idToken.secret;\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            accountFilter ? accountFilter.nativeAccountId: 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        nativeAccountId?: 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            if (!!nativeAccountId && !this.matchNativeAccountId(entity, nativeAccountId)) {\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.userAssertionHash,\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 userAssertionHash\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        userAssertionHash?: 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 (!!userAssertionHash && !this.matchUserAssertionHash(entity, userAssertionHash)) {\n                return;\n            }\n\n            /*\n             * homeAccountId can undefined, and we want to filter out cached items that have a homeAccountId of \"\"\n             * because we don't want a client_credential request to return a cached token that has a homeAccountId\n             */\n            if ((typeof homeAccountId === \"string\") && !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 AccountEntity from cache\n     * @param nativeAccountId\n     * @returns AccountEntity or Null\n     */\n    readAccountFromCacheWithNativeAccountId(nativeAccountId: string): AccountEntity | null {\n        // fetch account from memory\n        const accountFilter: AccountFilter = {\n            nativeAccountId\n        };\n        const accountCache: AccountCache = this.getAccountsFilteredBy(accountFilter);\n        const accounts = Object.keys(accountCache).map((key) => accountCache[key]);\n\n        if (accounts.length < 1) {\n            return null;\n        } else if (accounts.length > 1) {\n            throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n        }\n\n        return accountCache[0];\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 !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\n    }\n\n    /**\n     * helper to match assertion\n     * @param value\n     * @param oboAssertion\n     */\n    private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\n        return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\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     * helper to match nativeAccountId\n     * @param entity\n     * @param nativeAccountId\n     * @returns boolean indicating the match result\n     */\n    private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\n        return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\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 { 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    ): 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\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        userAssertionHash?: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.userAssertionHash = userAssertionHash;\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        userAssertionHash?: 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.userAssertionHash = userAssertionHash;\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 { 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 { 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 { 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    jwks_uri: string;\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        this.jwks_uri = metadata.jwks_uri;\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            entity.hasOwnProperty(\"jwks_uri\")\n        );\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 { 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\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 { 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    skipAuthorityMetadataCache?: boolean;\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 { 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 { 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    /**\n     * Parses query string from given string. Returns empty string if no query symbol is found.\n     * @param queryString\n     */\n    static parseQueryString(queryString: string): string {\n        const queryIndex1 = queryString.indexOf(\"?\");\n        const queryIndex2 = queryString.indexOf(\"/?\");\n        if (queryIndex2 > -1) {\n            return queryString.substring(queryIndex2 + 2);\n        } else if (queryIndex1 > -1) {\n            return queryString.substring(queryIndex1 + 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     * Returns URL query string as server auth code response object.\n     */\n    static getDeserializedQueryString(query: string): ServerAuthorizationCodeResponse {\n        // Check if given query is empty\n        if (StringUtils.isEmpty(query)) {\n            return {};\n        }\n        // Strip the ? symbol if present\n        const parsedQueryString = UrlString.parseQueryString(query);\n        // If ? symbol was not present, above will return empty string, so give original query value\n        const deserializedQueryString: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(StringUtils.isEmpty(parsedQueryString) ? query : parsedQueryString);\n        // Check if deserialization didn't work\n        if (!deserializedQueryString) {\n            throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedQueryString));\n        }\n        return deserializedQueryString;\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 { 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, ActiveAccountFilters, CcsCredential, CcsCredentialType, IdToken, ValidCredentialType, ClientAuthError } 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\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\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\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) || Constants.EMPTY_STRING;\n        const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\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 activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\n        const activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\n        if (!activeAccountValueFilters) {\n            // if new active account cache type isn't found, it's an old version, so look for that instead\n            this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema\");\n            const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n            const activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\n            if(!activeAccountValueLocal) {\n                this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\n                return null;\n            }\n            const activeAccount = this.getAccountInfoByFilter({localAccountId: activeAccountValueLocal})[0] || null;\n            if(activeAccount) {\n                this.logger.trace(\"BrowserCacheManager.getActiveAccount: Legacy active account cache schema found\");\n                this.logger.trace(\"BrowserCacheManager.getActiveAccount: Adding active account filters cache schema\");\n                this.setActiveAccount(activeAccount);\n                return activeAccount;\n            }\n            return null;\n        }\n        const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters) as AccountInfo;\n        if(activeAccountValueObj) {\n            this.logger.trace(\"BrowserCacheManager.getActiveAccount: Active account filters schema found\");\n            return this.getAccountInfoByFilter({\n                homeAccountId: activeAccountValueObj.homeAccountId,\n                localAccountId: activeAccountValueObj.localAccountId\n            })[0] || null;\n        }\n        this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\n        return 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 activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\n        const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n        if (account) {\n            this.logger.verbose(\"setActiveAccount: Active account set\");\n            const activeAccountValue: ActiveAccountFilters = {\n                homeAccountId: account.homeAccountId,\n                localAccountId: account.localAccountId\n            };\n            this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\n            this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\n        } else {\n            this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\n            this.browserStorage.removeItem(activeAccountKey);\n            this.browserStorage.removeItem(activeAccountKeyLocal);\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        this.logger.trace(`BrowserCacheManager.getAccountInfoByFilter: total ${allAccounts.length} accounts found`);\n\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     * Checks the cache for accounts matching loginHint or SID\n     * @param loginHint\n     * @param sid\n     */\n    getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null {\n        const matchingAccounts = this.getAllAccounts().filter((accountInfo) => {\n            if (sid) {\n                const accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\n                return sid === accountSid;\n            }\n\n            if (loginHint) {\n                return loginHint === accountInfo.username;\n            }\n\n            return false;\n        });\n\n        if (matchingAccounts.length === 1) {\n            return matchingAccounts[0];\n        } else if (matchingAccounts.length > 1) {\n            throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n        }\n\n        return null;\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=/;SameSite=Lax;`;\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 Constants.EMPTY_STRING;\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, Constants.EMPTY_STRING, -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.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\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 || Constants.EMPTY_STRING);\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    /**\n     * Gets cached native request for redirect flows\n     */\n    getCachedNativeRequest(): NativeTokenRequest | null {\n        this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\n        const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\n        if (!cachedRequest) {\n            this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\n            return null;\n        }\n\n        const parsedRequest = this.validateAndParseJson(cachedRequest) as NativeTokenRequest;\n        if (!parsedRequest) {\n            this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\n            return null;\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    /**\n     * Returns application id as redirect context during AcquireTokenRedirect flow.\n     */\n    getRedirectRequestContext(): string | null {\n        return this.getTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, true);\n    }\n\n    /**\n     * Sets application id as the redirect context during AcquireTokenRedirect flow.\n     * @param value\n     */\n    setRedirectRequestContext(value: string): void {\n        this.setTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, value, true);\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 } 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\";\nimport { ClientCredentials } from \"../account/ClientCredentials\";\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 * - skipAuthorityMetadataCache      - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\n */\nexport type AuthOptions = {\n    clientId: string;\n    authority: Authority;\n    clientCapabilities?: Array<string>;\n    azureCloudOptions?: AzureCloudOptions;\n    skipAuthorityMetadataCache?: boolean;\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};\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 * 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};\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        skipAuthorityMetadataCache: false,\n        ...authOptions\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};\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 { Constants, 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) || Constants.EMPTY_STRING;\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(\"#\") : Constants.EMPTY_STRING;\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     * Throws error if native brokering is enabled but initialize hasn't been called\n     * @param allowNativeBroker \n     * @param initialized \n     */\n    static blockNativeBrokerCalledBeforeInitialized(allowNativeBroker: boolean, initialized: boolean): void {\n        if (allowNativeBroker && !initialized) {\n            throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\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, ApplicationTelemetry } from \"@azure/msal-common\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { BrowserCacheLocation, BrowserConstants } 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;\nexport const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\n\n/**\n * Use this to configure the auth options in the Configuration object\n */\nexport type BrowserAuthOptions = {\n    /**\n     * 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     */\n    clientId: string;\n    /**\n     * You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n     */\n    authority?: string;\n    /**\n     * An array of URIs that are known to be valid. Used in B2C scenarios.\n     */\n    knownAuthorities?: Array<string>;\n    /**\n     * A string containing the cloud discovery response. Used in AAD scenarios.\n     */\n    cloudDiscoveryMetadata?: string;\n    /**\n     * A string containing the .well-known/openid-configuration endpoint response\n     */\n    authorityMetadata?: string;\n    /**\n     * 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     */\n    redirectUri?: string;\n    /**\n     * The redirect URI where the window navigates after a successful logout.\n     */\n    postLogoutRedirectUri?: string | null;\n    /**\n     * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\n     */\n    navigateToLoginRequestUrl?: boolean;\n    /**\n     * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n     */\n    clientCapabilities?: Array<string>;\n    /**\n     * Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n     */\n    protocolMode?: ProtocolMode;\n    /**\n     * Enum that represents the Azure Cloud to use.\n     */\n    azureCloudOptions?: AzureCloudOptions;\n    /**\n     * Flag of whether to use the local metadata cache\n     */\n    skipAuthorityMetadataCache?: boolean;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n */\nexport type CacheOptions = {\n    /**\n     * Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\n     */\n    cacheLocation?: BrowserCacheLocation | string;\n    /**\n     * 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     */\n    storeAuthStateInCookie?: boolean;\n    /**\n     * 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     */\n    secureCookies?: boolean;\n};\n\nexport type BrowserSystemOptions = SystemOptions & {\n    /**\n     * Used to initialize the Logger object (See ClientConfiguration.ts)\n     */\n    loggerOptions?: LoggerOptions;\n    /**\n     * Network interface implementation\n     */\n    networkClient?: INetworkModule;\n    /**\n     * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router\n     */\n    navigationClient?: INavigationClient;\n    /**\n     * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\n     */\n    windowHashTimeout?: number;\n    /**\n     * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\n     */\n    iframeHashTimeout?: number;\n    /**\n     * Sets the timeout for waiting for a response hash in an iframe or popup\n     */\n    loadFrameTimeout?: number;\n    /**\n     * Maximum time the library should wait for a frame to load\n     */\n    navigateFrameWait?: number;\n    /**\n     * Time to wait for redirection to occur before resolving promise\n     */\n    redirectNavigationTimeout?: number;\n    /**\n     * 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     */\n    asyncPopups?: boolean;\n    /**\n     * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\n     */\n    allowRedirectInIframe?: boolean;\n    /**\n     * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows)\n     */\n    allowNativeBroker?: boolean;\n    /**\n     * Sets the timeout for waiting for the native broker handshake to resolve\n     */\n    nativeBrokerHandshakeTimeout?: number;\n    /**\n     * Options related to browser crypto APIs\n     */\n    cryptoOptions?: CryptoOptions;\n    /**\n     * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms)\n     */\n    pollIntervalMilliseconds?: number;\n};\n\nexport type CryptoOptions = {\n    \n    /**\n     * Enables the application to use the MSR Crypto interface, if available (and other interfaces are not)\n     * @type {?boolean}\n     */\n    useMsrCrypto?: boolean;\n     \n    /**\n     * Entropy to seed browser crypto API (needed for MSR Crypto). Must be cryptographically strong random numbers (e.g. crypto.randomBytes(48) from Node)\n     * @type {?Uint8Array}\n     */\n    entropy?: Uint8Array;\n};\n\n/**\n * Telemetry Options\n */\nexport type BrowserTelemetryOptions = {\n    /**\n     * Telemetry information sent on request\n     * - appName: Unique string name of an application\n     * - appVersion: Version of the application using MSAL\n     */\n    application?: ApplicationTelemetry;\n};\n\n/**\n * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication\n */\nexport type Configuration = {\n    /**\n     * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n     */\n    auth: BrowserAuthOptions,\n    /**\n     * This is where you configure cache location and whether to store cache in cookies\n     */\n    cache?: CacheOptions,\n    /**\n     * This is where you can configure the network client, logger, token renewal offset\n     */\n    system?: BrowserSystemOptions,\n    /**\n     * This is where you can configure telemetry data and options\n     */\n    telemetry?: BrowserTelemetryOptions\n};\n\nexport type BrowserConfiguration = {\n    auth: Required<BrowserAuthOptions>,\n    cache: Required<CacheOptions>,\n    system: Required<BrowserSystemOptions>,\n    telemetry: Required<BrowserTelemetryOptions>\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, telemetry: userInputTelemetry }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\n\n    // Default auth options for browser\n    const DEFAULT_AUTH_OPTIONS: Required<BrowserAuthOptions> = {\n        clientId: Constants.EMPTY_STRING,\n        authority: `${Constants.DEFAULT_AUTHORITY}`,\n        knownAuthorities: [],\n        cloudDiscoveryMetadata: Constants.EMPTY_STRING,\n        authorityMetadata: Constants.EMPTY_STRING,\n        redirectUri: Constants.EMPTY_STRING,\n        postLogoutRedirectUri: Constants.EMPTY_STRING,\n        navigateToLoginRequestUrl: true,\n        clientCapabilities: [],\n        protocolMode: ProtocolMode.AAD,\n        azureCloudOptions: {\n            azureCloudInstance: AzureCloudInstance.None,\n            tenant: Constants.EMPTY_STRING\n        },\n        skipAuthorityMetadataCache: false,\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            // allow users to not set logger call back \n        },\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?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS,\n        iframeHashTimeout: 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        allowNativeBroker: false,\n        nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS,\n        pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS,\n        cryptoOptions: {\n            useMsrCrypto: false,\n            entropy: undefined\n        }\n    };\n\n    const providedSystemOptions:BrowserSystemOptions = {\n        ...userInputSystem,\n        loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS\n    };\n\n    const DEFAULT_TELEMETRY_OPTIONS: Required<BrowserTelemetryOptions> = {\n        application: {\n            appName: Constants.EMPTY_STRING,\n            appVersion: Constants.EMPTY_STRING\n        }\n    };\n\n    const overlayedConfig: BrowserConfiguration = {\n        auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\n        cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\n        system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...providedSystemOptions },\n        telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }\n    };\n    return overlayedConfig;\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\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\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    private performanceClient?: IPerformanceClient;\n\n    constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) {\n        this.cryptoUtils = cryptoUtils;\n        this.performanceClient = performanceClient;\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\n\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\n\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 { 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 { 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 { AuthError } from \"../error/AuthError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\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\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, duplicate, and empty string 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        // remove empty string parameters\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        return Object.fromEntries(Object.entries(eQParams).filter(([key, value]) => value !== \"\"));\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        if (!StringUtils.isEmpty(clientAssertion)) {\n            this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\n        }\n    }\n\n    /**\n     * add clientAssertionType for confidential client flows\n     * @param clientAssertionType\n     */\n    addClientAssertionType(clientAssertionType: string): void {\n        if (!StringUtils.isEmpty(clientAssertionType)) {\n            this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\n        }\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        const sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);\n        Object.keys(sanitizedEQParams).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 { 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\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\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    // Performance telemetry client\n    protected performanceClient?: IPerformanceClient;\n\n    protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\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        // set performance telemetry client\n        this.performanceClient = performanceClient;\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        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 }\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     * Creates query string for the /token request\n     * @param request\n     */\n    createTokenQueryParameters(request: BaseAuthRequest): 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 * 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 { 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\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\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    private performanceClient?: IPerformanceClient;\n\n    constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient) {\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        this.performanceClient = performanceClient;\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(\n                    serverResponseHash.error || Constants.EMPTY_STRING,\n                    serverResponseHash.error_description,\n                    serverResponseHash.suberror,\n                    serverResponseHash.timestamp || Constants.EMPTY_STRING,\n                    serverResponseHash.trace_id || Constants.EMPTY_STRING,\n                    serverResponseHash.correlation_id || Constants.EMPTY_STRING,\n                    serverResponseHash.claims || Constants.EMPTY_STRING,\n                );\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(\n                    serverResponse.error,\n                    serverResponse.error_description,\n                    serverResponse.suberror,\n                    serverResponse.timestamp || Constants.EMPTY_STRING,\n                    serverResponse.trace_id || Constants.EMPTY_STRING,\n                    serverResponse.correlation_id || Constants.EMPTY_STRING,\n                    serverResponse.claims || Constants.EMPTY_STRING,\n                );\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        userAssertionHash?: string,\n        handlingRefreshTokenResponse?: boolean,\n        forceCacheRefreshTokenResponse?: boolean,\n        serverRequestId?: string): Promise<AuthenticationResult> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\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            // token max_age check\n            if (request.maxAge || (request.maxAge === 0)) {\n                const authTime = idTokenObj.claims.auth_time;\n                if (!authTime) {\n                    throw ClientAuthError.createAuthTimeNotFoundError();\n                }\n\n                AuthToken.checkMaxAge(authTime, request.maxAge);\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, userAssertionHash, 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, unless explicitly flagged by\n             * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\n             */\n            if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && 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, undefined, serverRequestId);\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, serverRequestId);\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, userAssertionHash?: 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            );\n\n            cachedAccount = this.generateAccountEntity(\n                serverTokenResponse,\n                idTokenObj,\n                authority,\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                userAssertionHash,\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                userAssertionHash\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, 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, 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, cloudGraphHostName, msGraphhost) :\n            AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, 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        requestId?: 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            requestId: requestId || Constants.EMPTY_STRING,\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, HeaderNames } 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 { 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\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\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, performanceClient?: IPerformanceClient) {\n        super(configuration, performanceClient);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\n\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\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        if (!request || !request.code) {\n            throw ClientAuthError.createTokenRequestCannotBeMadeError();\n        }\n\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\n        \n        // @ts-ignore\n        const atsMeasurement = this.performanceClient?.startMeasurement(\"AuthCodeClientAcquireToken\", request.correlationId);\n        this.logger.info(\"in acquireToken call in auth-code client\");\n\n        const reqTimestamp = TimeUtils.nowSeconds();\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\n        const response = await this.executeTokenRequest(this.authority, request);\n\n        // Retrieve requestId from response headers\n        const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n        const httpVerAuthority = response.headers?.[HeaderNames.X_MS_HTTP_VERSION];\n        if(httpVerAuthority)\n        {\n            atsMeasurement?.addStaticFields({\n                httpVerAuthority\n            });\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            this.performanceClient\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\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\n        return responseHandler.handleServerTokenResponse(\n            response.body,\n            this.authority,\n            reqTimestamp,\n            request,\n            authCodePayload,\n            undefined,\n            undefined,\n            undefined,\n            requestId\n        ).then((result: AuthenticationResult) => {\n            atsMeasurement?.endMeasurement({\n                success: true\n            });\n            return result;\n        })\n            .catch((error) => {\n                this.logger.verbose(\"Error in fetching token in ACC\", request.correlationId);\n                atsMeasurement?.endMeasurement({\n                    errorCode: error.errorCode,\n                    subErrorCode: error.subError,\n                    success: false\n                });\n                throw error;\n            });\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\n        \n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n        \n        const requestBody = await this.createTokenRequestBody(request);\n        \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\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        return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\n\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        if (this.config.clientCredentials.clientAssertion) {\n            const clientAssertion = this.config.clientCredentials.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, this.performanceClient);\n\n            this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\n\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 login_hint claim (in request) -> sid -> loginHint (upn/email) -> 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                const accountLoginHintClaim = this.extractLoginHint(request.account);\n                // If login_hint claim is present, use it over sid/username\n                if (accountLoginHintClaim) {\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\n                    parameterBuilder.addLoginHint(accountLoginHintClaim);\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    } catch (e) {\n                        this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n                    }\n                } else if (accountSid && request.prompt === PromptValue.NONE) {\n                    /*\n                     * If account and loginHint are provided, we will check account first for sid before adding loginHint\n                     * SessionId is only used in silent calls\n                     */\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(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\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(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\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        return account.idTokenClaims?.sid || null;\n    }\n\n    private extractLoginHint(account: AccountInfo): string | null {\n        return account.idTokenClaims?.login_hint || null;\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    jwks_uri: 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        response.hasOwnProperty(\"jwks_uri\")\n    );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const rawMetdataJSON = {\"endpointMetadata\":{\"https://login.microsoftonline.com/common/\":{\"token_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/common/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/common/\":{\"token_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/consumers/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/organizations/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"}},\"instanceDiscoveryMetadata\":{\"https://login.microsoftonline.com/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/common/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]}}};\n\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\nexport const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\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\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\n\nexport class RegionDiscovery {\n    // Network interface to make requests with.\n    protected networkInterface: INetworkModule;\n    // Performance client\n    protected performanceClient: IPerformanceClient | undefined;\n    // CorrelationId\n    protected correlationId: string | undefined;\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, performanceClient?: IPerformanceClient, correlationId?: string) {\n        this.networkInterface = networkInterface;\n        this.performanceClient = performanceClient;\n        this.correlationId = correlationId;\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): Promise<string | null> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\n        \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\n            try {\n                this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\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                    this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\n                    const currentIMDSVersion = await this.getCurrentVersion(options);\n                    if (!currentIMDSVersion) {\n                        regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n                        return null;\n                    }\n\n                    this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\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 { AuthError, InteractionRequiredAuthError } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"./BrowserAuthError\";\n\nexport type OSError = {\n    error: number;\n    protocol_error: string;\n    properties: object;\n    status: string;\n    retryable?: boolean;\n};\n\nexport enum NativeStatusCode {\n    USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\n    USER_CANCEL = \"USER_CANCEL\",\n    NO_NETWORK = \"NO_NETWORK\",\n    TRANSIENT_ERROR = \"TRANSIENT_ERROR\",\n    PERSISTENT_ERROR = \"PERSISTENT_ERROR\",\n    DISABLED = \"DISABLED\",\n    ACCOUNT_UNAVAILABLE = \"ACCOUNT_UNAVAILABLE\"\n}\n\nexport const NativeAuthErrorMessage = {\n    extensionError: {\n        code: \"ContentError\"\n    },\n    userSwitch: {\n        code: \"user_switch\",\n        desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\n    },\n    tokensNotFoundInCache: {\n        code: \"tokens_not_found_in_internal_memory_cache\",\n        desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\n    }\n};\n\nexport class NativeAuthError extends AuthError {\n    ext: OSError | undefined;\n\n    constructor(errorCode: string, description: string, ext?: OSError) {\n        super(errorCode, description);\n\n        Object.setPrototypeOf(this, NativeAuthError.prototype);\n        this.name = \"NativeAuthError\";\n        this.ext = ext;\n    }\n\n    /**\n     * These errors should result in a fallback to the 'standard' browser based auth flow.\n     */\n    isFatal(): boolean {\n        if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\n            return true;\n        }\n\n        switch (this.errorCode) {\n            case NativeAuthErrorMessage.extensionError.code:\n                return true;\n            default:\n                return false;\n        }\n    }\n\n    /**\n     * Create the appropriate error object based on the WAM status code.\n     * @param code\n     * @param description\n     * @param ext\n     * @returns\n     */\n    static createError(code: string, description: string, ext?: OSError): AuthError {\n        if (ext && ext.status) {\n            switch (ext.status) {\n                case NativeStatusCode.ACCOUNT_UNAVAILABLE:\n                    return InteractionRequiredAuthError.createNativeAccountUnavailableError();\n                case NativeStatusCode.USER_INTERACTION_REQUIRED:\n                    return new InteractionRequiredAuthError(code, description);\n                case NativeStatusCode.USER_CANCEL:\n                    return BrowserAuthError.createUserCancelledError();\n                case NativeStatusCode.NO_NETWORK:\n                    return BrowserAuthError.createNoNetworkConnectivityError();\n            }\n        }\n\n        return new NativeAuthError(code, description, ext);\n    }\n\n    /**\n     * Creates user switch error when the user chooses a different account in the native broker prompt\n     * @returns\n     */\n    static createUserSwitchError(): NativeAuthError {\n        return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\n    }\n\n    /**\n     * Creates a tokens not found error when the internal cache look up fails\n     * @returns NativeAuthError: tokensNotFoundInCache\n     */\n    static createTokensNotFoundInCacheError(): NativeAuthError {\n        return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\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 { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\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 { CloudInstanceDiscoveryErrorResponse, isCloudInstanceDiscoveryErrorResponse } from \"./CloudInstanceDiscoveryErrorResponse\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\nimport { RegionDiscovery } from \"./RegionDiscovery\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\nimport { Logger } from \"../logger/Logger\";\nimport { AuthError } from \"../error/AuthError\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\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    // 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    // Logger object\n    private logger: Logger;\n    // Performance client\n    protected performanceClient: IPerformanceClient | undefined;\n    // Correlation Id\n    protected correlationId: string | undefined;\n\n    constructor(\n        authority: string,\n        networkInterface: INetworkModule,\n        cacheManager: ICacheManager,\n        authorityOptions: AuthorityOptions,\n        logger: Logger,\n        performanceClient?: IPerformanceClient,\n        correlationId?: string\n    ) {\n        this.canonicalAuthority = authority;\n        this._canonicalAuthority.validateAsUri();\n        this.networkInterface = networkInterface;\n        this.cacheManager = cacheManager;\n        this.authorityOptions = authorityOptions;\n        this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\n        this.logger = logger;\n        this.performanceClient = performanceClient;\n        this.correlationId = correlationId;\n        this.regionDiscovery = new RegionDiscovery(networkInterface, this.performanceClient, this.correlationId);\n    }\n\n    // See above for AuthorityType\n    public get authorityType(): AuthorityType {\n        const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\n        if (pathSegments.length) {\n            switch(pathSegments[0].toLowerCase()) {\n                case Constants.ADFS:\n                    return AuthorityType.Adfs;\n                case Constants.DSTS:\n                    return AuthorityType.Dsts;\n                default:\n                    break;\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     * Jwks_uri for token signing keys\n     */\n    public get jwksUri(): string {\n        if(this.discoveryComplete()) {\n            const endpoint = this.replacePath(this.metadata.jwks_uri);\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 (\n            this.authorityType === AuthorityType.Adfs ||\n            this.authorityType === AuthorityType.Dsts ||\n            this.protocolMode === ProtocolMode.OIDC\n        ) {\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\n\n        let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n        if (!metadataEntity) {\n            metadataEntity = new AuthorityMetadataEntity();\n            metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n        }\n\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\n        const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\n        this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\n\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        let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\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                this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\n                metadata = await this.updateMetadataWithRegionalInformation(metadata);\n            }\n\n            metadataEntity.updateEndpointMetadata(metadata, true);\n            return AuthorityMetadataSource.NETWORK;\n        }    \n\n        if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\n            // If the user prefers to use an azure region replace the global endpoints with regional information.\n            if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n                this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\n                harcodedMetadata = await this.updateMetadataWithRegionalInformation(\n                    harcodedMetadata\n                );\n            }\n\n            metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\n            return AuthorityMetadataSource.HARDCODED_VALUES;\n        } else {\n            throw ClientAuthError.createUnableToGetOpenidConfigError(\n                this.defaultOpenIdConfigurationEndpoint\n            );\n        }\n    }\n\n    /**\n     * Compares the number of url components after the domain to determine if the cached \n     * authority metadata can be used for the requested authority. Protects against same domain different \n     * 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     * @param hasHardcodedMetadata boolean\n     */\n    private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\n\n        const options: ImdsOptions = {};\n        \n        /*\n         * TODO: Add a timeout if the authority exists in our library's \n         * hardcoded list of metadata\n         */\n\n        try {\n            const response = await this.networkInterface.\n                sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\n            return isOpenIdConfigResponse(response.body) ? response.body : null;\n        } catch (e) {\n            return null;\n        }\n    }\n\n    /**\n     * Get OAuth endpoints for common authorities.\n     */\n    private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\n        if (this.canonicalAuthority in EndpointMetadata) {\n            return EndpointMetadata[this.canonicalAuthority];\n        }\n\n        return null;\n    }\n\n    /**\n     * Update the retrieved metadata with regional information.\n     */\n    private async updateMetadataWithRegionalInformation(metadata: OpenIdConfigResponse): Promise<OpenIdConfigResponse> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\n\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\n        const autodetectedRegionName = await this.regionDiscovery.detectRegion(\n            this.authorityOptions.azureRegionConfiguration?.environmentRegion,\n            this.regionDiscoveryMetadata\n        );\n\n        const azureRegion = \n            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 = (\n                    this.authorityOptions.azureRegionConfiguration?.azureRegion === autodetectedRegionName\n                ) ?\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            return Authority.replaceWithRegionalInformation(metadata, azureRegion);\n        }\n\n        return metadata;\n    }\n\n    /**\n     * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\n     * and returns where the information was retrieved from\n     * @param cachedMetadata\n     * @param newMetadata\n     */\n    private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\n        this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\n        this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE}`);\n        this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE}`);\n        this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\n        let metadata = this.getCloudDiscoveryMetadataFromConfig();\n        if (metadata) {\n            this.logger.verbose(\"Found cloud discovery metadata in the config.\");\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        this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\n        const metadataEntityExpired = metadataEntity.isExpired();\n        if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\n            this.logger.verbose(\"Found metadata in the cache.\");\n            // No need to update\n            return AuthorityMetadataSource.CACHE;\n        } else if (metadataEntityExpired) {\n            this.logger.verbose(\"The metadata entity is expired.\");\n        }\n\n        this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\n        metadata = await this.getCloudDiscoveryMetadataFromNetwork();\n        if (metadata) {\n            this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\n            metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\n            return AuthorityMetadataSource.NETWORK;\n        }\n        \n        this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\n        const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\n        if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\n            this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\n            metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\n            return AuthorityMetadataSource.HARDCODED_VALUES;\n        }\n        \n        // Metadata could not be obtained from the config, cache, network or hardcoded values\n        this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\n        throw ClientConfigurationError.createUntrustedAuthorityError();\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            this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\n            try {\n                this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\n                const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\n                const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\n                    parsedResponse.metadata,\n                    this.hostnameAndPort\n                );\n                this.logger.verbose(\"Parsed the cloud discovery metadata.\");\n                if (metadata) {\n                    this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\n                    return metadata;\n                } else {\n                    this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\n                }\n            } catch (e) {\n                this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\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            this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\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     * \n     * @param hasHardcodedMetadata boolean\n     */\n    private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\n        const instanceDiscoveryEndpoint =\n            `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n        const options: ImdsOptions = {};\n\n        /*\n         * TODO: Add a timeout if the authority exists in our library's\n         * hardcoded list of metadata\n         */\n\n        let match = null;\n        try {\n            const response =\n                await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse>(\n                    instanceDiscoveryEndpoint,\n                    options\n                );\n            \n            let typedResponseBody: CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse;\n            let metadata: Array<CloudDiscoveryMetadata>;\n            if (isCloudInstanceDiscoveryResponse(response.body)) {\n                typedResponseBody = response.body as CloudInstanceDiscoveryResponse;\n                metadata = typedResponseBody.metadata;\n\n                this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\n            } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\n                this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\n\n                typedResponseBody = response.body as CloudInstanceDiscoveryErrorResponse;\n                if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\n                    this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\n                    return null;\n                }\n\n                this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\n                this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\n                \n                this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\n                metadata = [];\n            } else {\n                this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\n                return null;\n            }\n\n            this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\n            match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\n                metadata,\n                this.hostnameAndPort\n            );\n        } catch (error) {\n            if (error instanceof AuthError) {\n                this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\n            } else {\n                const typedError = error as Error;\n                this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\n            }\n            \n            return null;\n        }\n\n        // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n        if (!match) {\n            this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\n            this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\n\n            match = Authority.createCloudDiscoveryMetadataFromHost(\n                this.hostnameAndPort\n            );\n        }\n        return match;\n    }\n\n    /**\n     * Get cloud discovery metadata for common authorities \n     */\n    private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\n        if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\n            return InstanceDiscoveryMetadata[this.canonicalAuthority];\n        }\n\n        return null;\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(\n        response: CloudDiscoveryMetadata[],\n        authority: string\n    ): 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(\n            metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING\n        );\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","/*\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\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryErrorResponse = {\n    error: String;\n    error_description: String;\n    error_codes?: Array<Number>;\n    timestamp?: String;\n    trace_id?: String;\n    correlation_id?: String;\n    error_uri?: String;\n};\n\nexport function isCloudInstanceDiscoveryErrorResponse(response: object): boolean {\n    return (\n        response.hasOwnProperty(\"error\") &&\n        response.hasOwnProperty(\"error_description\")\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\";\nimport { Logger } from \"../logger/Logger\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\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(\n        authorityUri: string,\n        networkClient: INetworkModule,\n        cacheManager: ICacheManager,\n        authorityOptions: AuthorityOptions,\n        logger: Logger,\n        performanceClient?: IPerformanceClient,\n        correlationId?: string\n    ): Promise<Authority> {\n        performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\n\n        // Initialize authority and perform discovery endpoint check.\n        const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(\n            authorityUri,\n            networkClient,\n            cacheManager,\n            authorityOptions,\n            logger,\n            performanceClient,\n            correlationId\n        );\n\n        try {\n            performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityResolveEndpointsAsync, correlationId);\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(\n        authorityUrl: string,\n        networkInterface: INetworkModule,\n        cacheManager: ICacheManager,\n        authorityOptions: AuthorityOptions,\n        logger: Logger,\n        performanceClient?: IPerformanceClient,\n        correlationId?: string\n    ): 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, logger, performanceClient, correlationId);\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 { ICrypto, INetworkModule, Logger, AuthenticationResult, AccountInfo, AccountEntity, BaseAuthRequest, AuthenticationScheme, UrlString, ServerTelemetryManager, ServerTelemetryRequest, ClientConfigurationError, StringUtils, Authority, AuthorityOptions, AuthorityFactory, IPerformanceClient, PerformanceEvents } 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\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\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 navigationClient: INavigationClient;\n    protected nativeMessageHandler: NativeMessageHandler | undefined;\n    protected correlationId: string;\n    protected performanceClient: IPerformanceClient;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, 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.navigationClient = navigationClient;\n        this.nativeMessageHandler = nativeMessageHandler;\n        this.correlationId = correlationId || this.browserCrypto.createNewGuid();\n        this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\n        this.performanceClient = performanceClient;\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                this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\n                // Clear all accounts and tokens\n                await this.browserStorage.clear();\n                // Clear any stray keys from IndexedDB\n                await this.browserCrypto.clearKeystore();\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.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId);\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     * Used to get a discovered version of the default authority.\n     * @param requestAuthority\n     * @param requestCorrelationId\n     */\n    protected async getDiscoveredAuthority(requestAuthority?: string): 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        if (requestAuthority) {\n            this.logger.verbose(\"Creating discovered authority with request authority\");\n            return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger);\n        }\n\n        this.logger.verbose(\"Creating discovered authority with configured authority\");\n        return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger);\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError} from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\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 { 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    /**\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.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\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: Constants.EMPTY_STRING,\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.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        this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId);\n        // Create auth module.\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\n        const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n        return new AuthorizationCodeClient(clientConfig, this.performanceClient);\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.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\n        this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n        const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n        const logger= this.config.system.loggerOptions;\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: logger.loggerCallback,\n                piiLoggingEnabled: logger.piiLoggingEnabled,\n                logLevel: logger.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: Constants.EMPTY_STRING,\n                os: Constants.EMPTY_STRING\n            },\n            telemetry: this.config.telemetry\n        };\n    }\n    \n    /**\n     * @param hash\n     * @param interactionType\n     */\n    protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\n        this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\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.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n        this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\n        const getAuthorityMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\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            skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\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\", this.correlationId);\n        this.performanceClient.setPreQueueTime(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.correlationId);\n        return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.performanceClient, this.correlationId)\n            .then((result: Authority) => {\n                getAuthorityMeasurement.endMeasurement({\n                    success: true,\n                });\n\n                return result;\n            })\n            .catch((error:AuthError) => {\n                getAuthorityMeasurement.endMeasurement({\n                    errorCode: error.errorCode,\n                    subErrorCode: error.subError,\n                    success: false\n                });\n\n                throw error;\n            });\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.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId);\n        this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\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        this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\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\", this.correlationId);\n            this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\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 { 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, HeaderNames } 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\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\n/**\n * OAuth2.0 refresh token client\n */\nexport class RefreshTokenClient extends BaseClient {\n    constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n        super(configuration, performanceClient);\n\n    }\n    public async acquireToken(request: CommonRefreshTokenRequest): Promise<AuthenticationResult> {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\n\n        const atsMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\n        this.logger.verbose(\"RefreshTokenClientAcquireToken called\", request.correlationId);\n        const reqTimestamp = TimeUtils.nowSeconds();\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\n        const response = await this.executeTokenRequest(request, this.authority);\n        const httpVerToken = response.headers?.[HeaderNames.X_MS_HTTP_VERSION];\n        atsMeasurement?.addStaticFields({\n            refreshTokenSize: response.body.refresh_token?.length || 0,\n        });\n        if(httpVerToken)\n        {\n            atsMeasurement?.addStaticFields({\n                httpVerToken,\n            });\n        }\n\n        // Retrieve requestId from response headers\n        const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\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        responseHandler.validateTokenResponse(response.body);\n\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\n        return responseHandler.handleServerTokenResponse(\n            response.body,\n            this.authority,\n            reqTimestamp,\n            request,\n            undefined,\n            undefined,\n            true,\n            request.forceCache,\n            requestId\n        ).then((result: AuthenticationResult) => {\n            atsMeasurement?.endMeasurement({\n                success: true\n            });\n            return result;\n        })\n            .catch((error) => {\n                this.logger.verbose(\"Error in fetching refresh token\", request.correlationId);\n                atsMeasurement?.endMeasurement({\n                    errorCode: error.errorCode,\n                    subErrorCode: error.subError,\n                    success: false\n                });\n                throw error;\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\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                this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\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                    this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\n                    return this.acquireTokenWithCachedRefreshToken(request, false);\n                    // throw in all other cases\n                } else {\n                    throw e;\n                }\n            }\n        }\n        // fall back to application refresh token acquisition\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\n        return this.acquireTokenWithCachedRefreshToken(request, false);\n\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\n\n        // fetches family RT or application RT based on FOCI value\n\n        const atsMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\n        this.logger.verbose(\"RefreshTokenClientAcquireTokenWithCachedRefreshToken called\", request.correlationId);\n        const refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\n\n        if (!refreshToken) {\n            atsMeasurement?.discardMeasurement();\n            throw InteractionRequiredAuthError.createNoTokensFoundError();\n        }\n        // attach cached RT size to the current measurement\n        atsMeasurement?.endMeasurement({\n            success: true\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        this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\n        const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\n        this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\n        \n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n        \n        const requestBody = await this.createTokenRequestBody(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        return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\n            .then((result) => {\n                acquireTokenMeasurement?.endMeasurement({\n                    success: true\n                });\n                return result;\n            })\n            .catch((error) => {\n                acquireTokenMeasurement?.endMeasurement({\n                    success: false\n                });\n                throw error;\n            });\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        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\n\n        const correlationId = request.correlationId;\n        const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId);\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        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        if (this.config.clientCredentials.clientAssertion) {\n            const clientAssertion = this.config.clientCredentials.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, this.performanceClient);\n            this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\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                acquireTokenMeasurement?.endMeasurement({\n                    success: false\n                });\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        acquireTokenMeasurement?.endMeasurement({\n            success: true\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\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\n\nexport class SilentFlowClient extends BaseClient {\n    \n    constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n        super(configuration,performanceClient);\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, this.performanceClient);\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\n        // token max_age check\n        if (request.maxAge || (request.maxAge === 0)) {\n            const authTime = idTokenObj?.claims.auth_time;\n            if (!authTime) {\n                throw ClientAuthError.createAuthTimeNotFoundError();\n            }\n\n            AuthToken.checkMaxAge(authTime, request.maxAge);\n        }\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\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, SilentFlowClient, ServerTelemetryManager, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError } from \"@azure/msal-common\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { 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        const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\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\n            acquireTokenMeasurement.endMeasurement({\n                success: true,\n                fromCache: true\n            });\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            acquireTokenMeasurement.endMeasurement({\n                errorCode: error instanceof AuthError && error.errorCode || undefined,\n                subErrorCode: error instanceof AuthError && error.subError || undefined,\n                success: false\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        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\n        const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n        return new SilentFlowClient(clientConfig, this.performanceClient);\n    }\n\n    async initializeSilentRequest(request: SilentRequest, account: AccountInfo): Promise<CommonSilentFlowRequest> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, this.correlationId);\n\n        this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\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 { AuthenticationResult, Logger, ICrypto, PromptValue, AuthToken, Constants, AccountEntity, AuthorityType, ScopeSet, TimeUtils, AuthenticationScheme, UrlString, OIDC_DEFAULT_SCOPES, PopTokenGenerator, SignedHttpRequestParameters, IPerformanceClient, PerformanceEvents, IdTokenEntity, AccessTokenEntity, ClientAuthError, AuthError, CommonSilentFlowRequest, AccountInfo } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys, NativeConstants } from \"../utils/BrowserConstants\";\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { SilentCacheClient } from \"./SilentCacheClient\";\n\nexport class NativeInteractionClient extends BaseInteractionClient {\n    protected apiId: ApiId;\n    protected accountId: string;\n    protected nativeMessageHandler: NativeMessageHandler;\n    protected silentCacheClient: SilentCacheClient;\n    protected nativeStorageManager: BrowserCacheManager;\n\n    constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string) {\n        super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n        this.apiId = apiId;\n        this.accountId = accountId;\n        this.nativeMessageHandler = provider;\n        this.nativeStorageManager = nativeStorageImpl;\n        this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n    }\n\n    /**\n     * Acquire token from native platform via browser extension\n     * @param request\n     */\n    async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise<AuthenticationResult> {\n        this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\n\n        // start the perf measurement\n        const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\n        const reqTimestamp = TimeUtils.nowSeconds();\n\n        // initialize native request\n        const nativeRequest = await this.initializeNativeRequest(request);\n        \n        // check if the tokens can be retrieved from internal cache\n        try {\n            const result = await this.acquireTokensFromCache(this.accountId, nativeRequest);\n            nativeATMeasurement.endMeasurement({\n                success: true,\n                isNativeBroker: false, // Should be true only when the result is coming directly from the broker\n                fromCache: true\n            });\n            return result;\n        } catch (e) {\n            // continue with a native call for any and all errors\n            this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\n        }\n\n        // fall back to native calls\n        const messageBody: NativeExtensionRequestBody = {\n            method: NativeExtensionMethod.GetToken,\n            request: nativeRequest\n        };\n\n        const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n        const validatedResponse: NativeResponse = this.validateNativeResponse(response);\n\n        return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\n            .then((result: AuthenticationResult) => {\n                nativeATMeasurement.endMeasurement({\n                    success: true,\n                    isNativeBroker: true,\n                    requestId: result.requestId\n                });\n                return result;\n            })\n            .catch((error: AuthError) => {\n                nativeATMeasurement.endMeasurement({\n                    success: false,\n                    errorCode: error.errorCode,\n                    subErrorCode: error.subError,\n                    isNativeBroker: true\n                });\n                throw error;\n            });\n    }\n\n    /**\n     * Creates silent flow request\n     * @param request\n     * @param cachedAccount\n     * @returns CommonSilentFlowRequest\n     */\n    private createSilentCacheRequest(request: NativeTokenRequest, cachedAccount: AccountInfo): CommonSilentFlowRequest {\n        return {\n            authority: request.authority,\n            correlationId: this.correlationId,\n            scopes: ScopeSet.fromString(request.scope).asArray(),\n            account: cachedAccount,\n            forceRefresh: false,\n        };\n    }\n\n    /**\n     * Fetches the tokens from the cache if un-expired\n     * @param nativeAccountId\n     * @param request\n     * @returns authenticationResult\n     */\n    protected async acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise<AuthenticationResult> {\n\n        // fetch the account from in-memory cache\n        const accountEntity = this.browserStorage.readAccountFromCacheWithNativeAccountId(nativeAccountId);\n        if (!accountEntity) {\n            throw ClientAuthError.createNoAccountFoundError();\n        }\n        const account = accountEntity.getAccountInfo();\n\n        // leverage silent flow for cached tokens retrieval\n        try {\n            const silentRequest = this.createSilentCacheRequest(request, account);\n            const result = await this.silentCacheClient.acquireToken(silentRequest);\n            return result;\n        } catch (e) {\n            throw e;\n        }\n    }\n\n    /**\n     * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\n     * @param request\n     */\n    async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\n        this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\n        const nativeRequest = await this.initializeNativeRequest(request);\n\n        const messageBody: NativeExtensionRequestBody = {\n            method: NativeExtensionMethod.GetToken,\n            request: nativeRequest\n        };\n\n        try {\n            const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n            this.validateNativeResponse(response);\n        } catch (e) {\n            // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\n            if (e instanceof NativeAuthError && e.isFatal()) {\n                throw e;\n            }\n        }\n        this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\n\n        const navigationOptions: NavigationOptions = {\n            apiId: ApiId.acquireTokenRedirect,\n            timeout: this.config.system.redirectNavigationTimeout,\n            noHistory: false\n        };\n        const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\n        await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\n    }\n\n    /**\n     * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\n     */\n    async handleRedirectPromise(): Promise<AuthenticationResult | null> {\n        this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\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        // remove prompt from the request to prevent WAM from prompting twice\n        const cachedRequest = this.browserStorage.getCachedNativeRequest();\n        if (!cachedRequest) {\n            this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\n            return null;\n        }\n\n        const { prompt, ...request} = cachedRequest;\n        if (prompt) {\n            this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window.\");\n        }\n\n        this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n\n        const messageBody: NativeExtensionRequestBody = {\n            method: NativeExtensionMethod.GetToken,\n            request: request\n        };\n\n        const reqTimestamp = TimeUtils.nowSeconds();\n\n        try {\n            this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\n            const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n            this.validateNativeResponse(response);\n            const result = this.handleNativeResponse(response as NativeResponse, request, reqTimestamp);\n            this.browserStorage.setInteractionInProgress(false);\n            return result;\n        } catch (e) {\n            this.browserStorage.setInteractionInProgress(false);\n            throw e;\n        }\n    }\n\n    /**\n     * Logout from native platform via browser extension\n     * @param request\n     */\n    logout(): Promise<void> {\n        this.logger.trace(\"NativeInteractionClient - logout called.\");\n        return Promise.reject(\"Logout not implemented yet\");\n    }\n\n    /**\n     * Transform response from native platform into AuthenticationResult object which will be returned to the end user\n     * @param response\n     * @param request\n     * @param reqTimestamp\n     */\n    protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise<AuthenticationResult> {\n        this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\n\n        // Add Native Broker fields to Telemetry\n        const mats = this.getMATSFromResponse(response);\n        this.performanceClient.addStaticFields({\n            extensionId: this.nativeMessageHandler.getExtensionId(),\n            extensionVersion: this.nativeMessageHandler.getExtensionVersion(),\n            matsBrokerVersion: mats ? mats.broker_version : undefined,\n            matsAccountJoinOnStart: mats ? mats.account_join_on_start : undefined,\n            matsAccountJoinOnEnd: mats ? mats.account_join_on_end : undefined,\n            matsDeviceJoin: mats ? mats.device_join : undefined,\n            matsPromptBehavior: mats ? mats.prompt_behavior : undefined,\n            matsApiErrorCode: mats ? mats.api_error_code : undefined,\n            matsUiVisible: mats ? mats.ui_visible : undefined,\n            matsSilentCode: mats ? mats.silent_code : undefined,\n            matsSilentBiSubCode: mats ? mats.silent_bi_sub_code : undefined,\n            matsSilentMessage: mats ? mats.silent_message : undefined,\n            matsSilentStatus: mats ? mats.silent_status : undefined,\n            matsHttpStatus: mats ? mats.http_status : undefined,\n            matsHttpEventCount: mats ? mats.http_event_count : undefined\n        }, this.correlationId);\n\n        if (response.account.id !== request.accountId) {\n            // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\n            throw NativeAuthError.createUserSwitchError();\n        }\n\n        // create an idToken object (not entity)\n        const idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\n\n        // Get the preferred_cache domain for the given authority\n        const authority = await this.getDiscoveredAuthority(request.authority);\n        const authorityPreferredCache = authority.getPreferredCache();\n\n        // Save account in browser storage\n        const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\n        const accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\n        this.browserStorage.setAccount(accountEntity);\n\n        // If scopes not returned in server response, use request scopes\n        const responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\n\n        const accountProperties = response.account.properties || {};\n        const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\n        const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\n\n        // This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT is still received, SHR is calculated locally\n        let responseAccessToken;\n        let responseTokenType: AuthenticationScheme = AuthenticationScheme.BEARER;\n        switch (request.tokenType) {\n            case AuthenticationScheme.POP: {\n                // Set the token type to POP in the response\n                responseTokenType = AuthenticationScheme.POP;\n\n                // Check if native layer returned an SHR token\n                if (response.shr) {\n                    this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\n                    responseAccessToken = response.shr;\n                    break;\n                }\n\n                // Generate SHR in msal js if WAM does not compute it when POP is enabled\n                const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n                const shrParameters: SignedHttpRequestParameters = {\n                    resourceRequestMethod: request.resourceRequestMethod,\n                    resourceRequestUri: request.resourceRequestUri,\n                    shrClaims: request.shrClaims,\n                    shrNonce: request.shrNonce\n                };\n\n                /**\n                 * KeyID must be present in the native request from when the PoP key was generated in order for\n                 * PopTokenGenerator to query the full key for signing\n                 */\n                if (!request.keyId) {\n                    throw ClientAuthError.createKeyIdMissingError();\n                }\n\n                responseAccessToken = await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\n                break;\n\n            }\n            // assign the access token to the response for all non-POP cases (Should be Bearer only today)\n            default: {\n                responseAccessToken = response.access_token;\n            }\n        }\n\n        const result: AuthenticationResult = {\n            authority: authority.canonicalAuthority,\n            uniqueId: uid,\n            tenantId: tid,\n            scopes: responseScopes.asArray(),\n            account: accountEntity.getAccountInfo(),\n            idToken: response.id_token,\n            idTokenClaims: idTokenObj.claims,\n            accessToken: responseAccessToken,\n            fromCache: mats ? this.isResponseFromCache(mats) : false,\n            expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\n            tokenType: responseTokenType,\n            correlationId: this.correlationId,\n            state: response.state,\n            fromNativeBroker: true\n        };\n\n        // cache idToken in inmemory storage\n        const idTokenEntity = IdTokenEntity.createIdTokenEntity(\n            homeAccountIdentifier,\n            request.authority,\n            response.id_token || Constants.EMPTY_STRING,\n            request.clientId,\n            idTokenObj.claims.tid || Constants.EMPTY_STRING,\n        );\n        this.nativeStorageManager.setIdTokenCredential(idTokenEntity);\n\n        // cache accessToken in inmemory storage\n        const expiresIn: number = (responseTokenType === AuthenticationScheme.POP)\n            ? Constants.SHR_NONCE_VALIDITY\n            : (\n                typeof response.expires_in === \"string\"\n                    ? parseInt(response.expires_in, 10)\n                    : response.expires_in\n            ) || 0;\n        const tokenExpirationSeconds = reqTimestamp + expiresIn;\n        const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(\n            homeAccountIdentifier,\n            request.authority,\n            responseAccessToken,\n            request.clientId,\n            tid,\n            responseScopes.printScopes(),\n            tokenExpirationSeconds,\n            0,\n            this.browserCrypto\n        );\n        this.nativeStorageManager.setAccessTokenCredential(accessTokenEntity);\n\n        // Remove any existing cached tokens for this account in browser storage\n        this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\n            this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\n        });\n\n        return result;\n    }\n\n    /**\n     * Validates native platform response before processing\n     * @param response\n     */\n    private validateNativeResponse(response: object): NativeResponse {\n        if (\n            response.hasOwnProperty(\"access_token\") &&\n            response.hasOwnProperty(\"id_token\") &&\n            response.hasOwnProperty(\"client_info\") &&\n            response.hasOwnProperty(\"account\") &&\n            response.hasOwnProperty(\"scope\") &&\n            response.hasOwnProperty(\"expires_in\")\n        ) {\n            return response as NativeResponse;\n        } else {\n            throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\n        }\n    }\n\n    /**\n     * Gets MATS telemetry from native response\n     * @param response\n     * @returns\n     */\n    private getMATSFromResponse(response: NativeResponse): MATS|null {\n        if (response.properties.MATS) {\n            try {\n                return JSON.parse(response.properties.MATS);\n            } catch (e) {\n                this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * Returns whether or not response came from native cache\n     * @param response\n     * @returns\n     */\n    private isResponseFromCache(mats: MATS): boolean {\n        if (typeof mats.is_cached === \"undefined\") {\n            this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\n            return false;\n        }\n\n        return !!mats.is_cached;\n    }\n\n    /**\n     * Translates developer provided request object into NativeRequest object\n     * @param request\n     */\n    protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise<NativeTokenRequest> {\n        this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\n\n        const authority = request.authority || this.config.auth.authority;\n        const canonicalAuthority = new UrlString(authority);\n        canonicalAuthority.validateAsUri();\n\n        // scopes are expected to be received by the native broker as \"scope\" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here.\n        const { scopes, ...remainingProperties } = request; \n        const scopeSet = new ScopeSet(scopes || []);\n        scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\n\n        const getPrompt = () => {\n            // If request is silent, prompt is always none\n            switch (this.apiId) {\n                case ApiId.ssoSilent:\n                case ApiId.acquireTokenSilent_silentFlow:\n                    this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\n                    return PromptValue.NONE;\n                default:\n                    break;\n            }\n\n            // Prompt not provided, request may proceed and native broker decides if it needs to prompt\n            if (!request.prompt) {\n                this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\n                return undefined;\n            }\n\n            // If request is interactive, check if prompt provided is allowed to go directly to native broker\n            switch (request.prompt) {\n                case PromptValue.NONE:\n                case PromptValue.CONSENT:\n                case PromptValue.LOGIN:\n                    this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\n                    return request.prompt;\n                default:\n                    this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\n                    throw BrowserAuthError.createNativePromptParameterNotSupportedError();\n            }\n        };\n        \n        const validatedRequest: NativeTokenRequest = {\n            ...remainingProperties,\n            accountId: this.accountId,\n            clientId: this.config.auth.clientId,\n            authority: canonicalAuthority.urlString,\n            scope: scopeSet.printScopes(),\n            redirectUri: this.getRedirectUri(request.redirectUri),\n            prompt: getPrompt(),\n            correlationId: this.correlationId,\n            tokenType: request.authenticationScheme,\n            windowTitleSubstring: document.title,\n            extraParameters: {\n                ...request.extraQueryParameters,\n                ...request.tokenQueryParameters,\n                telemetry: NativeConstants.MATS_TELEMETRY\n            },\n            extendedExpiryToken: false // Make this configurable?\n        };\n\n        if (request.authenticationScheme === AuthenticationScheme.POP) {\n\n            // add POP request type\n            const shrParameters: SignedHttpRequestParameters = {\n                resourceRequestUri: request.resourceRequestUri,\n                resourceRequestMethod: request.resourceRequestMethod,\n                shrClaims: request.shrClaims,\n                shrNonce: request.shrNonce\n            };\n\n            const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n            const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\n\n            // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n            validatedRequest.reqCnf = reqCnfData.reqCnfHash;\n            validatedRequest.keyId = reqCnfData.kid;\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 { NativeConstants, NativeExtensionMethod } from \"../../utils/BrowserConstants\";\nimport { Logger, AuthError, AuthenticationScheme } from \"@azure/msal-common\";\nimport { NativeExtensionRequest, NativeExtensionRequestBody } from \"./NativeRequest\";\nimport { NativeAuthError } from \"../../error/NativeAuthError\";\nimport { BrowserAuthError } from \"../../error/BrowserAuthError\";\nimport { BrowserConfiguration } from \"../../config/Configuration\";\n\ntype ResponseResolvers<T> = {\n    resolve: (value:T|PromiseLike<T>) => void;\n    reject: (value:AuthError|Error|PromiseLike<Error>|PromiseLike<AuthError>)  => void;\n};\n\nexport class NativeMessageHandler {\n    private extensionId: string | undefined;\n    private extensionVersion: string | undefined;\n    private logger: Logger;\n    private handshakeTimeoutMs: number;\n    private responseId: number;\n    private timeoutId: number | undefined;\n    private resolvers: Map<number, ResponseResolvers<object>>;\n    private handshakeResolvers: Map<number, ResponseResolvers<void>>;\n    private messageChannel: MessageChannel;\n    private windowListener: (event: MessageEvent) => void;\n\n    constructor(logger: Logger, handshakeTimeoutMs: number, extensionId?: string) {\n        this.logger = logger;\n        this.handshakeTimeoutMs = handshakeTimeoutMs;\n        this.extensionId = extensionId;\n        this.resolvers = new Map(); // Used for non-handshake messages\n        this.handshakeResolvers = new Map(); // Used for handshake messages\n        this.responseId = 0;\n        this.messageChannel = new MessageChannel();\n        this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\n    }\n\n    /**\n     * Sends a given message to the extension and resolves with the extension response\n     * @param body \n     */\n    async sendMessage(body: NativeExtensionRequestBody): Promise<object> {\n        this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\n        const req: NativeExtensionRequest = {\n            channel: NativeConstants.CHANNEL_ID,\n            extensionId: this.extensionId,\n            responseId: this.responseId++,\n            body: body\n        };\n\n        this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\n        this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`);\n        this.messageChannel.port1.postMessage(req);\n\n        return new Promise((resolve, reject) => {\n            this.resolvers.set(req.responseId, {resolve, reject});\n        });\n    }\n\n    /**\n     * Returns an instance of the MessageHandler that has successfully established a connection with an extension\n     * @param logger \n     * @param handshakeTimeoutMs\n     */\n    static async createProvider(logger: Logger, handshakeTimeoutMs: number): Promise<NativeMessageHandler> {\n        logger.trace(\"NativeMessageHandler - createProvider called.\");\n        try {\n            const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\n            await preferredProvider.sendHandshakeRequest();\n            return preferredProvider;\n        } catch (e) {\n            // If preferred extension fails for whatever reason, fallback to using any installed extension\n            const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\n            await backupProvider.sendHandshakeRequest();\n            return backupProvider;\n        }\n    }\n\n    /**\n     * Send handshake request helper.\n     */\n    private async sendHandshakeRequest(): Promise<void> {\n        this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\n        // Register this event listener before sending handshake\n        window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\n\n        const req: NativeExtensionRequest = {\n            channel: NativeConstants.CHANNEL_ID,\n            extensionId: this.extensionId,\n            responseId: this.responseId++,\n\n            body: {\n                method: NativeExtensionMethod.HandshakeRequest\n            }\n        };\n\n        this.messageChannel.port1.onmessage = (event) => {\n            this.onChannelMessage(event);\n        };\n\n        window.postMessage(req, window.origin, [this.messageChannel.port2]);\n\n        return new Promise((resolve, reject) => {\n            this.handshakeResolvers.set(req.responseId, {resolve, reject});\n            this.timeoutId = window.setTimeout(() => {\n                /*\n                 * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\n                 * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\n                 */\n                window.removeEventListener(\"message\", this.windowListener, false);\n                this.messageChannel.port1.close();\n                this.messageChannel.port2.close();\n                reject(BrowserAuthError.createNativeHandshakeTimeoutError());\n                this.handshakeResolvers.delete(req.responseId);\n            }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\n        });\n    }\n\n    /**\n     * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\n     * @param event \n     */\n    private onWindowMessage(event: MessageEvent): void {\n        this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\n        // We only accept messages from ourselves\n        if (event.source !== window) {\n            return;\n        }\n\n        const request = event.data;\n\n        if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\n            return;\n        }\n\n        if (request.extensionId && request.extensionId !== this.extensionId) {\n            return;\n        }\n\n        if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\n            // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\n            this.logger.verbose(request.extensionId ? `Extension with id: ${request.extensionId} not installed` : \"No extension installed\");\n            clearTimeout(this.timeoutId);\n            this.messageChannel.port1.close();\n            this.messageChannel.port2.close();\n            window.removeEventListener(\"message\", this.windowListener, false);\n            const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n            if (handshakeResolver) {\n                handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\n            }\n        }\n    }\n\n    /**\n     * Invoked when a message is received from the extension on the MessageChannel port\n     * @param event \n     */\n    private onChannelMessage(event: MessageEvent): void {\n        this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\n        const request = event.data;\n        \n        const resolver = this.resolvers.get(request.responseId);\n        const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n\n        try {\n            const method = request.body.method;\n            \n            if (method === NativeExtensionMethod.Response) {\n                if (!resolver) {\n                    return;\n                }\n                const response = request.body.response;\n                this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\n                this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`);\n                if (response.status !== \"Success\") {\n                    resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\n                } else if (response.result) {\n                    if (response.result[\"code\"] && response.result[\"description\"]) {\n                        resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\n                    } else {\n                        resolver.resolve(response.result);\n                    }\n                } else {\n                    throw AuthError.createUnexpectedError(\"Event does not contain result.\");\n                }\n                this.resolvers.delete(request.responseId);\n            } else if (method === NativeExtensionMethod.HandshakeResponse) {\n                if (!handshakeResolver) {\n                    return;\n                }\n                clearTimeout(this.timeoutId); // Clear setTimeout\n                window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\n                this.extensionId = request.extensionId;\n                this.extensionVersion = request.body.version;\n                this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`);\n\n                handshakeResolver.resolve();\n                this.handshakeResolvers.delete(request.responseId);\n            } \n            // Do nothing if method is not Response or HandshakeResponse\n        } catch (err) {\n            this.logger.error(\"Error parsing response from WAM Extension\");\n            this.logger.errorPii(`Error parsing response from WAM Extension: ${err.toString()}`);\n            this.logger.errorPii(`Unable to parse ${event}`);\n\n            if (resolver) {\n                resolver.reject(err as AuthError);\n            } else if (handshakeResolver) {\n                handshakeResolver.reject(err as AuthError);\n            }\n        }\n    }\n\n    /**\n     * Returns the Id for the browser extension this handler is communicating with\n     * @returns \n     */\n    getExtensionId(): string | undefined {\n        return this.extensionId;\n    }\n\n    /**\n     * Returns the version for the browser extension this handler is communicating with\n     * @returns \n     */\n    getExtensionVersion(): string | undefined {\n        return this.extensionVersion;\n    }\n    \n    /**\n     * Returns boolean indicating whether or not the request should attempt to use native broker\n     * @param logger\n     * @param config\n     * @param nativeExtensionProvider\n     * @param authenticationScheme \n     */\n    static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean {\n        logger.trace(\"isNativeAvailable called\");\n        if (!config.system.allowNativeBroker) {\n            logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\n            // Developer disabled WAM\n            return false;\n        }\n\n        if (!nativeExtensionProvider) {\n            logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\n            // Extension is not available\n            return false;\n        }\n\n        if (authenticationScheme) {\n            switch(authenticationScheme) {\n                case AuthenticationScheme.BEARER:\n                case AuthenticationScheme.POP:\n                    logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\n                    return true;\n                default:\n                    logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\n                    return false;\n            }\n        }\n\n        return true;\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, ServerError, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } 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 class InteractionHandler {\n\n    protected authModule: AuthorizationCodeClient;\n    protected browserStorage: BrowserCacheManager;\n    protected authCodeRequest: CommonAuthorizationCodeRequest;\n    protected logger: Logger;\n    protected performanceClient: IPerformanceClient;\n\n    constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient) {\n        this.authModule = authCodeModule;\n        this.browserStorage = storageImpl;\n        this.authCodeRequest = authCodeRequest;\n        this.logger = logger;\n        this.performanceClient = performanceClient;\n    }\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.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromHash, this.authCodeRequest.correlationId);\n        this.logger.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\n        let authCodeResponse;\n        try {\n            authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n        } catch (e) {\n            if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n                // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n                throw BrowserAuthError.createUserCancelledError();\n            } else {\n                throw e;\n            }\n        }\n\n        this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\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.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\n        this.logger.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            this.performanceClient.setPreQueueTime(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\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        this.performanceClient.setPreQueueTime(PerformanceEvents.AuthClientAcquireToken, this.authCodeRequest.correlationId);\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        this.performanceClient.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\n        const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n        const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options, this.logger, this.performanceClient, this.authCodeRequest.correlationId);\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 { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ThrottlingUtils, CommonEndSessionRequest, UrlString, AuthError, OIDC_DEFAULT_SCOPES, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, PerformanceEvents, StringUtils, IPerformanceClient, Logger, ICrypto } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { EventType } from \"../event/EventType\";\nimport { InteractionType, ApiId, BrowserConstants } from \"../utils/BrowserConstants\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { InteractionHandler, InteractionParams } from \"../interaction_handler/InteractionHandler\";\nimport { PopupWindowAttributes } from \"../request/PopupWindowAttributes\";\n\nexport type PopupParams = InteractionParams & {\n    popup?: Window|null;\n    popupName: string;\n    popupWindowAttributes: PopupWindowAttributes\n};\n\nexport class PopupClient extends StandardInteractionClient {\n    private currentWindow: Window | undefined;\n    protected nativeStorage: BrowserCacheManager;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n        // Properly sets this reference for the unload event.\n        this.unloadWindow = this.unloadWindow.bind(this);\n        this.nativeStorage = nativeStorageImpl;\n    }\n\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 = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\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 = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\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 = this.generateLogoutPopupName(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 = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\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\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\n        const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Popup);\n        this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\n\n        try {\n            // Create auth code request and generate PKCE params\n            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\n            const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n            // Initialize the client\n            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\n            const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n            this.logger.verbose(\"Auth code client created\");\n\n            const isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\n            // Start measurement for server calls with native brokering enabled\n            let fetchNativeAccountIdMeasurement;\n            if (isNativeBroker) {\n                fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\n            }\n\n            // Create acquire token url.\n            const navigateUrl = await authClient.getAuthCodeUrl({\n                ...validRequest,\n                nativeBroker: isNativeBroker\n            });\n\n            // Create popup interaction handler.\n            const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient);\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 = this.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 this.monitorPopupForHash(popupWindow);\n            // Deserialize hash fragment response parameters.\n            const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n            const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\n            // Remove throttle if it exists\n            ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\n\n            if (serverParams.accountId) {\n                this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n                // end measurement for server call with native brokering enabled\n                if (fetchNativeAccountIdMeasurement) {\n                    fetchNativeAccountIdMeasurement.endMeasurement({\n                        success: true,\n                        isNativeBroker: true\n                    });\n                }\n\n                if (!this.nativeMessageHandler) {\n                    throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n                }\n                const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);\n                const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n                return nativeInteractionClient.acquireToken({\n                    ...validRequest,\n                    state: userRequestState,\n                    prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\n                }).finally(() => {\n                    this.browserStorage.cleanRequestByState(state);\n                });\n            }\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 as AuthError).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            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validRequest.correlationId);\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            // Open the popup window to requestUrl.\n            const popupWindow = this.openPopup(logoutUri, {popupName, popupWindowAttributes, popup});\n            this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n            await this.waitForLogoutPopup(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 as AuthError).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     * 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.logger.infoPii(`Navigate to: ${requestUrl}`);\n            // Open the popup window to requestUrl.\n            return this.openPopup(requestUrl, params);\n        } else {\n            // Throw error if request URL is empty.\n            this.logger.error(\"Navigate url is empty\");\n            throw BrowserAuthError.createEmptyNavigationUriError();\n        }\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     * @param timeout - timeout for processing hash once popup is redirected back to application\n     */\n    monitorPopupForHash(popupWindow: Window): Promise<string> {\n        return new Promise((resolve, reject) => {\n            /*\n             * Polling for popups needs to be tick-based,\n             * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\n             */\n            const maxTicks = this.config.system.windowHashTimeout / this.config.system.pollIntervalMilliseconds;\n            let ticks = 0;\n\n            this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\n\n            const intervalId = setInterval(() => {\n                // Window is closed\n                if (popupWindow.closed) {\n                    this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\n                    this.cleanPopup();\n                    clearInterval(intervalId);\n                    reject(BrowserAuthError.createUserCancelledError());\n                    return;\n                }\n\n                let href: string = Constants.EMPTY_STRING;\n                let hash: 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                    hash = popupWindow.location.hash;\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                this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\n\n                /*\n                 * Only run clock when we are on same domain for popups\n                 * as popup operations can take a long time.\n                 */\n                ticks++;\n\n                if (hash) {\n                    this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\n                    clearInterval(intervalId);\n                    this.cleanPopup(popupWindow);\n\n                    if (UrlString.hashContainsKnownProperties(hash)) {\n                        this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\n                        resolve(hash);\n                    } else {\n                        this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\n                        this.logger.errorPii(`PopupHandler.monitorPopupForHash - hash found: ${hash}`);\n                        reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\n                    }\n                } else if (ticks > maxTicks) {\n                    this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\n                    clearInterval(intervalId);\n                    reject(BrowserAuthError.createMonitorPopupTimeoutError());\n                }\n            }, this.config.system.pollIntervalMilliseconds);\n        });\n    }\n\n    /**\n     * Waits for user interaction in logout popup window\n     * @param popupWindow\n     * @returns\n     */\n    waitForLogoutPopup(popupWindow: Window): Promise<void> {\n        return new Promise((resolve) => {\n            this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\n\n            const intervalId = setInterval(() => {\n                // Window is closed\n                if (popupWindow.closed) {\n                    this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\n                    this.cleanPopup();\n                    clearInterval(intervalId);\n                    resolve();\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                this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\n\n                clearInterval(intervalId);\n                this.cleanPopup(popupWindow);\n                resolve();\n            }, this.config.system.pollIntervalMilliseconds);\n        });\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 = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\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 as AuthError).message);\n            this.browserStorage.setInteractionInProgress(false);\n            throw BrowserAuthError.createPopupWindowError((e as AuthError).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    openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes): 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            this.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            this.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            this.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            this.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     * Generates the name for the popup based on the client id and request\n     * @param clientId\n     * @param request\n     */\n    generatePopupName(scopes: Array<string>, authority: string): string {\n        return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join(\"-\")}.${authority}.${this.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    generateLogoutPopupName(request: CommonEndSessionRequest): string {\n        const homeAccountId = request.account && request.account.homeAccountId;\n        return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`;\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, Authority, INetworkModule, ClientAuthError, Logger, ServerError, IPerformanceClient } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } 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, logger: Logger, browserCrypto: ICrypto, performanceClient: IPerformanceClient) {\n        super(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient);\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.logger.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.logger.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.logger.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.logger.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.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n                    await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n                    return;\n                } else {\n                    this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n                    return;\n                }\n            } else {\n                // Navigate window to request URL\n                this.logger.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.logger.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): Promise<AuthenticationResult> {\n        this.logger.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\n        let authCodeResponse;\n        try {\n            authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n        } catch (e) {\n            if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n                // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n                throw BrowserAuthError.createUserCancelledError();\n            } else {\n                throw e;\n            }\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        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        // 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, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, ThrottlingUtils, ICrypto, Logger, IPerformanceClient, PerformanceEvents } 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\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\n\nexport class RedirectClient extends StandardInteractionClient {\n    protected nativeStorage: BrowserCacheManager;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n        this.nativeStorage = nativeStorageImpl;\n    }\n\n    /**\n     * Redirects the page to the /authorize endpoint of the IDP\n     * @param request\n     */\n    async acquireToken(request: RedirectRequest): Promise<void> {\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\n        const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);\n        this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, 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            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\n            const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n            // Initialize the client\n            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\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, this.performanceClient);\n\n            // Create acquire token url.\n            const navigateUrl = await authClient.getAuthCodeUrl({\n                ...validRequest,\n                nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme)\n            });\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                // Deserialize hash fragment response parameters.\n                const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(responseHash);\n                state = this.validateAndExtractStateFromHash(serverParams, 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) || Constants.EMPTY_STRING;\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 as AuthError).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        const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n\n        if (serverParams.accountId) {\n            this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n            if (!this.nativeMessageHandler) {\n                throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n            }\n            const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, cachedRequest.correlationId);\n            const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n            return nativeInteractionClient.acquireToken({\n                ...cachedRequest,\n                state: userRequestState,\n                prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\n            }).finally(() => {\n                this.browserStorage.cleanRequestByState(state);\n            });\n        }\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        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, cachedRequest.correlationId);\n        const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\n        this.logger.verbose(\"Auth code client created\");\n        ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\n        const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto, this.performanceClient);\n        return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\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            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validLogoutRequest.correlationId);\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                    // Ensure interaction is in progress\n                    if (!this.browserStorage.getInteractionInProgress()) {\n                        this.browserStorage.setInteractionInProgress(true);\n                    }\n                    await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n                    return;\n                } else {\n                    // Ensure interaction is not in progress\n                    this.browserStorage.setInteractionInProgress(false);\n                    this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\n                }\n            } else {\n                // Ensure interaction is in progress\n                if (!this.browserStorage.getInteractionInProgress()) {\n                    this.browserStorage.setInteractionInProgress(true);\n                }\n                await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n                return;\n            }\n        } catch(e) {\n            if (e instanceof AuthError) {\n                (e as AuthError).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, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\nimport { InteractionHandler } from \"./InteractionHandler\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserSystemOptions, DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\n\nexport class SilentHandler extends InteractionHandler {\n\n    private navigateFrameWait: number;\n    private pollIntervalMilliseconds: number;\n\n    constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, systemOptions: Required<Pick<BrowserSystemOptions, \"navigateFrameWait\" | \"pollIntervalMilliseconds\">>, performanceClient: IPerformanceClient) {\n        super(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient);\n        this.navigateFrameWait = systemOptions.navigateFrameWait;\n        this.pollIntervalMilliseconds = systemOptions.pollIntervalMilliseconds;\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        this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, this.authCodeRequest.correlationId);\n\n        if (StringUtils.isEmpty(requestUrl)) {\n            // Throw error if request URL is empty.\n            this.logger.info(\"Navigate url is empty\");\n            throw BrowserAuthError.createEmptyNavigationUriError();\n        }\n\n        if (this.navigateFrameWait) {\n            this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\n            return await this.loadFrame(requestUrl);\n        }\n        return 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        this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, this.authCodeRequest.correlationId);\n\n        return new Promise((resolve, reject) => {\n            if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\n                this.logger.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            }, this.pollIntervalMilliseconds);\n        });\n    }\n\n    /**\n     * @hidden\n     * Loads iframe with authorization endpoint URL\n     * @ignore\n     */\n    private loadFrame(urlNavigate: string): Promise<HTMLIFrameElement> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\n\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, Constants, UrlString, ServerAuthorizationCodeResponse, ProtocolUtils, IPerformanceClient, PerformanceEvents } 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\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n    protected apiId: ApiId;\n    protected nativeStorage: BrowserCacheManager;\n\n    constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n        this.apiId = apiId;\n        this.nativeStorage = nativeStorageImpl;\n    }\n\n    /**\n     * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session\n     * @param request\n     */\n    async acquireToken(request: SsoSilentRequest): Promise<AuthenticationResult> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\n        this.logger.verbose(\"acquireTokenByIframe called\");\n        const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\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 or no_session, throw error if it is set to anything else.\n        if (request.prompt && (request.prompt !== PromptValue.NONE) && (request.prompt !== PromptValue.NO_SESSION)) {\n            acquireTokenMeasurement.endMeasurement({\n                success: false\n            });\n            throw BrowserAuthError.createSilentPromptValueError(request.prompt);\n        }\n\n        // Create silent request\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\n        const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\n            ...request,\n            prompt: request.prompt || PromptValue.NONE\n        }, InteractionType.Silent);\n        this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\n\n        const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n        try {\n            // Initialize the client\n            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\n            const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n            this.logger.verbose(\"Auth code client created\");\n\n            this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientTokenHelper, request.correlationId);\n            return await this.silentTokenHelper(authClient, silentRequest).then((result: AuthenticationResult) => {\n                acquireTokenMeasurement.endMeasurement({\n                    success: true,\n                    fromCache: false,\n                    requestId: result.requestId\n                });\n                return result;\n            });\n        } catch (e) {\n            if (e instanceof AuthError) {\n                (e as AuthError).setCorrelationId(this.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            this.browserStorage.cleanRequestByState(silentRequest.state);\n            acquireTokenMeasurement.endMeasurement({\n                errorCode: e instanceof AuthError && e.errorCode || undefined,\n                subErrorCode: e instanceof AuthError && e.subError || undefined,\n                success: false\n            });\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(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise<AuthenticationResult> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, silentRequest.correlationId);\n\n        // Create auth code request and generate PKCE params\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, silentRequest.correlationId);\n        const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\n        // Create authorize request url\n        this.performanceClient.setPreQueueTime(PerformanceEvents.GetAuthCodeUrl, silentRequest.correlationId);\n        const navigateUrl = await authClient.getAuthCodeUrl({\n            ...silentRequest,\n            nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme)\n        });\n\n        // Create silent handler\n        const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\n        // Get the frame handle for the silent request\n        this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerInitiateAuthRequest, silentRequest.correlationId);\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        this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerMonitorIframeForHash, silentRequest.correlationId);\n        const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\n        // Deserialize hash fragment response parameters.\n        const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n        const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\n\n        if (serverParams.accountId) {\n            this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n            if (!this.nativeMessageHandler) {\n                throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n            }\n            const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);\n            const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n            return nativeInteractionClient.acquireToken({\n                ...silentRequest,\n                state: userRequestState,\n                prompt: silentRequest.prompt || PromptValue.NONE\n            }).finally(() => {\n                this.browserStorage.cleanRequestByState(state);\n            });\n        }\n\n        // Handle response from hash string\n        this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromHash, silentRequest.correlationId);\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, PerformanceEvents } 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        this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId);\n\n        this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, request.correlationId);\n        const silentRequest: CommonSilentFlowRequest = {\n            ...request,\n            ...await this.initializeBaseRequest(request)\n        };\n        const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\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        // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n        this.performanceClient.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\n        return refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\n            .then((result: AuthenticationResult) => {\n                acquireTokenMeasurement.endMeasurement({\n                    success: true,\n                    fromCache: result.fromCache,\n                    requestId: result.requestId\n                });\n\n                return result;\n            })\n            .catch((e: AuthError) => {\n                if (e instanceof AuthError) {\n                    (e as AuthError).setCorrelationId(this.correlationId);\n                }\n                serverTelemetryManager.cacheFailedRequest(e);\n                acquireTokenMeasurement.endMeasurement({\n                    errorCode: e.errorCode,\n                    subErrorCode: e.subError,\n                    success: false\n                });\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        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\n        const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n        return new RefreshTokenClient(clientConfig, this.performanceClient);\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, RefreshTokenEntity , AuthorityType, CacheRecord, AuthenticationResult, Constants } 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    expiresOn?: number,\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     * @returns `AuthenticationResult` for the response that was loaded.\n     */\n    loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult {\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        const idToken = new AuthToken(response.id_token, this.cryptoObj);\n\n        let cacheRecord: CacheRecord | undefined;\n        let authority: Authority | undefined;\n\n        if (request.account) {\n            const cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);\n            cacheRecord = new CacheRecord(\n                cacheRecordAccount,\n                this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId),\n                this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options),\n                this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment)\n            );\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                skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\n            };\n            authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);\n\n            // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\n            if (options.clientInfo) {\n                this.logger.trace(\"TokenCache - homeAccountId from options\");\n                const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);\n                cacheRecord = new CacheRecord(\n                    cacheRecordAccount,\n                    this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant),\n                    this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options),\n                    this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort)\n                );\n            } else if (response.client_info) {\n                this.logger.trace(\"TokenCache - homeAccountId from response\");\n                const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);\n                cacheRecord = new CacheRecord(\n                    cacheRecordAccount,\n                    this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant),\n                    this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options),\n                    this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort)\n                );\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        return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);\n    }\n\n    /**\n     * Helper function to load account to msal-browser cache\n     * @param idToken\n     * @param environment\n     * @param clientInfo\n     * @param authorityType\n     * @param requestHomeAccountId\n     * @returns `AccountEntity`\n     */\n    private loadAccount(idToken: AuthToken, environment: string, clientInfo?: string, authorityType?: AuthorityType, requestHomeAccountId?: string): AccountEntity {\n\n        let homeAccountId;\n        if (requestHomeAccountId) {\n            homeAccountId = requestHomeAccountId;\n        } else if (authorityType !== undefined && clientInfo) {\n            homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);\n        }\n\n        if (!homeAccountId) {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"Unexpected missing homeAccountId\");\n        }\n\n        const accountEntity = clientInfo ?\n            AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment) :\n            AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);\n\n        if (this.isBrowserEnvironment) {\n            this.logger.verbose(\"TokenCache - loading account\");\n\n            this.storage.setAccount(accountEntity);\n            return accountEntity;\n        } else {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\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     * @returns `IdTokenEntity`\n     */\n    private loadIdToken(idToken: AuthToken, homeAccountId: string, environment: string, tenantId: string): IdTokenEntity {\n\n        const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);\n\n        if (this.isBrowserEnvironment) {\n            this.logger.verbose(\"TokenCache - loading id token\");\n            this.storage.setIdTokenCredential(idTokenEntity);\n            return 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 homeAccountId\n     * @param environment\n     * @param tenantId\n     * @returns `AccessTokenEntity`\n     */\n    private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): AccessTokenEntity | null {\n\n        if (!response.access_token) {\n            this.logger.verbose(\"TokenCache - No access token provided for caching\");\n            return null;\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 = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\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            return accessTokenEntity;\n        } else {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n        }\n    }\n\n    /**\n     * Helper function to load refresh tokens to msal-browser cache\n     * @param request\n     * @param response\n     * @param homeAccountId\n     * @param environment\n     * @returns `RefreshTokenEntity`\n     */\n    private loadRefreshToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string): RefreshTokenEntity | null {\n\n        if (!response.refresh_token) {\n            this.logger.verbose(\"TokenCache - No refresh token provided for caching\");\n            return null;\n        }\n\n        const refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);\n\n        if (this.isBrowserEnvironment) {\n            this.logger.verbose(\"TokenCache - loading refresh token\");\n            this.storage.setRefreshTokenCredential(refreshTokenEntity);\n            return refreshTokenEntity;\n        } else {\n            throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n        }\n    }\n\n    /**\n     * Helper function to generate an `AuthenticationResult` for the result.\n     * @param request\n     * @param idTokenObj\n     * @param cacheRecord\n     * @param authority\n     * @returns `AuthenticationResult`\n     */\n    private generateAuthenticationResult(\n        request: SilentRequest,\n        idTokenObj: AuthToken,\n        cacheRecord?: CacheRecord,\n        authority?: Authority,\n    ): 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\n        if (cacheRecord?.accessToken) {\n            accessToken = cacheRecord.accessToken.secret;\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        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 ? authority.canonicalAuthority : Constants.EMPTY_STRING,\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: true,\n            expiresOn: expiresOn,\n            correlationId: request.correlationId || Constants.EMPTY_STRING,\n            requestId: Constants.EMPTY_STRING,\n            extExpiresOn: extExpiresOn,\n            familyId: Constants.EMPTY_STRING,\n            tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,\n            state: Constants.EMPTY_STRING,\n            cloudGraphHostName: cacheRecord?.account?.cloudGraphHostName || Constants.EMPTY_STRING,\n            msGraphHost: cacheRecord?.account?.msGraphHost || Constants.EMPTY_STRING,\n            code: undefined,\n            fromNativeBroker: false\n        };\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, Constants, IPerformanceClient, PerformanceEvents } 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\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\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, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n        super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, 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\n        // Create silent request\n        this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\n        const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest(request, InteractionType.Silent);\n        this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, 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            this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, request.correlationId);\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, this.performanceClient);\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 as AuthError).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 { IPerformanceMeasurement } from \"@azure/msal-common\";\n\nexport class BrowserPerformanceMeasurement implements IPerformanceMeasurement {\n    private measureName: string;\n    private correlationId: string;\n    private startMark: string;\n    private endMark: string;\n\n    constructor(name: string, correlationId: string) {\n        this.correlationId = correlationId;\n        this.measureName = `msal.measure.${name}.${this.correlationId}`;\n        this.startMark = `msal.start.${name}.${this.correlationId}`;\n        this.endMark = `msal.end.${name}.${this.correlationId}`;\n    }\n\n    static supportsBrowserPerformance(): boolean {\n        return typeof window !== \"undefined\" &&\n            typeof window.performance !== \"undefined\" &&\n            typeof window.performance.mark === \"function\" && \n            typeof window.performance.measure === \"function\" &&\n            typeof window.performance.clearMarks === \"function\" &&\n            typeof window.performance.clearMeasures === \"function\" &&\n            typeof window.performance.getEntriesByName === \"function\";\n    }\n\n    startMeasurement(): void {\n        if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n            try {\n                window.performance.mark(this.startMark);\n            } catch (e) {\n                // Silently catch\n            }\n        }\n    }\n\n    endMeasurement():void {\n        if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n            try {\n                window.performance.mark(this.endMark);\n                window.performance.measure(this.measureName, this.startMark, this.endMark);\n            } catch (e) {\n                // Silently catch\n            }\n        }\n    }\n\n    flushMeasurement(): number | null {\n        if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n            try {\n                const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\n                if (entriesForMeasurement.length > 0) {\n                    const durationMs = entriesForMeasurement[0].duration;\n                    window.performance.clearMeasures(this.measureName);\n                    window.performance.clearMarks(this.startMark);\n                    window.performance.clearMarks(this.endMark);\n                    return durationMs;\n                }\n            } catch (e) {\n                // Silently catch and return null\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 { Logger, PerformanceEvent, PerformanceEvents, IPerformanceClient, PerformanceClient, IPerformanceMeasurement, InProgressPerformanceEvent, ApplicationTelemetry } from \"@azure/msal-common\";\nimport { CryptoOptions } from \"../config/Configuration\";\nimport { BrowserCrypto } from \"../crypto/BrowserCrypto\";\nimport { GuidGenerator } from \"../crypto/GuidGenerator\";\nimport { BrowserPerformanceMeasurement } from \"./BrowserPerformanceMeasurement\";\n\nexport class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient {\n    private browserCrypto: BrowserCrypto;\n    private guidGenerator: GuidGenerator;\n    \n    constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, cryptoOptions: CryptoOptions) {\n        super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);\n        this.browserCrypto = new BrowserCrypto(this.logger, cryptoOptions);\n        this.guidGenerator = new GuidGenerator(this.browserCrypto);\n    }\n    \n    startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\n        return new BrowserPerformanceMeasurement(measureName, correlationId);\n    }\n\n    generateId() : string {\n        return this.guidGenerator.generateGuid();\n    }\n\n    private getPageVisibility(): string | null {\n        return document.visibilityState?.toString() || null;\n    }\n\n    supportsBrowserPerformanceNow(): boolean {\n        return typeof window !== \"undefined\" &&\n            typeof window.performance !== \"undefined\" &&\n            typeof window.performance.now === \"function\";\n    }\n    \n    /**\n     * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n     * Also captures browser page visibilityState.\n     *\n     * @param {PerformanceEvents} measureName\n     * @param {?string} [correlationId]\n     * @returns {((event?: Partial<PerformanceEvent>) => PerformanceEvent| null)}\n     */\n    startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n        // Capture page visibilityState and then invoke start/end measurement\n        const startPageVisibility = this.getPageVisibility();\n        \n        const inProgressEvent = super.startMeasurement(measureName, correlationId);\n\n        return {\n            ...inProgressEvent,\n            endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\n                return inProgressEvent.endMeasurement({\n                    startPageVisibility,\n                    endPageVisibility: this.getPageVisibility(),\n                    ...event\n                });\n            }\n        };\n    }\n\n    /**\n     * Adds pre-queue time to preQueueTimeByCorrelationId map.\n     * @param {PerformanceEvents} eventName \n     * @param {?string} correlationId \n     * @returns \n     */\n    setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void {\n        if (!this.supportsBrowserPerformanceNow()) {\n            this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`);\n            return;\n        }\n\n        if (!correlationId) {\n            this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`);\n            return;\n        }\n\n        const preQueueTimesByEvents = this.preQueueTimeByCorrelationId.get(correlationId);\n\n        if (preQueueTimesByEvents){\n            preQueueTimesByEvents.set(eventName, window.performance.now());\n            this.preQueueTimeByCorrelationId.set(correlationId, preQueueTimesByEvents);\n        } else {\n            const preQueueTimes = new Map();\n            preQueueTimes.set(eventName, window.performance.now());\n            this.preQueueTimeByCorrelationId.set(correlationId, preQueueTimes);\n        }\n    }\n\n    /**\n     * Calculates and adds queue time measurement for given performance event.\n     * \n     * @param {PerformanceEvents} name \n     * @param {?string} correlationId \n     * @param {?number} preQueueTime \n     * @returns \n     */\n    addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string): void {\n        if (!this.supportsBrowserPerformanceNow()) {\n            this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`);\n            return;\n        }\n\n        if (!correlationId) {\n            this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`);\n            return;\n        }\n\n        const preQueueTime = super.getPreQueueTime(eventName, correlationId);\n        if (!preQueueTime) {\n            return;\n        }\n        \n        const currentTime = window.performance.now();\n        const queueTime = super.calculateQueuedTime(preQueueTime, currentTime);\n\n        return super.addQueueMeasurement(eventName, correlationId, queueTime);\n    }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountInfo, AuthenticationResult, Constants, RequestThumbprint, AuthError, PerformanceEvents, ServerError, InteractionRequiredAuthError, InProgressPerformanceEvent } from \"@azure/msal-common\";\nimport { Configuration } from \"../config/Configuration\";\nimport { DEFAULT_REQUEST, InteractionType, ApiId, CacheLookupPolicy, BrowserConstants } 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 { NativeAuthError } from \"../error/NativeAuthError\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\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    private astsAsyncMeasurement?: InProgressPerformanceEvent = undefined;\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        // Register listener functions\n        this.trackPageVisibility = this.trackPageVisibility.bind(this);\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        const correlationId: string = this.getRequestCorrelationId(request);\n        this.logger.verbose(\"loginRedirect called\", correlationId);\n        return this.acquireTokenRedirect({\n            correlationId,\n            ...(request || DEFAULT_REQUEST)\n        });\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        const correlationId: string = this.getRequestCorrelationId(request);\n        this.logger.verbose(\"loginPopup called\", correlationId);\n        return this.acquireTokenPopup({\n            correlationId,\n            ...(request || DEFAULT_REQUEST)\n        });\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        const correlationId = this.getRequestCorrelationId(request);\n        const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\n        atsMeasurement.addStaticFields({\n            cacheLookupPolicy: request.cacheLookupPolicy\n        });\n\n        this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n        this.logger.verbose(\"acquireTokenSilent called\", correlationId);\n\n        const account = request.account || this.getActiveAccount();\n        if (!account) {\n            throw BrowserAuthError.createNoAccountError();\n        }\n\n        const thumbprint: RequestThumbprint = {\n            clientId: this.config.auth.clientId,\n            authority: request.authority || Constants.EMPTY_STRING,\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\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\", correlationId);\n\n            this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenSilentAsync, correlationId);\n            const response = this.acquireTokenSilentAsync({\n                ...request,\n                correlationId\n            }, account)\n                .then((result) => {\n                    this.activeSilentTokenRequests.delete(silentRequestKey);\n                    atsMeasurement.addStaticFields({\n                        accessTokenSize: result.accessToken.length,\n                        idTokenSize: result.idToken.length\n                    });\n                    atsMeasurement.endMeasurement({\n                        success: true,\n                        fromCache: result.fromCache,\n                        isNativeBroker: result.fromNativeBroker,\n                        cacheLookupPolicy: request.cacheLookupPolicy,\n                        requestId: result.requestId,\n                    });\n                    atsMeasurement.flushMeasurement();\n                    return result;\n                })\n                .catch((error: AuthError) => {\n                    this.activeSilentTokenRequests.delete(silentRequestKey);\n                    atsMeasurement.endMeasurement({\n                        errorCode: error.errorCode,\n                        subErrorCode: error.subError,\n                        success: false\n                    });\n                    atsMeasurement.flushMeasurement();\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\", correlationId);\n            atsMeasurement.endMeasurement({\n                success: true\n            });\n            // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\n            atsMeasurement.discardMeasurement();\n            return cachedResponse;\n        }\n    }\n\n    private trackPageVisibility():void {\n        if (!this.astsAsyncMeasurement) {\n            return;\n        }\n        this.logger.info(\"Perf: Visibility change detected\");\n        this.astsAsyncMeasurement.increment({\n            visibilityChangeCount: 1,\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        this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\n\n        this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\n        this.astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\n        this.astsAsyncMeasurement?.increment({\n            visibilityChangeCount: 0\n        });\n        document.addEventListener(\"visibilitychange\",this.trackPageVisibility);\n        let result: Promise<AuthenticationResult>;\n        if (NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId) {\n            this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\n            const silentRequest: SilentRequest = {\n                ...request,\n                account\n            };\n            result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e: AuthError) => {\n                // If native token acquisition fails for availability reasons fallback to web flow\n                if (e instanceof NativeAuthError && e.isFatal()) {\n                    this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\n                    this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt\n\n                    // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal\n                    const silentIframeClient = this.createSilentIframeClient(request.correlationId);\n                    return silentIframeClient.acquireToken(request);\n                }\n                throw e;\n            });\n        } else {\n            this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\n\n            const silentCacheClient = this.createSilentCacheClient(request.correlationId);\n\n            this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeSilentRequest, request.correlationId);\n            const silentRequest = await silentCacheClient.initializeSilentRequest(request, account);\n\n            const requestWithCLP = {\n                ...request,\n                // set the request's CacheLookupPolicy to Default if it was not optionally passed in\n                cacheLookupPolicy: request.cacheLookupPolicy || CacheLookupPolicy.Default\n            };\n\n            this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenFromCache, silentRequest.correlationId);\n            result = this.acquireTokenFromCache(silentCacheClient, silentRequest, requestWithCLP).catch((cacheError: AuthError) => {\n                if (requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.AccessToken) {\n                    throw cacheError;\n                }\n\n                // block the reload if it occurred inside a hidden iframe\n                BrowserUtils.blockReloadInHiddenIframes();\n                this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, silentRequest);\n\n                this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenByRefreshToken, silentRequest.correlationId);\n                return this.acquireTokenByRefreshToken(silentRequest, requestWithCLP).catch((refreshTokenError: AuthError) => {\n                    const isServerError = refreshTokenError instanceof ServerError;\n                    const isInteractionRequiredError = refreshTokenError instanceof InteractionRequiredAuthError;\n                    const isInvalidGrantError = (refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\n\n                    if ((!isServerError ||\n                            !isInvalidGrantError ||\n                            isInteractionRequiredError ||\n                            requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.AccessTokenAndRefreshToken ||\n                            requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.RefreshToken)\n                        && (requestWithCLP.cacheLookupPolicy !== CacheLookupPolicy.Skip)\n                    ) {\n                        throw refreshTokenError;\n                    }\n\n                    this.logger.verbose(\"Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.\", request.correlationId);\n                    this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenBySilentIframe, silentRequest.correlationId);\n                    return this.acquireTokenBySilentIframe(silentRequest);\n                });\n            });\n        }\n\n        return result.then((response) => {\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\n            this.astsAsyncMeasurement?.endMeasurement({\n                success: true,\n                fromCache: response.fromCache,\n                isNativeBroker: response.fromNativeBroker,\n                requestId: response.requestId\n            });\n            return response;\n        }).catch((tokenRenewalError: AuthError) => {\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\n            this.astsAsyncMeasurement?.endMeasurement({\n                errorCode: tokenRenewalError.errorCode,\n                subErrorCode: tokenRenewalError.subError,\n                success: false\n            });\n            throw tokenRenewalError;\n        }).finally(() => {\n            document.removeEventListener(\"visibilitychange\",this.trackPageVisibility);\n        });\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, InteractionRequiredAuthError, AccountInfo, Constants, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthError, PerformanceEvents, PerformanceCallbackFunction, StubPerformanceClient, IPerformanceClient, BaseAuthRequest, PromptValue, ClientAuthError, InProgressPerformanceEvent } from \"@azure/msal-common\";\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration, buildConfiguration, CacheOptions, Configuration } from \"../config/Configuration\";\nimport { InteractionType, ApiId, BrowserCacheLocation, WrapperSKU, TemporaryCacheKeys, CacheLookupPolicy } 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 { NativeInteractionClient } from \"../interaction_client/NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient\";\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { BrowserPerformanceClient } from \"../telemetry/BrowserPerformanceClient\";\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    // Native Cache in memory storage implementation\n    protected readonly nativeInternalStorage: 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    // Native Extension Provider\n    protected nativeExtensionProvider: NativeMessageHandler | undefined;\n\n    // Hybrid auth code responses\n    private hybridAuthCodeResponses: Map<string, Promise<AuthenticationResult>>;\n\n    // Performance telemetry client\n    protected performanceClient: IPerformanceClient;\n\n    // Flag representing whether or not the initialize API has been called and completed\n    protected initialized: boolean;\n\n    private ssoSilentMeasurement?: InProgressPerformanceEvent;\n    private acquireTokenByCodeAsyncMeasurement?: InProgressPerformanceEvent;\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        this.initialized = false;\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 performance client\n        this.performanceClient = this.isBrowserEnvironment ?\n            new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application, this.config.system.cryptoOptions) :\n            new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\n\n        // Initialize the crypto class.\n        this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient, this.config.system.cryptoOptions) : 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 in memory storage for native flows\n        const nativeCacheOptions: Required<CacheOptions> = {\n            cacheLocation: BrowserCacheLocation.MemoryStorage,\n            storeAuthStateInCookie: false,\n            secureCookies: false\n        };\n        this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\n\n        // Initialize the token cache\n        this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\n        // Register listener functions\n        this.trackPageVisibilityWithMeasurement = this.trackPageVisibilityWithMeasurement.bind(this);\n    }\n\n    /**\n     * Initializer function to perform async startup tasks such as connecting to WAM extension\n     */\n    async initialize(): Promise<void> {\n        this.logger.trace(\"initialize called\");\n        if (this.initialized) {\n            this.logger.info(\"initialize has already been called, exiting early.\");\n            return;\n        }\n        this.eventHandler.emitEvent(EventType.INITIALIZE_START);\n        if (this.config.system.allowNativeBroker) {\n            try {\n                this.nativeExtensionProvider = await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout);\n            } catch (e) {\n                this.logger.verbose(e);\n            }\n        }\n        this.initialized = true;\n        this.eventHandler.emitEvent(EventType.INITIALIZE_END);\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        // Block token acquisition before initialize has been called if native brokering is enabled\n        BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\n\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\n                const request: NativeTokenRequest | null = this.browserStorage.getCachedNativeRequest();\n                let redirectResponse: Promise<AuthenticationResult | null>;\n                if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\n                    this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\n                    const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId);\n                    redirectResponse = nativeClient.handleRedirectPromise();\n                } else {\n                    this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\n                    const correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\n                    const redirectClient = this.createRedirectClient(correlationId);\n                    redirectResponse = redirectClient.handleRedirectPromise(hash);\n                }\n\n                response = redirectResponse.then((result: AuthenticationResult | null) => {\n                    if (result) {\n                        // Emit login event if number of accounts change\n\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                }).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        const correlationId = this.getRequestCorrelationId(request);\n        this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\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        let result: Promise<void>;\n\n        if (this.nativeExtensionProvider && this.canUseNative(request)) {\n            const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\n            result = nativeClient.acquireTokenRedirect(request).catch((e: AuthError) => {\n                if (e instanceof NativeAuthError && e.isFatal()) {\n                    this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n                    const redirectClient = this.createRedirectClient(request.correlationId);\n                    return redirectClient.acquireToken(request);\n                } else if (e instanceof InteractionRequiredAuthError) {\n                    this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\n                    const redirectClient = this.createRedirectClient(request.correlationId);\n                    return redirectClient.acquireToken(request);\n                }\n                this.browserStorage.setInteractionInProgress(false);\n                throw e;\n            });\n        } else {\n            const redirectClient = this.createRedirectClient(request.correlationId);\n            result = redirectClient.acquireToken(request);\n        }\n\n        return result.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        const correlationId = this.getRequestCorrelationId(request);\n        const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\n\n        try {\n            this.logger.verbose(\"acquireTokenPopup called\", 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        let result: Promise<AuthenticationResult>;\n\n        if (this.canUseNative(request)) {\n            result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then((response) => {\n                this.browserStorage.setInteractionInProgress(false);\n                atPopupMeasurement.endMeasurement({\n                    success: true,\n                    isNativeBroker: true,\n                    requestId: response.requestId\n                });\n                atPopupMeasurement.flushMeasurement();\n                return response;\n            }).catch((e: AuthError) => {\n                if (e instanceof NativeAuthError && e.isFatal()) {\n                    this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n                    const popupClient = this.createPopupClient(request.correlationId);\n                    return popupClient.acquireToken(request);\n                } else if (e instanceof InteractionRequiredAuthError) {\n                    this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\n                    const popupClient = this.createPopupClient(request.correlationId);\n                    return popupClient.acquireToken(request);\n                }\n                this.browserStorage.setInteractionInProgress(false);\n                throw e;\n            });\n        } else {\n            const popupClient = this.createPopupClient(request.correlationId);\n            result = popupClient.acquireToken(request);\n        }\n\n        return result.then((result) => {\n\n            /*\n             *  If logged in, emit acquire token events\n             */\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            atPopupMeasurement.addStaticFields({\n                accessTokenSize: result.accessToken.length,\n                idTokenSize: result.idToken.length\n            });\n            atPopupMeasurement.endMeasurement({\n                success: true,\n                requestId: result.requestId\n            });\n\n            atPopupMeasurement.flushMeasurement();\n            return result;\n        }).catch((e: AuthError) => {\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\n            atPopupMeasurement.endMeasurement({\n                errorCode: e.errorCode,\n                subErrorCode: e.subError,\n                success: false\n            });\n            atPopupMeasurement.flushMeasurement();\n\n            // Since this function is syncronous we need to reject\n            return Promise.reject(e);\n        });\n    }\n\n    private trackPageVisibilityWithMeasurement():void {\n        const measurement = this.ssoSilentMeasurement || this.acquireTokenByCodeAsyncMeasurement;\n        if(!measurement) {\n            return;\n        }\n\n        this.logger.info(\"Perf: Visibility change detected in \", measurement.event.name);\n        measurement.increment({\n            visibilityChangeCount: 1,\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        const correlationId = this.getRequestCorrelationId(request);\n        const validRequest = {\n            ...request,\n            // will be PromptValue.NONE or PromptValue.NO_SESSION\n            prompt: request.prompt,\n            correlationId: correlationId\n        };\n        this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n        this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\n        this.ssoSilentMeasurement?.increment({\n            visibilityChangeCount: 0\n        });\n        document.addEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\n        this.logger.verbose(\"ssoSilent called\", correlationId);\n        this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\n\n        let result: Promise<AuthenticationResult>;\n\n        if (this.canUseNative(validRequest)) {\n            result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e: AuthError) => {\n                // If native token acquisition fails for availability reasons fallback to standard flow\n                if (e instanceof NativeAuthError && e.isFatal()) {\n                    this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n                    const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\n                    return silentIframeClient.acquireToken(validRequest);\n                }\n                throw e;\n            });\n        } else {\n            const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\n            result = silentIframeClient.acquireToken(validRequest);\n        }\n\n        return result.then((response) => {\n            this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\n            this.ssoSilentMeasurement?.addStaticFields({\n                accessTokenSize: response.accessToken.length,\n                idTokenSize: response.idToken.length\n            });\n            this.ssoSilentMeasurement?.endMeasurement({\n                success: true,\n                isNativeBroker: response.fromNativeBroker,\n                requestId: response.requestId\n            });\n            this.ssoSilentMeasurement?.flushMeasurement();\n            return response;\n        }).catch((e: AuthError) => {\n            this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\n            this.ssoSilentMeasurement?.endMeasurement({\n                errorCode: e.errorCode,\n                subErrorCode: e.subError,\n                success: false\n            });\n            this.ssoSilentMeasurement?.flushMeasurement();\n            throw e;\n        }).finally(() => {\n            document.removeEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\n        });\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        const correlationId = this.getRequestCorrelationId(request);\n        this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n        this.logger.trace(\"acquireTokenByCode called\", correlationId);\n        this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\n        const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\n\n        try {\n            if (request.code) {\n                const hybridAuthCode = request.code;\n                let response = this.hybridAuthCodeResponses.get(hybridAuthCode);\n                if (!response) {\n                    this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\n                    response = this.acquireTokenByCodeAsync({\n                        ...request,\n                        correlationId\n                    })\n                        .then((result: AuthenticationResult) => {\n                            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\n                            this.hybridAuthCodeResponses.delete(hybridAuthCode);\n                            atbcMeasurement.addStaticFields({\n                                accessTokenSize: result.accessToken.length,\n                                idTokenSize: result.idToken.length\n                            });\n                            atbcMeasurement.endMeasurement({\n                                success: true,\n                                isNativeBroker: result.fromNativeBroker,\n                                requestId: result.requestId\n                            });\n                            atbcMeasurement.flushMeasurement();\n                            return result;\n                        })\n                        .catch((error: AuthError) => {\n                            this.hybridAuthCodeResponses.delete(hybridAuthCode);\n                            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\n                            atbcMeasurement.endMeasurement({\n                                errorCode: error.errorCode,\n                                subErrorCode: error.subError,\n                                success: false\n                            });\n                            atbcMeasurement.flushMeasurement();\n                            throw error;\n                        });\n                    this.hybridAuthCodeResponses.set(hybridAuthCode, response);\n                } else {\n                    this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\n                    atbcMeasurement.endMeasurement({\n                        success: true\n                    });\n                    atbcMeasurement.discardMeasurement();\n                }\n                return response;\n            } else if (request.nativeAccountId) {\n                if (this.canUseNative(request, request.nativeAccountId)) {\n                    return this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e: AuthError) => {\n                        // If native token acquisition fails for availability reasons fallback to standard flow\n                        if (e instanceof NativeAuthError && e.isFatal()) {\n                            this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n                        }\n                        throw e;\n                    });\n                } else {\n                    throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\n                }\n            } else {\n                throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\n            }\n\n        } catch (e) {\n            this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\n            atbcMeasurement.endMeasurement({\n                errorCode: e instanceof AuthError && e.errorCode || undefined,\n                subErrorCode: e instanceof AuthError && e.subError || undefined,\n                success: false\n            });\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        this.acquireTokenByCodeAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId);\n        this.acquireTokenByCodeAsyncMeasurement?.increment({\n            visibilityChangeCount: 0\n        });\n        document.addEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\n        const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\n        const silentTokenResult = await silentAuthCodeClient.acquireToken(request).then((response) => {\n            this.acquireTokenByCodeAsyncMeasurement?.endMeasurement({\n                success: true,\n                fromCache: response.fromCache,\n                isNativeBroker: response.fromNativeBroker,\n                requestId: response.requestId\n            });\n            return response;\n        }).catch((tokenRenewalError: AuthError) => {\n            this.acquireTokenByCodeAsyncMeasurement?.endMeasurement({\n                errorCode: tokenRenewalError.errorCode,\n                subErrorCode: tokenRenewalError.subError,\n                success: false\n            });\n            throw tokenRenewalError;\n        }).finally(() => {\n            document.removeEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\n        });\n        return silentTokenResult;\n    }\n\n    /**\n     * Attempt to acquire an access token from the cache\n     * @param silentCacheClient SilentCacheClient\n     * @param commonRequest CommonSilentFlowRequest\n     * @param silentRequest SilentRequest\n     * @returns A promise that, when resolved, returns the access token\n     */\n    protected async acquireTokenFromCache(\n        silentCacheClient: SilentCacheClient,\n        commonRequest: CommonSilentFlowRequest,\n        silentRequest: SilentRequest\n    ): Promise<AuthenticationResult> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId);\n        switch(silentRequest.cacheLookupPolicy) {\n            case CacheLookupPolicy.Default:\n            case CacheLookupPolicy.AccessToken:\n            case CacheLookupPolicy.AccessTokenAndRefreshToken:\n                return silentCacheClient.acquireToken(commonRequest);\n            default:\n                throw ClientAuthError.createRefreshRequiredError();\n        }\n    }\n\n    /**\n     * Attempt to acquire an access token via a refresh token\n     * @param commonRequest CommonSilentFlowRequest\n     * @param silentRequest SilentRequest\n     * @returns A promise that, when resolved, returns the access token\n     */\n    protected async acquireTokenByRefreshToken(\n        commonRequest: CommonSilentFlowRequest,\n        silentRequest: SilentRequest\n    ): Promise<AuthenticationResult> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId);\n        switch(silentRequest.cacheLookupPolicy) {\n            case CacheLookupPolicy.Default:\n            case CacheLookupPolicy.AccessTokenAndRefreshToken:\n            case CacheLookupPolicy.RefreshToken:\n            case CacheLookupPolicy.RefreshTokenAndNetwork:\n                const silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId);\n\n                this.performanceClient.setPreQueueTime(PerformanceEvents.SilentRefreshClientAcquireToken, commonRequest.correlationId);\n                return silentRefreshClient.acquireToken(commonRequest);\n            default:\n                throw ClientAuthError.createRefreshRequiredError();\n        }\n    }\n\n    /**\n     * Attempt to acquire an access token via an iframe\n     * @param request CommonSilentFlowRequest\n     * @returns A promise that, when resolved, returns the access token\n     */\n    protected async acquireTokenBySilentIframe(\n        request: CommonSilentFlowRequest\n    ): Promise<AuthenticationResult> {\n        this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId);\n\n        const silentIframeClient = this.createSilentIframeClient(request.correlationId);\n\n        this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\n        return silentIframeClient.acquireToken(request);\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        const correlationId = this.getRequestCorrelationId(logoutRequest);\n        this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\n        return this.logoutRedirect({\n            correlationId,\n            ...logoutRequest\n        });\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        const correlationId = this.getRequestCorrelationId(logoutRequest);\n        this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n\n        const redirectClient = this.createRedirectClient(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            const correlationId = this.getRequestCorrelationId(logoutRequest);\n            this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n            const popupClient = this.createPopupClient(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     *\n     * @protected\n     * @param {InteractionType} interactionType What kind of interaction is being used\n     * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\n     */\n    protected preflightBrowserEnvironmentCheck(interactionType: InteractionType, setInteractionInProgress: boolean = true): 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 token acquisition before initialize has been called if native brokering is enabled\n        BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\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(setInteractionInProgress);\n        }\n    }\n\n    /**\n     * Preflight check for interactive requests\n     *\n     * @protected\n     * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\n     */\n    protected preflightInteractiveRequest(setInteractionInProgress: boolean): 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        if (setInteractionInProgress) {\n            this.browserStorage.setInteractionInProgress(true);\n        }\n    }\n\n    /**\n     * Acquire a token from native device (e.g. WAM)\n     * @param request\n     */\n    protected async acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise<AuthenticationResult> {\n        this.logger.trace(\"acquireTokenNative called\");\n        if (!this.nativeExtensionProvider) {\n            throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n        }\n\n        const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\n\n        return nativeClient.acquireToken(request);\n    }\n\n    /**\n     * Returns boolean indicating if this request can use the native broker\n     * @param request\n     */\n    protected canUseNative(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean {\n        this.logger.trace(\"canUseNative called\");\n        if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\n            this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\n            return false;\n        }\n\n        if (request.prompt) {\n            switch (request.prompt) {\n                case PromptValue.NONE:\n                case PromptValue.CONSENT:\n                case PromptValue.LOGIN:\n                    this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\n                    break;\n                default:\n                    this.logger.trace(`canUseNative: prompt = ${request.prompt} is not compatible with native flow, returning false`);\n                    return false;\n            }\n        }\n\n        if (!accountId && !this.getNativeAccountId(request)) {\n            this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the native accountId from the account\n     * @param request\n     * @returns\n     */\n    protected getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string {\n        const account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\n\n        return account && account.nativeAccountId || \"\";\n    }\n\n    /**\n     * Returns new instance of the Popup Interaction Client\n     * @param correlationId\n     */\n    protected createPopupClient(correlationId?: string): PopupClient {\n        return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n    }\n\n    /**\n     * Returns new instance of the Redirect Interaction Client\n     * @param correlationId\n     */\n    protected createRedirectClient(correlationId?: string): RedirectClient {\n        return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n    }\n\n    /**\n     * Returns new instance of the Silent Iframe Interaction Client\n     * @param correlationId\n     */\n    protected createSilentIframeClient(correlationId?: string): SilentIframeClient {\n        return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n    }\n\n    /**\n     * Returns new instance of the Silent Cache Interaction Client\n     */\n    protected createSilentCacheClient(correlationId?: string): SilentCacheClient {\n        return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\n    }\n\n    /**\n     * Returns new instance of the Silent Refresh Interaction Client\n     */\n    protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient {\n        return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\n    }\n\n    /**\n     * Returns new instance of the Silent AuthCode Interaction Client\n     */\n    protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient {\n        return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\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     * Registers a callback to receive performance events.\n     *\n     * @param {PerformanceCallbackFunction} callback\n     * @returns {string}\n     */\n    addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n        return this.performanceClient.addPerformanceCallback(callback);\n    }\n\n    /**\n     * Removes a callback registered with addPerformanceCallback.\n     *\n     * @param {string} callbackId\n     * @returns {boolean}\n     */\n    removePerformanceCallback(callbackId: string): boolean {\n        return this.performanceClient.removePerformanceCallback(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    /**\n     * Generates a correlation id for a request if none is provided.\n     *\n     * @protected\n     * @param {?Partial<BaseAuthRequest>} [request]\n     * @returns {string}\n     */\n    protected getRequestCorrelationId(request?: Partial<BaseAuthRequest>): string {\n        if (request?.correlationId) {\n            return request.correlationId;\n        }\n\n        if (this.isBrowserEnvironment) {\n            return this.browserCrypto.createNewGuid();\n        }\n\n        /*\n         * Included for fallback for non-browser environments,\n         * and to ensure this method always returns a string.\n         */\n        return Constants.EMPTY_STRING;\n    }\n\n    // #endregion\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { objForEachKey, deepFreeze } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n    var enumClass = {};\r\n    objForEachKey(values, function (field, value) {\r\n        enumClass[field] = value;\r\n        enumClass[value] = field;\r\n    });\r\n    return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n    var mapClass = {};\r\n    objForEachKey(values, function (field, value) {\r\n        mapClass[field] = field;\r\n        mapClass[value] = field;\r\n    });\r\n    return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n    var mapClass = {};\r\n    objForEachKey(values, function (field, value) {\r\n        mapClass[field] = value[1];\r\n        mapClass[value[0]] = value[1];\r\n    });\r\n    return deepFreeze(mapClass);\r\n}\r\n//# sourceMappingURL=EnumHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n    LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n    SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n    AI: 0 /* eDistributedTracingModes.AI */,\r\n    AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n    W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n//# sourceMappingURL=Enums.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n    if (utlCanUseLocalStorage()) {\r\n        return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n    try {\r\n        if (isNullOrUndefined(getGlobal())) {\r\n            return null;\r\n        }\r\n        var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n        var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n        storage.setItem(uid, uid);\r\n        var fail = storage.getItem(uid) !== uid;\r\n        storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](uid);\r\n        if (!fail) {\r\n            return storage;\r\n        }\r\n    }\r\n    catch (exception) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n    if (utlCanUseSessionStorage()) {\r\n        return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n    _canUseLocalStorage = false;\r\n    _canUseSessionStorage = false;\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n    _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n    _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n    if (reset || _canUseLocalStorage === undefined) {\r\n        _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n    }\r\n    return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n    var storage = _getLocalStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            return storage.getItem(name);\r\n        }\r\n        catch (e) {\r\n            _canUseLocalStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n    var storage = _getLocalStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage.setItem(name, data);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseLocalStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n    var storage = _getLocalStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseLocalStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n    if (reset || _canUseSessionStorage === undefined) {\r\n        _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n    }\r\n    return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n    var keys = [];\r\n    if (utlCanUseSessionStorage()) {\r\n        objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n            keys.push(key);\r\n        });\r\n    }\r\n    return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n    var storage = _getSessionStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            return storage.getItem(name);\r\n        }\r\n        catch (e) {\r\n            _canUseSessionStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n    var storage = _getSessionStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage.setItem(name, data);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseSessionStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n    var storage = _getSessionStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseSessionStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_SANITIZE_EXCEPTION, _DYN_SANITIZE_KEY_AND_ADD2, _DYN_SANITIZE_MEASUREMENT3, _DYN_SANITIZE_PROPERTIES, _DYN_STRINGIFY, _DYN_SUBSTRING, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n    var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n    var field = dataSanitizeKey(logger, key);\r\n    // validation truncated the length.  We need to add uniqueness\r\n    if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n        var i = 0;\r\n        var uniqueField = field;\r\n        while (map[uniqueField] !== undefined) {\r\n            i++;\r\n            uniqueField = field[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n        }\r\n        field = uniqueField;\r\n    }\r\n    return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n    var nameTrunc;\r\n    if (name) {\r\n        // Remove any leading or trailing whitespace\r\n        name = strTrim(name[_DYN_TO_STRING /* @min:%2etoString */]());\r\n        // truncate the string to 150 chars\r\n        if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n            nameTrunc = name[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long.  It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n        }\r\n    }\r\n    return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n    if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n    var valueTrunc;\r\n    if (value) {\r\n        maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n        value = strTrim(value);\r\n        if (value.toString()[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n            valueTrunc = value[_DYN_TO_STRING /* @min:%2etoString */]()[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n        }\r\n    }\r\n    return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n    return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n    var messageTrunc;\r\n    if (message) {\r\n        if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n            messageTrunc = message[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n        }\r\n    }\r\n    return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n    var exceptionTrunc;\r\n    if (exception) {\r\n        // Make surte its a string\r\n        var value = \"\" + exception;\r\n        if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n            exceptionTrunc = value[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n        }\r\n    }\r\n    return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n    if (properties) {\r\n        var tempProps_1 = {};\r\n        objForEachKey(properties, function (prop, value) {\r\n            if (isObject(value) && hasJSON()) {\r\n                // Stringify any part C properties\r\n                try {\r\n                    value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n                }\r\n            }\r\n            value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n            prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n            tempProps_1[prop] = value;\r\n        });\r\n        properties = tempProps_1;\r\n    }\r\n    return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n    if (measurements) {\r\n        var tempMeasurements_1 = {};\r\n        objForEachKey(measurements, function (measure, value) {\r\n            measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n            tempMeasurements_1[measure] = value;\r\n        });\r\n        measurements = tempMeasurements_1;\r\n    }\r\n    return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n    return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n    var inputTrunc;\r\n    if (input) {\r\n        input = strTrim(input);\r\n        if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n            inputTrunc = input[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n        }\r\n    }\r\n    return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n    var s = \"00\" + num;\r\n    return s.substr(s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = (_a = {\r\n        MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n        MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n        MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n        MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n        MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n        MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n        MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */\r\n    },\r\n    _a[_DYN_SANITIZE_KEY_AND_ADD2 /* @min:sanitizeKeyAndAddUniqueness */] = dataSanitizeKeyAndAddUniqueness,\r\n    _a.sanitizeKey = dataSanitizeKey,\r\n    _a.sanitizeString = dataSanitizeString,\r\n    _a.sanitizeUrl = dataSanitizeUrl,\r\n    _a.sanitizeMessage = dataSanitizeMessage,\r\n    _a[_DYN_SANITIZE_EXCEPTION /* @min:sanitizeException */] = dataSanitizeException,\r\n    _a[_DYN_SANITIZE_PROPERTIES /* @min:sanitizeProperties */] = dataSanitizeProperties,\r\n    _a[_DYN_SANITIZE_MEASUREMENT3 /* @min:sanitizeMeasurements */] = dataSanitizeMeasurements,\r\n    _a.sanitizeId = dataSanitizeId,\r\n    _a.sanitizeInput = dataSanitizeInput,\r\n    _a.padNumber = dsPadNumber,\r\n    _a.trim = strTrim,\r\n    _a);\r\n//# sourceMappingURL=DataSanitizer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n    var _a;\r\n    envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n    if (isNullOrUndefined(item) ||\r\n        isNullOrUndefined(baseType) ||\r\n        isNullOrUndefined(envelopeName)) {\r\n        throwError(\"Input doesn't contain all required fields\");\r\n    }\r\n    var iKey = \"\";\r\n    if (item[strIkey]) {\r\n        iKey = item[strIkey];\r\n        delete item[strIkey];\r\n    }\r\n    var telemetryItem = (_a = {},\r\n        _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n        _a.time = toISOString(new Date()),\r\n        _a.iKey = iKey,\r\n        _a.ext = systemProperties ? systemProperties : {},\r\n        _a.tags = [],\r\n        _a.data = {},\r\n        _a.baseType = baseType,\r\n        _a.baseData = item // Part B\r\n    ,\r\n        _a);\r\n    // Part C\r\n    if (!isNullOrUndefined(customProperties)) {\r\n        objForEachKey(customProperties, function (prop, value) {\r\n            telemetryItem.data[prop] = value;\r\n        });\r\n    }\r\n    return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n    function TelemetryItemCreator() {\r\n    }\r\n    /**\r\n     * Create a telemetry item that the 1DS channel understands\r\n     * @param item domain specific properties; part B\r\n     * @param baseType telemetry item type. ie PageViewData\r\n     * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n     * @param customProperties user defined custom properties; part C\r\n     * @param systemProperties system properties that are added to the context; part A\r\n     * @returns ITelemetryItem that is sent to channel\r\n     */\r\n    TelemetryItemCreator.create = createTelemetryItem;\r\n    return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the EventTelemetry object\r\n     */\r\n    function Event(logger, name, properties, measurements) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 1 /* FieldType.Required */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n    Event.dataType = \"EventData\";\r\n    return Event;\r\n}());\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the TraceTelemetry object\r\n     */\r\n    function Trace(logger, message, severityLevel, properties, measurements) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            message: 1 /* FieldType.Required */,\r\n            severityLevel: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        message = message || strNotSpecified;\r\n        _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n        if (severityLevel) {\r\n            _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n        }\r\n    }\r\n    Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n    Trace.dataType = \"MessageData\";\r\n    return Trace;\r\n}());\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar DataPoint = /** @class */ (function () {\r\n    function DataPoint() {\r\n        /**\r\n         * The data contract for serializing this object.\r\n         */\r\n        this.aiDataContract = {\r\n            name: 1 /* FieldType.Required */,\r\n            kind: 0 /* FieldType.Default */,\r\n            value: 1 /* FieldType.Required */,\r\n            count: 0 /* FieldType.Default */,\r\n            min: 0 /* FieldType.Default */,\r\n            max: 0 /* FieldType.Default */,\r\n            stdDev: 0 /* FieldType.Default */\r\n        };\r\n        /**\r\n         * Metric type. Single measurement or the aggregated value.\r\n         */\r\n        this.kind = 0 /* DataPointType.Measurement */;\r\n    }\r\n    return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the MetricTelemetry object\r\n     */\r\n    function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            metrics: 1 /* FieldType.Required */,\r\n            properties: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        var dataPoint = new DataPoint();\r\n        dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n        dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n        dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n        dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        dataPoint.value = value;\r\n        dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n        _self.metrics = [dataPoint];\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n    Metric.dataType = \"MetricData\";\r\n    return Metric;\r\n}());\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the PageEventTelemetry object\r\n     */\r\n    function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 0 /* FieldType.Default */,\r\n            url: 0 /* FieldType.Default */,\r\n            duration: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */,\r\n            id: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self.id = dataSanitizeId(logger, id);\r\n        _self.url = dataSanitizeUrl(logger, url);\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        if (!isNaN(durationMs)) {\r\n            _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n        }\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n    PageView.dataType = \"PageviewData\";\r\n    return PageView;\r\n}());\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the PageEventTelemetry object\r\n     */\r\n    function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 0 /* FieldType.Default */,\r\n            url: 0 /* FieldType.Default */,\r\n            duration: 0 /* FieldType.Default */,\r\n            perfTotal: 0 /* FieldType.Default */,\r\n            networkConnect: 0 /* FieldType.Default */,\r\n            sentRequest: 0 /* FieldType.Default */,\r\n            receivedResponse: 0 /* FieldType.Default */,\r\n            domProcessing: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self.url = dataSanitizeUrl(logger, url);\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n        if (cs4BaseData) {\r\n            _self.domProcessing = cs4BaseData.domProcessing;\r\n            _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n            _self.networkConnect = cs4BaseData.networkConnect;\r\n            _self.perfTotal = cs4BaseData.perfTotal;\r\n            _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n            _self.sentRequest = cs4BaseData.sentRequest;\r\n        }\r\n    }\r\n    PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n    PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n    return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __assign } from \"tslib\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_INDEX_OF, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"<no_method>\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n    var result = value;\r\n    if (result && !isString(result)) {\r\n        if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n            result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n            if (convertToString && (!result || result === \"{}\")) {\r\n                if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n                    result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                }\r\n                else {\r\n                    result = \"\" + value;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n        }\r\n    }\r\n    return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n    var evtMessage = theEvent;\r\n    if (theEvent) {\r\n        if (evtMessage && !isString(evtMessage)) {\r\n            evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n        }\r\n        // Make sure the message is a string\r\n        if (evtMessage && !isString(evtMessage)) {\r\n            // tslint:disable-next-line: prefer-conditional-expression\r\n            evtMessage = _stringify(evtMessage, true);\r\n        }\r\n        if (theEvent[\"filename\"]) {\r\n            // Looks like an event object with filename\r\n            evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n        }\r\n    }\r\n    // Automatically add the error type to the message if it does already appear to be present\r\n    if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\")[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) === -1) {\r\n        evtMessage = errorType + \": \" + evtMessage;\r\n    }\r\n    return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n    try {\r\n        if (isObject(value)) {\r\n            return \"hasFullStack\" in value && \"typeName\" in value;\r\n        }\r\n    }\r\n    catch (e) {\r\n        // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n    }\r\n    return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n    try {\r\n        if (isObject(value)) {\r\n            return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n        }\r\n    }\r\n    catch (e) {\r\n        // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n    }\r\n    return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n    return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n    var src = errorStack || \"\";\r\n    if (!isString(src)) {\r\n        if (isString(src[strStack])) {\r\n            src = src[strStack];\r\n        }\r\n        else {\r\n            src = \"\" + src;\r\n        }\r\n    }\r\n    var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n    return {\r\n        src: src,\r\n        obj: items\r\n    };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n    var stack = [];\r\n    var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n    for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n        var entry = lines[lp];\r\n        if (lines[lp + 1]) {\r\n            entry += \"@\" + lines[lp + 1];\r\n            lp++;\r\n        }\r\n        stack.push(entry);\r\n    }\r\n    return {\r\n        src: errorMessage,\r\n        obj: stack\r\n    };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n    var details = null;\r\n    if (errorObj) {\r\n        try {\r\n            /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n            notation for undefined objects and we don't want to loose the error from being reported */\r\n            if (errorObj[strStack]) {\r\n                // Chrome/Firefox\r\n                details = _convertStackObj(errorObj[strStack]);\r\n            }\r\n            else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n                // Edge error event provides the stack and error object\r\n                details = _convertStackObj(errorObj[strError][strStack]);\r\n            }\r\n            else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n                details = _convertStackObj(errorObj.exception[strStack]);\r\n            }\r\n            else if (_isStackDetails(errorObj)) {\r\n                details = errorObj;\r\n            }\r\n            else if (_isStackDetails(errorObj[strStackDetails])) {\r\n                details = errorObj[strStackDetails];\r\n            }\r\n            else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n                // Opera\r\n                details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n            }\r\n            else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n                // UnhandledPromiseRejection\r\n                details = _convertStackObj(errorObj.reason[strStack]);\r\n            }\r\n            else if (isString(errorObj)) {\r\n                details = _convertStackObj(errorObj);\r\n            }\r\n            else {\r\n                var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n                if (isString(errorObj[strErrorSrc])) {\r\n                    if (evtMessage) {\r\n                        evtMessage += \"\\n\";\r\n                    }\r\n                    evtMessage += \" from \" + errorObj[strErrorSrc];\r\n                }\r\n                if (evtMessage) {\r\n                    details = _convertStackObj(evtMessage);\r\n                }\r\n            }\r\n        }\r\n        catch (e) {\r\n            // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n            // and fallback to the callee/caller method\r\n            details = _convertStackObj(e);\r\n        }\r\n    }\r\n    return details || {\r\n        src: \"\",\r\n        obj: null\r\n    };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n    var stack = \"\";\r\n    if (stackDetails) {\r\n        if (stackDetails.obj) {\r\n            arrForEach(stackDetails.obj, function (entry) {\r\n                stack += entry + \"\\n\";\r\n            });\r\n        }\r\n        else {\r\n            stack = stackDetails.src || \"\";\r\n        }\r\n    }\r\n    return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n    var parsedStack;\r\n    var frames = stack.obj;\r\n    if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        parsedStack = [];\r\n        var level_1 = 0;\r\n        var totalSizeInBytes_1 = 0;\r\n        arrForEach(frames, function (frame) {\r\n            var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n            if (_StackFrame.regex.test(theFrame)) {\r\n                var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n                totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n                parsedStack.push(parsedFrame);\r\n            }\r\n        });\r\n        // DP Constraint - exception parsed stack must be < 32KB\r\n        // remove frames from the middle to meet the threshold\r\n        var exceptionParsedStackThreshold = 32 * 1024;\r\n        if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n            var left = 0;\r\n            var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n            var size = 0;\r\n            var acceptedLeft = left;\r\n            var acceptedRight = right;\r\n            while (left < right) {\r\n                // check size\r\n                var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n                var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n                size += lSize + rSize;\r\n                if (size > exceptionParsedStackThreshold) {\r\n                    // remove extra frames from the middle\r\n                    var howMany = acceptedRight - acceptedLeft + 1;\r\n                    parsedStack.splice(acceptedLeft, howMany);\r\n                    break;\r\n                }\r\n                // update pointers\r\n                acceptedLeft = left;\r\n                acceptedRight = right;\r\n                left++;\r\n                right--;\r\n            }\r\n        }\r\n    }\r\n    return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n    // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n    var typeName = \"\";\r\n    if (errorType) {\r\n        typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n        if (!typeName) {\r\n            try {\r\n                var funcNameRegex = /function (.{1,200})\\(/;\r\n                var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n                typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n            }\r\n        }\r\n    }\r\n    return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n    if (errorObj) {\r\n        try {\r\n            if (!isString(errorObj)) {\r\n                var errorType = _getErrorType(errorObj);\r\n                var result = _stringify(errorObj, false);\r\n                if (!result || result === \"{}\") {\r\n                    if (errorObj[strError]) {\r\n                        // Looks like an MS Error Event\r\n                        errorObj = errorObj[strError];\r\n                        errorType = _getErrorType(errorObj);\r\n                    }\r\n                    result = _stringify(errorObj, true);\r\n                }\r\n                if (result[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) !== 0 && errorType !== \"String\") {\r\n                    return errorType + \":\" + result;\r\n                }\r\n                return result;\r\n            }\r\n        }\r\n        catch (e) {\r\n            // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n        }\r\n    }\r\n    // Fallback to just letting the object format itself into a string\r\n    return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the ExceptionTelemetry object\r\n     */\r\n    function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            exceptions: 1 /* FieldType.Required */,\r\n            severityLevel: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n        if (!_isExceptionInternal(exception)) {\r\n            if (!properties) {\r\n                properties = {};\r\n            }\r\n            _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n            _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n            _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n            if (severityLevel) {\r\n                _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n            }\r\n            if (id) {\r\n                _self.id = id;\r\n            }\r\n        }\r\n        else {\r\n            _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n            _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n            _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n            if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n                _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n            }\r\n            if (exception.id) {\r\n                _self.id = exception.id;\r\n            }\r\n            if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n                _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n            }\r\n            // bool/int types, use isNullOrUndefined\r\n            if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n                _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n            }\r\n        }\r\n    }\r\n    Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n        var _a;\r\n        var errorType = _getErrorType(error || evt || message);\r\n        return _a = {},\r\n            _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n            _a.url = url,\r\n            _a.lineNumber = lineNumber,\r\n            _a.columnNumber = columnNumber,\r\n            _a.error = _formatErrorCode(error || evt || message),\r\n            _a.evt = _formatErrorCode(evt || message),\r\n            _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n            _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n            _a.errorSrc = errorSrc,\r\n            _a;\r\n    };\r\n    Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n        var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n            && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n        var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n        return exceptionData;\r\n    };\r\n    Exception.prototype.toInterface = function () {\r\n        var _a;\r\n        var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n        var exceptionDetailsInterface = exceptions instanceof Array\r\n            && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n            || undefined;\r\n        return _a = {\r\n                ver: \"4.0\"\r\n            },\r\n            _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n            _a.severityLevel = severityLevel,\r\n            _a.properties = properties,\r\n            _a.measurements = measurements,\r\n            _a.problemGroup = problemGroup,\r\n            _a.id = id,\r\n            _a.isManual = isManual,\r\n            _a;\r\n    };\r\n    /**\r\n     * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n     */\r\n    Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n        var _a;\r\n        return {\r\n            exceptions: [\r\n                (_a = {},\r\n                    _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n                    _a.message = message,\r\n                    _a.stack = details,\r\n                    _a.typeName = typeName,\r\n                    _a)\r\n            ]\r\n        };\r\n    };\r\n    Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n    Exception.dataType = \"ExceptionData\";\r\n    Exception.formatError = _formatErrorCode;\r\n    return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n    function _ExceptionDetails(logger, exception, properties) {\r\n        this.aiDataContract = {\r\n            id: 0 /* FieldType.Default */,\r\n            outerId: 0 /* FieldType.Default */,\r\n            typeName: 1 /* FieldType.Required */,\r\n            message: 1 /* FieldType.Required */,\r\n            hasFullStack: 0 /* FieldType.Default */,\r\n            stack: 0 /* FieldType.Default */,\r\n            parsedStack: 2 /* FieldType.Array */\r\n        };\r\n        var _self = this;\r\n        if (!_isExceptionDetailsInternal(exception)) {\r\n            var error = exception;\r\n            var evt = error && error.evt;\r\n            if (!isError(error)) {\r\n                error = error[strError] || evt || error;\r\n            }\r\n            _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n            _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n            var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n            _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n            _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n            _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n            if (properties) {\r\n                properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n            }\r\n        }\r\n        else {\r\n            _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n            _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n            _self[strStack] = exception[strStack];\r\n            _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n            _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n        }\r\n    }\r\n    _ExceptionDetails.prototype.toInterface = function () {\r\n        var _a;\r\n        var _self = this;\r\n        var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n            && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n        var exceptionDetailsInterface = (_a = {\r\n                id: _self.id,\r\n                outerId: _self.outerId,\r\n                typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n                message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n                hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n                stack: _self[strStack]\r\n            },\r\n            _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n            _a);\r\n        return exceptionDetailsInterface;\r\n    };\r\n    _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n        var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n            && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n            || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n        var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n        return exceptionDetails;\r\n    };\r\n    return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n    function _StackFrame(sourceFrame, level) {\r\n        this.aiDataContract = {\r\n            level: 1 /* FieldType.Required */,\r\n            method: 1 /* FieldType.Required */,\r\n            assembly: 0 /* FieldType.Default */,\r\n            fileName: 0 /* FieldType.Default */,\r\n            line: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n        // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n        // types for the 2 different code paths\r\n        if (typeof sourceFrame === \"string\") {\r\n            var frame = sourceFrame;\r\n            _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n            _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n            _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n            _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n            _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n            var matches = frame.match(_StackFrame.regex);\r\n            if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n                _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n                _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n                _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n            }\r\n        }\r\n        else {\r\n            _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n            _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n            _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n            _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n            _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n            _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n        }\r\n        _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n        _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n        _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n        // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n        _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n        _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n        _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n    }\r\n    _StackFrame.CreateFromInterface = function (frame) {\r\n        return new _StackFrame(frame, null /* level is available in frame interface */);\r\n    };\r\n    _StackFrame.prototype.toInterface = function () {\r\n        var _self = this;\r\n        return {\r\n            level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n            method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n            assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n            fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n            line: _self[_DYN_LINE /* @min:%2eline */]\r\n        };\r\n    };\r\n    // regex to match stack frames from ie/chrome/ff\r\n    // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n    _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n    _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n    return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isFunction, getDocument } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n    var event = null;\r\n    if (isFunction(Event)) { // Use Event constructor when available\r\n        event = new Event(eventName);\r\n    }\r\n    else { // Event has no constructor in IE\r\n        var doc = getDocument();\r\n        if (doc && doc.createEvent) {\r\n            event = doc.createEvent(\"Event\");\r\n            event.initEvent(eventName, true, true);\r\n        }\r\n    }\r\n    return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n    requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n    requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n    requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n    requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n    traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n    traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n    sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n    sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n    requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n    var anchorIdx = _htmlAnchorIdx;\r\n    var anchorCache = _htmlAnchorElement;\r\n    var tempAnchor = anchorCache[anchorIdx];\r\n    if (!_document.createElement) {\r\n        // Always create the temp instance if createElement is not available\r\n        tempAnchor = { host: urlParseHost(url, true) };\r\n    }\r\n    else if (!anchorCache[anchorIdx]) {\r\n        // Create and cache the unattached anchor instance\r\n        tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n    }\r\n    tempAnchor.href = url;\r\n    // Move the cache index forward\r\n    anchorIdx++;\r\n    if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n        anchorIdx = 0;\r\n    }\r\n    _htmlAnchorIdx = anchorIdx;\r\n    return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n    var result;\r\n    var a = urlParseUrl(url);\r\n    if (a) {\r\n        result = a.href;\r\n    }\r\n    return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n    var result;\r\n    var a = urlParseUrl(url);\r\n    if (a) {\r\n        result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n    }\r\n    return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n    if (method) {\r\n        return method.toUpperCase() + \" \" + absoluteUrl;\r\n    }\r\n    return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n    var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n    if (fullHost) {\r\n        var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n        if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            return match[2] + (match[3] || \"\");\r\n        }\r\n    }\r\n    return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n    var result = null;\r\n    if (url) {\r\n        var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n        if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            result = match[2] || \"\";\r\n            if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n                var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                var port = match[3] || \"\";\r\n                // IE includes the standard port so pass it off if it's the same as the protocol\r\n                if (protocol === \"http\" && port === \":80\") {\r\n                    port = \"\";\r\n                }\r\n                else if (protocol === \"https\" && port === \":443\") {\r\n                    port = \"\";\r\n                }\r\n                result += port;\r\n            }\r\n        }\r\n    }\r\n    return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, attachEvent, canUseCookies as coreCanUseCookies, dateNow, deleteCookie as coreDeleteCookie, disableCookies as coreDisableCookies, dumpObj, generateW3CId, getCookie as coreGetCookie, getExceptionName as coreGetExceptionName, getIEVersion, getPerformance, isArray, isBeaconsSupported, isDate, isError, isNullOrUndefined, isValidSpanId, isValidTraceId, newId, random32, setCookie as coreSetCookie, strTrim, toISOString, uaDisallowsSameSiteNone } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { getExtensionByName, isCrossOriginError, msToTimeSpan, stringToBoolOrDefault } from \"./HelperFuncs\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetLocalStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlRemoveSessionStorage, utlRemoveStorage, utlSetLocalStorage, utlSetSessionStorage } from \"./StorageHelperFuncs\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n    DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n    \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n    \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n    return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport var Util = {\r\n    NotSpecified: strNotSpecified,\r\n    createDomEvent: createDomEvent,\r\n    disableStorage: utlDisableStorage,\r\n    isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n    canUseLocalStorage: utlCanUseLocalStorage,\r\n    getStorage: utlGetLocalStorage,\r\n    setStorage: utlSetLocalStorage,\r\n    removeStorage: utlRemoveStorage,\r\n    canUseSessionStorage: utlCanUseSessionStorage,\r\n    getSessionStorageKeys: utlGetSessionStorageKeys,\r\n    getSessionStorage: utlGetSessionStorage,\r\n    setSessionStorage: utlSetSessionStorage,\r\n    removeSessionStorage: utlRemoveSessionStorage,\r\n    disableCookies: coreDisableCookies,\r\n    canUseCookies: coreCanUseCookies,\r\n    disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n    setCookie: coreSetCookie,\r\n    stringToBoolOrDefault: stringToBoolOrDefault,\r\n    getCookie: coreGetCookie,\r\n    deleteCookie: coreDeleteCookie,\r\n    trim: strTrim,\r\n    newId: newId,\r\n    random32: function () {\r\n        return random32(true);\r\n    },\r\n    generateW3CId: generateW3CId,\r\n    isArray: isArray,\r\n    isError: isError,\r\n    isDate: isDate,\r\n    toISOStringForIE8: toISOString,\r\n    getIEVersion: getIEVersion,\r\n    msToTimeSpan: msToTimeSpan,\r\n    isCrossOriginError: isCrossOriginError,\r\n    dump: dumpObj,\r\n    getExceptionName: coreGetExceptionName,\r\n    addEventHandler: attachEvent,\r\n    IsBeaconApiSupported: isBeaconsSupported,\r\n    getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n    parseUrl: urlParseUrl,\r\n    getAbsoluteUrl: urlGetAbsoluteUrl,\r\n    getPathName: urlGetPathName,\r\n    getCompleteUrl: urlGetCompleteUrl,\r\n    parseHost: urlParseHost,\r\n    parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n    correlationIdPrefix: \"cid-v1:\",\r\n    /**\r\n     * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n     * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n     * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n     * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n     * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n     */\r\n    canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n        if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n            return false;\r\n        }\r\n        if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n            for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n                if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n        if (requestHost && (requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":443\") !== -1 || requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":80\") !== -1)) {\r\n            // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n            // try and parse it to remove if it matches the default protocol port\r\n            requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n        }\r\n        if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n            return false;\r\n        }\r\n        var includedDomains = config && config.correlationHeaderDomains;\r\n        if (includedDomains) {\r\n            var matchExists_1;\r\n            arrForEach(includedDomains, function (domain) {\r\n                var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n                matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n            });\r\n            if (!matchExists_1) {\r\n                return false;\r\n            }\r\n        }\r\n        var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n        if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n            if (regex.test(requestHost)) {\r\n                return false;\r\n            }\r\n        }\r\n        // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n        // Previously we always returned false for a falsy requestHost\r\n        return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n    },\r\n    /**\r\n     * Combines target appId and target role name from response header.\r\n     */\r\n    getCorrelationContext: function (responseHeader) {\r\n        if (responseHeader) {\r\n            var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n            if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n                return correlationId;\r\n            }\r\n        }\r\n    },\r\n    /**\r\n     * Gets key from correlation response header\r\n     */\r\n    getCorrelationContextValue: function (responseHeader, key) {\r\n        if (responseHeader) {\r\n            var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n            for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n                var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n                if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n                    return keyValue[1];\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n    var target, name = commandName, data = commandName;\r\n    if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        var parsedUrl = urlParseUrl(absoluteUrl);\r\n        target = parsedUrl.host;\r\n        if (!name) {\r\n            if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n                var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n                if (pathName.charAt(0) !== \"/\") {\r\n                    pathName = \"/\" + pathName;\r\n                }\r\n                data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n                name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n            }\r\n            else {\r\n                name = dataSanitizeString(logger, absoluteUrl);\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        target = commandName;\r\n        name = commandName;\r\n    }\r\n    return {\r\n        target: target,\r\n        name: name,\r\n        data: data\r\n    };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n    // returns the window or webworker performance object\r\n    var perf = getPerformance();\r\n    if (perf && perf.now && perf.timing) {\r\n        var now = perf.now() + perf.timing.navigationStart;\r\n        // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n        if (now > 0) {\r\n            return now;\r\n        }\r\n    }\r\n    return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n    var result = null;\r\n    if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n        result = end - start;\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n    Now: dateTimeUtilsNow,\r\n    GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n    var trace = telemetryTrace || {};\r\n    return {\r\n        getName: function () {\r\n            return trace[_DYN_NAME /* @min:%2ename */];\r\n        },\r\n        setName: function (newValue) {\r\n            parentCtx && parentCtx.setName(newValue);\r\n            trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n        },\r\n        getTraceId: function () {\r\n            return trace.traceID;\r\n        },\r\n        setTraceId: function (newValue) {\r\n            parentCtx && parentCtx.setTraceId(newValue);\r\n            if (isValidTraceId(newValue)) {\r\n                trace.traceID = newValue;\r\n            }\r\n        },\r\n        getSpanId: function () {\r\n            return trace.parentID;\r\n        },\r\n        setSpanId: function (newValue) {\r\n            parentCtx && parentCtx.setSpanId(newValue);\r\n            if (isValidSpanId(newValue)) {\r\n                trace.parentID = newValue;\r\n            }\r\n        },\r\n        getTraceFlags: function () {\r\n            return trace.traceFlags;\r\n        },\r\n        setTraceFlags: function (newTraceFlags) {\r\n            parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n            trace.traceFlags = newTraceFlags;\r\n        }\r\n    };\r\n}\r\n//# sourceMappingURL=Util.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the RemoteDependencyData object\r\n     */\r\n    function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n        if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n        this.aiDataContract = {\r\n            id: 1 /* FieldType.Required */,\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 0 /* FieldType.Default */,\r\n            resultCode: 0 /* FieldType.Default */,\r\n            duration: 0 /* FieldType.Default */,\r\n            success: 0 /* FieldType.Default */,\r\n            data: 0 /* FieldType.Default */,\r\n            target: 0 /* FieldType.Default */,\r\n            type: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */,\r\n            kind: 0 /* FieldType.Default */,\r\n            value: 0 /* FieldType.Default */,\r\n            count: 0 /* FieldType.Default */,\r\n            min: 0 /* FieldType.Default */,\r\n            max: 0 /* FieldType.Default */,\r\n            stdDev: 0 /* FieldType.Default */,\r\n            dependencyKind: 0 /* FieldType.Default */,\r\n            dependencySource: 0 /* FieldType.Default */,\r\n            commandName: 0 /* FieldType.Default */,\r\n            dependencyTypeName: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self.id = id;\r\n        _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n        _self.success = success;\r\n        _self.resultCode = resultCode + \"\";\r\n        _self.type = dataSanitizeString(logger, requestAPI);\r\n        var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n        _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n        _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n        if (correlationContext) {\r\n            _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n        }\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n    RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n    return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nimport { _getObjProto, hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n    \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n    if (arr) {\r\n        for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n            if (fn(arr[lp], lp)) {\r\n                break;\r\n            }\r\n        }\r\n    }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n    if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n        _arrLoop(hooks, function (hook, idx) {\r\n            var cbks = hook.cbks;\r\n            var cb = cbks[cbNames[type]];\r\n            if (cb) {\r\n                // Set the specific hook context implementation using a lazy creation pattern\r\n                callDetails.ctx = function () {\r\n                    var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n                    return ctx;\r\n                };\r\n                try {\r\n                    cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n                }\r\n                catch (err) {\r\n                    var orgEx = callDetails.err;\r\n                    try {\r\n                        // Report Hook error via the callback\r\n                        var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n                        if (hookErrorCb) {\r\n                            callDetails.err = err;\r\n                            hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n                    }\r\n                    finally {\r\n                        // restore the original exception (if any)\r\n                        callDetails.err = orgEx;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n    // Define a temporary method that queues-up a the real method call\r\n    return function () {\r\n        var _a;\r\n        var funcThis = this;\r\n        // Capture the original arguments passed to the method\r\n        var orgArgs = arguments;\r\n        var hooks = aiHook.h;\r\n        var funcArgs = (_a = {},\r\n            _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n            _a.inst = funcThis,\r\n            _a.ctx = null,\r\n            _a.set = _replaceArg,\r\n            _a);\r\n        var hookCtx = [];\r\n        var cbArgs = _createArgs([funcArgs], orgArgs);\r\n        funcArgs.evt = getGlobalInst(\"event\");\r\n        function _createArgs(target, theArgs) {\r\n            _arrLoop(theArgs, function (arg) {\r\n                target[_DYN_PUSH /* @min:%2epush */](arg);\r\n            });\r\n            return target;\r\n        }\r\n        function _replaceArg(idx, value) {\r\n            orgArgs = _createArgs([], orgArgs);\r\n            orgArgs[idx] = value;\r\n            cbArgs = _createArgs([funcArgs], orgArgs);\r\n        }\r\n        // Call the pre-request hooks\r\n        _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n        // Call the original function was called\r\n        var theFunc = aiHook.f;\r\n        if (theFunc) {\r\n            try {\r\n                funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n            }\r\n            catch (err) {\r\n                // Report the request callback\r\n                funcArgs.err = err;\r\n                _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n                // rethrow the original exception so anyone listening for it can catch the exception\r\n                throw err;\r\n            }\r\n        }\r\n        // Call the post-request hooks\r\n        _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n        return funcArgs.rslt;\r\n    };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n    var owner = null;\r\n    if (target) {\r\n        if (hasOwnProperty(target, name)) {\r\n            owner = target;\r\n        }\r\n        else if (checkPrototype) {\r\n            owner = _getOwner(_getObjProto(target), name, false);\r\n        }\r\n    }\r\n    return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n    if (target) {\r\n        return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n    if (target) {\r\n        return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n    }\r\n    return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n    var aiHook = fn && fn[aiInstrumentHooks];\r\n    if (!aiHook) {\r\n        // Only hook the function once\r\n        aiHook = {\r\n            i: 0,\r\n            n: funcName,\r\n            f: fn,\r\n            h: []\r\n        };\r\n        // Override (hook) the original function\r\n        var newFunc = _createFunctionHook(aiHook);\r\n        newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n        owner[funcName] = newFunc;\r\n    }\r\n    var theHook = {\r\n        // tslint:disable:object-literal-shorthand\r\n        id: aiHook.i,\r\n        cbks: callbacks,\r\n        rm: function () {\r\n            // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n            // with the outer this and not the this for theHook instance.\r\n            var id = this.id;\r\n            _arrLoop(aiHook.h, function (hook, idx) {\r\n                if (hook.id === id) {\r\n                    aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                    return 1;\r\n                }\r\n            });\r\n        }\r\n        // tslint:enable:object-literal-shorthand\r\n    };\r\n    aiHook.i++;\r\n    aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n    return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n    if (checkPrototype === void 0) { checkPrototype = true; }\r\n    if (target && funcName && callbacks) {\r\n        var owner = _getOwner(target, funcName, checkPrototype);\r\n        if (owner) {\r\n            var fn = owner[funcName];\r\n            if (typeof fn === strShimFunction) {\r\n                return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n            }\r\n        }\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n    if (checkPrototype === void 0) { checkPrototype = true; }\r\n    var hooks = null;\r\n    _arrLoop(funcNames, function (funcName) {\r\n        var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n        if (hook) {\r\n            if (!hooks) {\r\n                hooks = [];\r\n            }\r\n            hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n        }\r\n    });\r\n    return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype) {\r\n    if (target && evtName && callbacks) {\r\n        var owner = _getOwner(target, evtName, checkPrototype) || target;\r\n        if (owner) {\r\n            return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n        }\r\n    }\r\n    return null;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DURATION, _DYN_GET_PERFORMANCE_TIMI17, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_SHOULD_COLLECT_DURAT18, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n    function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n        dynamicProto(PageViewManager, this, function (_self) {\r\n            var intervalHandle = null;\r\n            var itemQueue = [];\r\n            var pageViewPerformanceSent = false;\r\n            var _logger;\r\n            if (core) {\r\n                _logger = core.logger;\r\n            }\r\n            function _flushChannels(isAsync) {\r\n                if (core) {\r\n                    core.flush(isAsync);\r\n                }\r\n            }\r\n            function _addQueue(cb) {\r\n                itemQueue.push(cb);\r\n                if (!intervalHandle) {\r\n                    intervalHandle = setInterval((function () {\r\n                        var allItems = itemQueue.slice(0);\r\n                        var doFlush = false;\r\n                        itemQueue = [];\r\n                        arrForEach(allItems, function (item) {\r\n                            if (!item()) {\r\n                                // Not processed so rescheduled\r\n                                itemQueue.push(item);\r\n                            }\r\n                            else {\r\n                                doFlush = true;\r\n                            }\r\n                        });\r\n                        if (itemQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n                            clearInterval(intervalHandle);\r\n                            intervalHandle = null;\r\n                        }\r\n                        if (doFlush) {\r\n                            // We process at least one item so flush the queue\r\n                            _flushChannels(true);\r\n                        }\r\n                    }), 100);\r\n                }\r\n            }\r\n            _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n                var name = pageView.name;\r\n                if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n                    var doc = getDocument();\r\n                    name = pageView.name = doc && doc.title || \"\";\r\n                }\r\n                var uri = pageView.uri;\r\n                if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n                    var location_1 = getLocation();\r\n                    uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                }\r\n                // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n                // do not provide the duration, set duration to undefined\r\n                // Also this is case 4\r\n                if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n                    appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                    _flushChannels(true);\r\n                    // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n                    _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n                    return;\r\n                }\r\n                var pageViewSent = false;\r\n                var customDuration;\r\n                // if the performance timing is supported by the browser, calculate the custom duration\r\n                var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n                if (start > 0) {\r\n                    customDuration = dateTimeUtilsDuration(start, +new Date);\r\n                    if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n                        customDuration = undefined;\r\n                    }\r\n                }\r\n                // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n                // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n                var duration;\r\n                if (!isNullOrUndefined(customProperties) &&\r\n                    !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n                    duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n                }\r\n                if (overridePageViewDuration || !isNaN(duration)) {\r\n                    if (isNaN(duration)) {\r\n                        // case 3\r\n                        if (!customProperties) {\r\n                            customProperties = {};\r\n                        }\r\n                        customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n                    }\r\n                    // case 2\r\n                    appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                    _flushChannels(true);\r\n                    pageViewSent = true;\r\n                }\r\n                // now try to send the page view performance telemetry\r\n                var maxDurationLimit = 60000;\r\n                if (!customProperties) {\r\n                    customProperties = {};\r\n                }\r\n                // Queue the event for processing\r\n                _addQueue(function () {\r\n                    var processed = false;\r\n                    try {\r\n                        if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n                            processed = true;\r\n                            var pageViewPerformance = {\r\n                                name: name,\r\n                                uri: uri\r\n                            };\r\n                            pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n                            if (!pageViewPerformance.isValid && !pageViewSent) {\r\n                                // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n                                // That's the best value we can get that makes sense.\r\n                                customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n                                appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                            }\r\n                            else {\r\n                                if (!pageViewSent) {\r\n                                    customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n                                    appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                                }\r\n                                if (!pageViewPerformanceSent) {\r\n                                    appInsights[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n                                    pageViewPerformanceSent = true;\r\n                                }\r\n                            }\r\n                        }\r\n                        else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n                            // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n                            // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n                            processed = true;\r\n                            if (!pageViewSent) {\r\n                                customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n                                appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                            }\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                    return processed;\r\n                });\r\n            };\r\n            _self.teardown = function (unloadCtx, unloadState) {\r\n                if (intervalHandle) {\r\n                    clearInterval(intervalHandle);\r\n                    intervalHandle = null;\r\n                    var allItems = itemQueue.slice(0);\r\n                    var doFlush_1 = false;\r\n                    itemQueue = [];\r\n                    arrForEach(allItems, function (item) {\r\n                        if (item()) {\r\n                            doFlush_1 = true;\r\n                        }\r\n                    });\r\n                }\r\n            };\r\n        });\r\n    }\r\n    /**\r\n     * Currently supported cases:\r\n     * 1) (default case) track page view called with default parameters, overridePageViewDuration = false. Page view is sent with page view performance when navigation timing data is available.\r\n     *    a. If navigation timing is not supported then page view is sent right away with undefined duration. Page view performance is not sent.\r\n     * 2) overridePageViewDuration = true, custom duration provided. Custom duration is used, page view sends right away.\r\n     * 3) overridePageViewDuration = true, custom duration NOT provided. Page view is sent right away, duration is time spent from page load till now (or undefined if navigation timing is not supported).\r\n     * 4) overridePageViewDuration = false, custom duration is provided. Page view is sent right away with custom duration.\r\n     *\r\n     * In all cases page view performance is sent once (only for the 1st call of trackPageView), or not sent if navigation timing is not supported.\r\n     */\r\n    PageViewManager.prototype.trackPageView = function (pageView, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    PageViewManager.prototype.teardown = function (unloadCtx, unloadState) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI17, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT18 } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n    var perf = getPerformance();\r\n    return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n    var perf = getPerformance();\r\n    return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n    var perf = getPerformance();\r\n    var timing = perf ? perf.timing : 0;\r\n    return timing\r\n        && timing.domainLookupStart > 0\r\n        && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n        && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n        && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n        && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n        && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n        && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n        && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n    if (_isPerformanceTimingSupported()) {\r\n        return getPerformance().timing;\r\n    }\r\n    return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n    if (_isPerformanceNavigationTimingSupported()) {\r\n        return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n    }\r\n    return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n    var durations = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        durations[_i] = arguments[_i];\r\n    }\r\n    var _navigator = getNavigator() || {};\r\n    // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n    var userAgent = _navigator.userAgent;\r\n    var isGoogleBot = false;\r\n    if (userAgent) {\r\n        for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n        }\r\n    }\r\n    if (isGoogleBot) {\r\n        // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n        return false;\r\n    }\r\n    else {\r\n        // for other page views, don't report if it's outside of a reasonable range\r\n        for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n                return false;\r\n            }\r\n        }\r\n    }\r\n    return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n    function PageViewPerformanceManager(core) {\r\n        var _this = this;\r\n        var _logger = safeGetLogger(core);\r\n        dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n            _self[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n                pageViewPerformance.isValid = false;\r\n                /*\r\n                 * http://www.w3.org/TR/navigation-timing/#processing-model\r\n                 *  |-navigationStart\r\n                 *  |             |-connectEnd\r\n                 *  |             ||-requestStart\r\n                 *  |             ||             |-responseStart\r\n                 *  |             ||             |              |-responseEnd\r\n                 *  |             ||             |              |\r\n                 *  |             ||             |              |         |-loadEventEnd\r\n                 *  |---network---||---request---|---response---|---dom---|\r\n                 *  |--------------------------total----------------------|\r\n                 *\r\n                 *  total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n                 *  network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n                 *  request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n                 *  response = Response time\r\n                 *  dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n                 *      = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n                 *      + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n                 */\r\n                var navigationTiming = _getPerformanceNavigationTiming();\r\n                var timing = _getPerformanceTiming();\r\n                var total = 0;\r\n                var network = 0;\r\n                var request = 0;\r\n                var response = 0;\r\n                var dom = 0;\r\n                if (navigationTiming || timing) {\r\n                    if (navigationTiming) {\r\n                        total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n                        /**\r\n                         * support both cases:\r\n                         * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n                         * - for older browsers where the startTime is not zero\r\n                         */\r\n                        network = navigationTiming.startTime === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n                        request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n                        response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n                        dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n                    }\r\n                    else {\r\n                        total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n                        network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n                        request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n                        response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n                        dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n                    }\r\n                    if (total === 0) {\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n                    }\r\n                    else if (!_this[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n                    }\r\n                    else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n                        // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n                        // in this case, don't report client performance from this page\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n                    }\r\n                    else {\r\n                        pageViewPerformance.durationMs = total;\r\n                        // // convert to timespans\r\n                        pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n                        pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n                        pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n                        pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n                        pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n                        pageViewPerformance.isValid = true;\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n            _self[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n            _self[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n            _self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n        });\r\n    }\r\n    PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n    * Returns true is window performance timing API is supported, false otherwise.\r\n    */\r\n    PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return true;\r\n    };\r\n    /**\r\n    * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n    * Returns true if ready, false otherwise.\r\n    */\r\n    PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return true;\r\n    };\r\n    /**\r\n    * This method tells if given durations should be excluded from collection.\r\n    */\r\n    PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n        var durations = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            durations[_i] = arguments[_i];\r\n        }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return true;\r\n    };\r\n    return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, objDefineAccessors, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PAGE_VISIT_START_TIM20, _DYN_TRACK_PREVIOUS_PAGE_9 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of PageVisitTimeManager\r\n     * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n     * @returns {}\r\n     */\r\n    function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n        var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n        dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n            _self[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n                try {\r\n                    // Restart timer for new page view\r\n                    var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n                    // If there was a page already being timed, track the visit time for it now.\r\n                    if (prevPageVisitTimeData) {\r\n                        pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n                }\r\n            };\r\n            /**\r\n             * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n             * @param pageName Name of page to begin timing visit duration\r\n             * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n             */\r\n            function restartPageVisitTimer(pageName, pageUrl) {\r\n                var prevPageVisitData = null;\r\n                try {\r\n                    prevPageVisitData = stopPageVisitTimer();\r\n                    startPageVisitTimer(pageName, pageUrl);\r\n                }\r\n                catch (e) {\r\n                    _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n                    prevPageVisitData = null;\r\n                }\r\n                return prevPageVisitData;\r\n            }\r\n            /**\r\n             * Starts timing visit duration of pageName\r\n             * @param pageName\r\n             * @returns {}\r\n             */\r\n            function startPageVisitTimer(pageName, pageUrl) {\r\n                try {\r\n                    if (utlCanUseSessionStorage()) {\r\n                        if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n                            throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n                        }\r\n                        var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n                        var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n                        utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n                    _warnToConsole(logger, \"Call to start failed: \" + dumpObj(e));\r\n                }\r\n            }\r\n            /**\r\n             * Stops timing of current page, if exists.\r\n             * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n             */\r\n            function stopPageVisitTimer() {\r\n                var prevPageVisitData = null;\r\n                try {\r\n                    if (utlCanUseSessionStorage()) {\r\n                        // Define end time of page's visit\r\n                        var pageVisitEndTime = dateNow();\r\n                        // Try to retrieve  page name and start time from session storage\r\n                        var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n                        if (pageVisitDataJsonStr && hasJSON()) {\r\n                            // if previous page data exists, set end time of visit\r\n                            prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n                            prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */];\r\n                            // Remove data from storage since we already used it\r\n                            utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n                    prevPageVisitData = null;\r\n                }\r\n                return prevPageVisitData;\r\n            }\r\n            // For backward compatibility\r\n            objDefineAccessors(_self, \"_logger\", function () { return logger; });\r\n            objDefineAccessors(_self, \"pageVisitTimeTrackingHandler\", function () { return pageVisitTimeTrackingHandler; });\r\n        });\r\n    }\r\n    /**\r\n    * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n    * @param currentPageName Name of page to begin timing for visit duration\r\n    * @param currentPageUrl Url of page to begin timing for visit duration\r\n    */\r\n    PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n    function PageVisitData(pageName, pageUrl) {\r\n        this[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */] = dateNow();\r\n        this.pageName = pageName;\r\n        this.pageUrl = pageUrl;\r\n    }\r\n    return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n    function Timing(logger, name) {\r\n        var _self = this;\r\n        var _events = {};\r\n        _self.start = function (name) {\r\n            if (typeof _events[name] !== \"undefined\") {\r\n                _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n            }\r\n            _events[name] = +new Date;\r\n        };\r\n        _self.stop = function (name, url, properties, measurements) {\r\n            var start = _events[name];\r\n            if (isNaN(start)) {\r\n                _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n            }\r\n            else {\r\n                var end = +new Date;\r\n                var duration = dateTimeUtilsDuration(start, end);\r\n                _self.action(name, url, duration, properties, measurements);\r\n            }\r\n            delete _events[name];\r\n            _events[name] = undefined;\r\n        };\r\n    }\r\n    return Timing;\r\n}());\r\nexport { Timing };\r\n//# sourceMappingURL=Timing.js.map","/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, stringToBoolOrDefault, utlDisableStorage, utlEnableStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isError, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, objDefineAccessors, objForEachKey, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA15, _DYN_AUTO_TRACK_PAGE_VISI1, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DISABLE_EXCEPTION_TR0, _DYN_DISABLE_FLUSH_ON_BEF7, _DYN_ENABLE_AUTO_ROUTE_TR6, _DYN_ENABLE_UNHANDLED_PRO3, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC5, _DYN_IS_STORAGE_USE_DISAB4, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_NAME_PREFIX, _DYN_OVERRIDE_PAGE_VIEW_D2, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SAMPLING_PERCENTAGE, _DYN_SEND_EXCEPTION_INTER13, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_9, _DYN__CREATE_AUTO_EXCEPTI14, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n    if (target && target.dispatchEvent && evnt) {\r\n        target.dispatchEvent(evnt);\r\n    }\r\n}\r\nfunction _getReason(error) {\r\n    if (error && error.reason) {\r\n        var reason = error.reason;\r\n        if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n            return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n        }\r\n        return dumpObj(reason);\r\n    }\r\n    // Pass the original object down which will eventually get evaluated for any message or description\r\n    return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n    value = value || defValue;\r\n    if (value < MinMilliSeconds) {\r\n        value = MinMilliSeconds;\r\n    }\r\n    return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n    if (!config) {\r\n        config = {};\r\n    }\r\n    // set default values\r\n    config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n    config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n    config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */] = stringToBoolOrDefault(config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */]);\r\n    config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */] = stringToBoolOrDefault(config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]);\r\n    config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */] = stringToBoolOrDefault(config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */]);\r\n    config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */]);\r\n    if (isNaN(config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */]) || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] <= 0 || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] >= 100) {\r\n        config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] = 100;\r\n    }\r\n    config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */] = stringToBoolOrDefault(config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]);\r\n    config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] = stringToBoolOrDefault(config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */]);\r\n    config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */]);\r\n    config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n    config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n    config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */] = stringToBoolOrDefault(config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n    config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n    return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n    // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n    // reset based if the configuration option is provided\r\n    if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */])) {\r\n        if (extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]) {\r\n            utlDisableStorage();\r\n        }\r\n        else {\r\n            utlEnableStorage();\r\n        }\r\n    }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n    __extends(AnalyticsPlugin, _super);\r\n    function AnalyticsPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n        _this.priority = 180; // take from reserved priority range 100- 200\r\n        _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n        var _eventTracking;\r\n        var _pageTracking;\r\n        var _pageViewManager;\r\n        var _pageViewPerformanceManager;\r\n        var _pageVisitTimeManager;\r\n        var _preInitTelemetryInitializers;\r\n        var _isBrowserLinkTrackingEnabled;\r\n        var _browserLinkInitializerAdded;\r\n        var _enableAutoRouteTracking;\r\n        var _historyListenerAdded;\r\n        var _disableExceptionTracking;\r\n        var _autoExceptionInstrumented;\r\n        var _enableUnhandledPromiseRejectionTracking;\r\n        var _autoUnhandledPromiseInstrumented;\r\n        // Counts number of trackAjax invocations.\r\n        // By default we only monitor X ajax call per view to avoid too much load.\r\n        // Default value is set in config.\r\n        // This counter keeps increasing even after the limit is reached.\r\n        var _trackAjaxAttempts = 0;\r\n        // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n        var _prevUri; // Assigned in the constructor\r\n        var _currUri;\r\n        var _evtNamespace;\r\n        dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n            var _addHook = _base._addHook;\r\n            _initDefaults();\r\n            _self.getCookieMgr = function () {\r\n                return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n            };\r\n            _self.processTelemetry = function (env, itemCtx) {\r\n                _self.processNext(env, itemCtx);\r\n            };\r\n            _self.trackEvent = function (event, customProperties) {\r\n                try {\r\n                    var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n             * @param   name    A string that identifies this event uniquely within the document.\r\n             */\r\n            _self.startTrackEvent = function (name) {\r\n                try {\r\n                    _eventTracking.start(name);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Log an extended event that you started timing with `startTrackEvent`.\r\n             * @param   name    The string you used to identify this event in `startTrackEvent`.\r\n             * @param   properties  map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n             * @param   measurements    map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n             */\r\n            _self.stopTrackEvent = function (name, properties, measurements) {\r\n                try {\r\n                    _eventTracking.stop(name, undefined, properties, measurements);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * @description Log a diagnostic message\r\n             * @param {ITraceTelemetry} trace\r\n             * @param ICustomProperties.\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self.trackTrace = function (trace, customProperties) {\r\n                try {\r\n                    var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * @description Log a numeric value that is not associated with a specific event. Typically\r\n             * used to send regular reports of performance indicators. To send single measurement, just\r\n             * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n             * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n             * and sending the resulting average at intervals\r\n             * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n             * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n             * portal. Defaults to empty.\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self.trackMetric = function (metric, customProperties) {\r\n                try {\r\n                    var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Logs that a page or other item was viewed.\r\n             * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n             * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n             * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n             */\r\n            _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n                try {\r\n                    var inPv = pageView || {};\r\n                    _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n                    if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n                        _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n             * @param pageView Page view item to be sent\r\n             * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n             * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n             */\r\n            _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n                var doc = getDocument();\r\n                if (doc) {\r\n                    pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n                }\r\n                var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                // reset ajaxes counter\r\n                _trackAjaxAttempts = 0;\r\n            };\r\n            /**\r\n             * @ignore INTERNAL ONLY\r\n             * @param pageViewPerformance\r\n             * @param properties\r\n             */\r\n            _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n                var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n            };\r\n            /**\r\n             * Send browser performance metrics.\r\n             * @param pageViewPerformance\r\n             * @param customProperties\r\n             */\r\n            _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n                var inPvp = pageViewPerformance || {};\r\n                try {\r\n                    _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n                    _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n             * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n             * and send the event.\r\n             * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n             */\r\n            _self.startTrackPage = function (name) {\r\n                try {\r\n                    if (typeof name !== \"string\") {\r\n                        var doc = getDocument();\r\n                        name = doc && doc.title || \"\";\r\n                    }\r\n                    _pageTracking.start(name);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n             * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n             * @param   name  The string you used as the name in startTrackPage. Defaults to the document title.\r\n             * @param   url   String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n             * @param   properties  map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n             * @param   measurements    map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n             */\r\n            _self.stopTrackPage = function (name, url, properties, measurement) {\r\n                try {\r\n                    if (typeof name !== \"string\") {\r\n                        var doc = getDocument();\r\n                        name = doc && doc.title || \"\";\r\n                    }\r\n                    if (typeof url !== \"string\") {\r\n                        var loc = getLocation();\r\n                        url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                    }\r\n                    _pageTracking.stop(name, url, properties, measurement);\r\n                    if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n                        _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n            * @ignore INTERNAL ONLY\r\n            * @param exception\r\n            * @param properties\r\n            * @param systemProperties\r\n            */\r\n            _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n                // Adding additional edge cases to handle\r\n                // - Not passing anything (null / undefined)\r\n                var theError = (exception && (exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */])) ||\r\n                    // - Handle someone calling trackException based of v1 API where the exception was the Error\r\n                    isError(exception) && exception ||\r\n                    // - Handles no error being defined and instead of creating a new Error() instance attempt to map so any stacktrace\r\n                    //   is preserved and does not list ApplicationInsights code as the source\r\n                    { name: (exception && typeof exception), message: exception || strNotSpecified };\r\n                // If no exception object was passed assign to an empty object to avoid internal exceptions\r\n                exception = exception || {};\r\n                var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n                var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n            };\r\n            /**\r\n             * Log an exception you have caught.\r\n             *\r\n             * @param {IExceptionTelemetry} exception   Object which contains exception to be sent\r\n             * @param {{[key: string]: any}} customProperties   Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n             *\r\n             * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self.trackException = function (exception, customProperties) {\r\n                if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n                    exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n                }\r\n                try {\r\n                    _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * @description Custom error handler for Application Insights Analytics\r\n             * @param {IAutoExceptionTelemetry} exception\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n                var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n                var evt = exception && exception.evt;\r\n                try {\r\n                    if (!evt) {\r\n                        var _window = getWindow();\r\n                        if (_window) {\r\n                            evt = _window[strEvent];\r\n                        }\r\n                    }\r\n                    var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n                    // If no error source is provided assume the default window.onerror handler\r\n                    var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n                    var properties = {\r\n                        errorSrc: errorSrc,\r\n                        url: url,\r\n                        lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n                        columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n                        message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n                    };\r\n                    if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n                        _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n                    }\r\n                    else {\r\n                        if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n                            exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n                        }\r\n                        _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n                        + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n                }\r\n            };\r\n            _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n                if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n                    // Just add to the core\r\n                    return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n                }\r\n                // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n                if (!_preInitTelemetryInitializers) {\r\n                    _preInitTelemetryInitializers = [];\r\n                }\r\n                _preInitTelemetryInitializers.push(telemetryInitializer);\r\n            };\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                if (_self.isInitialized()) {\r\n                    return;\r\n                }\r\n                if (isNullOrUndefined(core)) {\r\n                    throwError(\"Error initializing\");\r\n                }\r\n                _base.initialize(config, core, extensions, pluginChain);\r\n                try {\r\n                    _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n                    if (_preInitTelemetryInitializers) {\r\n                        arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n                            core[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n                        });\r\n                        _preInitTelemetryInitializers = null;\r\n                    }\r\n                    var extConfig = _populateDefaults(config);\r\n                    _updateStorageUsage(extConfig);\r\n                    _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n                    _pageViewManager = new PageViewManager(_this, extConfig[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */], _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n                    _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n                    _updateBrowserLinkTracking(extConfig, config);\r\n                    _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n                    _eventTracking.action =\r\n                        function (name, url, duration, properties, measurements) {\r\n                            if (!properties) {\r\n                                properties = {};\r\n                            }\r\n                            if (!measurements) {\r\n                                measurements = {};\r\n                            }\r\n                            properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                            _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n                        };\r\n                    // initialize page view timing\r\n                    _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n                    _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n                        // duration must be a custom property in order for the collector to extract it\r\n                        if (isNullOrUndefined(properties)) {\r\n                            properties = {};\r\n                        }\r\n                        properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                        var pageViewItem = {\r\n                            name: name,\r\n                            uri: url,\r\n                            properties: properties,\r\n                            measurements: measurements\r\n                        };\r\n                        _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n                    };\r\n                    if (hasWindow()) {\r\n                        _updateExceptionTracking(extConfig);\r\n                        _updateLocationChange(extConfig);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // resetting the initialized state because of failure\r\n                    _self.setInitialized(false);\r\n                    throw e;\r\n                }\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n                // Just register to remove all events associated with this namespace\r\n                eventOff(window, null, null, _evtNamespace);\r\n                _initDefaults();\r\n            };\r\n            function _populateDefaults(config) {\r\n                var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n                var identifier = _self.identifier;\r\n                // load default values if specified\r\n                var defaults = _getDefaultConfig(config);\r\n                var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n                if (defaults !== undefined) {\r\n                    objForEachKey(defaults, function (field, value) {\r\n                        // for each unspecified field, set the default value\r\n                        extConfig[field] = ctx.getConfig(identifier, field, value);\r\n                        if (extConfig[field] === undefined) {\r\n                            extConfig = value;\r\n                        }\r\n                    });\r\n                }\r\n                return extConfig;\r\n            }\r\n            function _updateBrowserLinkTracking(extConfig, config) {\r\n                _isBrowserLinkTrackingEnabled = extConfig[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] || config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n                _addDefaultTelemetryInitializers();\r\n            }\r\n            /**\r\n             * Log a page visit time\r\n             * @param    pageName    Name of page\r\n             * @param    pageVisitDuration Duration of visit to the page in milleseconds\r\n             */\r\n            function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n                var properties = { PageName: pageName, PageUrl: pageUrl };\r\n                _self.trackMetric({\r\n                    name: \"PageVisitTime\",\r\n                    average: pageVisitTime,\r\n                    max: pageVisitTime,\r\n                    min: pageVisitTime,\r\n                    sampleCount: 1\r\n                }, properties);\r\n            }\r\n            function _addDefaultTelemetryInitializers() {\r\n                if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n                    var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n                    var dropBrowserLinkRequests = function (envelope) {\r\n                        if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n                            var remoteData = envelope.baseData;\r\n                            if (remoteData) {\r\n                                for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n                                    if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n                                        return false;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        return true;\r\n                    };\r\n                    _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests);\r\n                    _browserLinkInitializerAdded = true;\r\n                }\r\n            }\r\n            function _sendCORSException(exception, properties) {\r\n                var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n            }\r\n            function _updateExceptionTracking(extConfig) {\r\n                var _window = getWindow();\r\n                var locn = getLocation(true);\r\n                _disableExceptionTracking = extConfig[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */];\r\n                if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n                    // We want to enable exception auto collection and it has not been done so yet\r\n                    _addHook(InstrumentEvent(_window, \"onerror\", {\r\n                        ns: _evtNamespace,\r\n                        rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n                            if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n                                _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n                            }\r\n                        }\r\n                    }, false));\r\n                    _autoExceptionInstrumented = true;\r\n                }\r\n                _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n            }\r\n            function _updateLocationChange(extConfig) {\r\n                var win = getWindow();\r\n                var locn = getLocation(true);\r\n                _enableAutoRouteTracking = extConfig[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] === true;\r\n                /**\r\n                 * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n                 */\r\n                if (win && _enableAutoRouteTracking && hasHistory()) {\r\n                    var _history = getHistory();\r\n                    if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n                        _addHistoryListener(extConfig, win, _history, locn);\r\n                    }\r\n                }\r\n            }\r\n            function _getDistributedTraceCtx() {\r\n                var distributedTraceCtx = null;\r\n                if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n                    distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n                }\r\n                if (!distributedTraceCtx) {\r\n                    // Fallback when using an older Core and PropertiesPlugin\r\n                    var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n                    if (properties) {\r\n                        var context = properties.plugin.context;\r\n                        if (context) {\r\n                            distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n                        }\r\n                    }\r\n                }\r\n                return distributedTraceCtx;\r\n            }\r\n            /**\r\n             * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n             */\r\n            function _addHistoryListener(extConfig, win, history, locn) {\r\n                var namePrefix = extConfig[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n                function _popstateHandler() {\r\n                    if (_enableAutoRouteTracking) {\r\n                        _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n                    }\r\n                }\r\n                function _locationChangeHandler() {\r\n                    // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n                    if (_currUri) {\r\n                        _prevUri = _currUri;\r\n                        _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                    }\r\n                    else {\r\n                        _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                    }\r\n                    if (_enableAutoRouteTracking) {\r\n                        var distributedTraceCtx = _getDistributedTraceCtx();\r\n                        if (distributedTraceCtx) {\r\n                            distributedTraceCtx.setTraceId(generateW3CId());\r\n                            var traceLocationName = \"_unknown_\";\r\n                            if (locn && locn.pathname) {\r\n                                traceLocationName = locn.pathname + (locn.hash || \"\");\r\n                            }\r\n                            // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n                            distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n                        }\r\n                        setTimeout((function (uri) {\r\n                            // todo: override start time so that it is not affected by autoRoutePVDelay\r\n                            _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n                        }).bind(this, _prevUri), _self.autoRoutePVDelay);\r\n                    }\r\n                }\r\n                if (!_historyListenerAdded) {\r\n                    _addHook(InstrumentEvent(history, \"pushState\", {\r\n                        ns: _evtNamespace,\r\n                        rsp: function () {\r\n                            if (_enableAutoRouteTracking) {\r\n                                _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n                                _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n                            }\r\n                        }\r\n                    }, true));\r\n                    _addHook(InstrumentEvent(history, \"replaceState\", {\r\n                        ns: _evtNamespace,\r\n                        rsp: function () {\r\n                            if (_enableAutoRouteTracking) {\r\n                                _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n                                _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n                            }\r\n                        }\r\n                    }, true));\r\n                    eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n                    eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n                    _historyListenerAdded = true;\r\n                }\r\n            }\r\n            function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n                _enableUnhandledPromiseRejectionTracking = extConfig[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n                if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n                    // We want to enable exception auto collection and it has not been done so yet\r\n                    _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n                        ns: _evtNamespace,\r\n                        rsp: function (callDetails, error) {\r\n                            if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n                                _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n                            }\r\n                        }\r\n                    }, false));\r\n                    _autoUnhandledPromiseInstrumented = true;\r\n                    extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n                }\r\n            }\r\n            /**\r\n             * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n             * @param severity {eLoggingSeverity} - The severity of the log message\r\n             * @param message {_InternalLogMessage} - The log message.\r\n             */\r\n            function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n                _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n            }\r\n            function _initDefaults() {\r\n                _eventTracking = null;\r\n                _pageTracking = null;\r\n                _pageViewManager = null;\r\n                _pageViewPerformanceManager = null;\r\n                _pageVisitTimeManager = null;\r\n                _preInitTelemetryInitializers = null;\r\n                _isBrowserLinkTrackingEnabled = false;\r\n                _browserLinkInitializerAdded = false;\r\n                _enableAutoRouteTracking = false;\r\n                _historyListenerAdded = false;\r\n                _disableExceptionTracking = false;\r\n                _autoExceptionInstrumented = false;\r\n                _enableUnhandledPromiseRejectionTracking = false;\r\n                _autoUnhandledPromiseInstrumented = false;\r\n                // Counts number of trackAjax invocations.\r\n                // By default we only monitor X ajax call per view to avoid too much load.\r\n                // Default value is set in config.\r\n                // This counter keeps increasing even after the limit is reached.\r\n                _trackAjaxAttempts = 0;\r\n                // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n                var location = getLocation(true);\r\n                _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                _currUri = null;\r\n                _evtNamespace = null;\r\n            }\r\n            // For backward compatibility\r\n            objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n            objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n            objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n            objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n        });\r\n        return _this;\r\n    }\r\n    /**\r\n     * Get the current cookie manager for this instance\r\n     */\r\n    AnalyticsPlugin.prototype.getCookieMgr = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    AnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AnalyticsPlugin.prototype.trackEvent = function (event, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n     * @param   name    A string that identifies this event uniquely within the document.\r\n     */\r\n    AnalyticsPlugin.prototype.startTrackEvent = function (name) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log an extended event that you started timing with `startTrackEvent`.\r\n     * @param   name    The string you used to identify this event in `startTrackEvent`.\r\n     * @param   properties  map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n     * @param   measurements    map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n     */\r\n    AnalyticsPlugin.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * @description Log a diagnostic message\r\n     * @param {ITraceTelemetry} trace\r\n     * @param ICustomProperties.\r\n     * @memberof ApplicationInsights\r\n     */\r\n    AnalyticsPlugin.prototype.trackTrace = function (trace, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * @description Log a numeric value that is not associated with a specific event. Typically\r\n     * used to send regular reports of performance indicators. To send single measurement, just\r\n     * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n     * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n     * and sending the resulting average at intervals\r\n     * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n     * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n     * portal. Defaults to empty.\r\n     * @memberof ApplicationInsights\r\n     */\r\n    AnalyticsPlugin.prototype.trackMetric = function (metric, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Logs that a page or other item was viewed.\r\n     * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n     * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n     * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n     */\r\n    AnalyticsPlugin.prototype.trackPageView = function (pageView, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n     * @param pageView Page view item to be sent\r\n     * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n     * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n     */\r\n    AnalyticsPlugin.prototype.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * @ignore INTERNAL ONLY\r\n     * @param pageViewPerformance\r\n     * @param properties\r\n     */\r\n    AnalyticsPlugin.prototype.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Send browser performance metrics.\r\n     * @param pageViewPerformance\r\n     * @param customProperties\r\n     */\r\n    AnalyticsPlugin.prototype.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n     * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n     * and send the event.\r\n     * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n     */\r\n    AnalyticsPlugin.prototype.startTrackPage = function (name) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n     * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n     * @param   name  The string you used as the name in startTrackPage. Defaults to the document title.\r\n     * @param   url   String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n     * @param   properties  map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n     * @param   measurements    map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n     */\r\n    AnalyticsPlugin.prototype.stopTrackPage = function (name, url, properties, measurement) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n    * @ignore INTERNAL ONLY\r\n    * @param exception\r\n    * @param properties\r\n    * @param systemProperties\r\n    */\r\n    AnalyticsPlugin.prototype.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log an exception you have caught.\r\n     *\r\n     * @param {IExceptionTelemetry} exception   Object which contains exception to be sent\r\n     * @param {{[key: string]: any}} customProperties   Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n     *\r\n     * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n     * @memberof ApplicationInsights\r\n     */\r\n    AnalyticsPlugin.prototype.trackException = function (exception, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * @description Custom error handler for Application Insights Analytics\r\n     * @param {IAutoExceptionTelemetry} exception\r\n     * @memberof ApplicationInsights\r\n     */\r\n    AnalyticsPlugin.prototype._onerror = function (exception) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AnalyticsPlugin.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AnalyticsPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AnalyticsPlugin.Version = '2.8.10'; // Not currently used anywhere\r\n    AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n    return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n//# sourceMappingURL=AnalyticsPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n    var aiName = \"ai.\" + baseName + \".\";\r\n    return function (name) {\r\n        return aiName + name;\r\n    };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n    __extends(ContextTagKeys, _super);\r\n    function ContextTagKeys() {\r\n        return _super.call(this) || this;\r\n    }\r\n    return ContextTagKeys;\r\n}(createClassFromInterface({\r\n    applicationVersion: _aiApplication(\"ver\"),\r\n    applicationBuild: _aiApplication(\"build\"),\r\n    applicationTypeId: _aiApplication(\"typeId\"),\r\n    applicationId: _aiApplication(\"applicationId\"),\r\n    applicationLayer: _aiApplication(\"layer\"),\r\n    deviceId: _aiDevice(\"id\"),\r\n    deviceIp: _aiDevice(\"ip\"),\r\n    deviceLanguage: _aiDevice(\"language\"),\r\n    deviceLocale: _aiDevice(\"locale\"),\r\n    deviceModel: _aiDevice(\"model\"),\r\n    deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n    deviceNetwork: _aiDevice(\"network\"),\r\n    deviceNetworkName: _aiDevice(\"networkName\"),\r\n    deviceOEMName: _aiDevice(\"oemName\"),\r\n    deviceOS: _aiDevice(\"os\"),\r\n    deviceOSVersion: _aiDevice(\"osVersion\"),\r\n    deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n    deviceRoleName: _aiDevice(\"roleName\"),\r\n    deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n    deviceType: _aiDevice(\"type\"),\r\n    deviceMachineName: _aiDevice(\"machineName\"),\r\n    deviceVMName: _aiDevice(\"vmName\"),\r\n    deviceBrowser: _aiDevice(\"browser\"),\r\n    deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n    locationIp: _aiLocation(\"ip\"),\r\n    locationCountry: _aiLocation(\"country\"),\r\n    locationProvince: _aiLocation(\"province\"),\r\n    locationCity: _aiLocation(\"city\"),\r\n    operationId: _aiOperation(\"id\"),\r\n    operationName: _aiOperation(\"name\"),\r\n    operationParentId: _aiOperation(\"parentId\"),\r\n    operationRootId: _aiOperation(\"rootId\"),\r\n    operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n    operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n    sessionId: _aiSession(\"id\"),\r\n    sessionIsFirst: _aiSession(\"isFirst\"),\r\n    sessionIsNew: _aiSession(\"isNew\"),\r\n    userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n    userAccountId: _aiUser(\"accountId\"),\r\n    userAgent: _aiUser(\"userAgent\"),\r\n    userId: _aiUser(\"id\"),\r\n    userStoreRegion: _aiUser(\"storeRegion\"),\r\n    userAuthUserId: _aiUser(\"authUserId\"),\r\n    userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n    userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n    cloudName: _aiCloud(\"name\"),\r\n    cloudRole: _aiCloud(\"role\"),\r\n    cloudRoleVer: _aiCloud(\"roleVer\"),\r\n    cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n    cloudEnvironment: _aiCloud(\"environment\"),\r\n    cloudLocation: _aiCloud(\"location\"),\r\n    cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n    internalNodeName: _aiInternal(\"nodeName\"),\r\n    internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n    internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n    internalSnippet: _aiInternal(\"snippet\"),\r\n    internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","import { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n    UserExt: \"user\",\r\n    DeviceExt: \"device\",\r\n    TraceExt: \"trace\",\r\n    WebExt: \"web\",\r\n    AppExt: \"app\",\r\n    OSExt: \"os\",\r\n    SessionExt: \"ses\",\r\n    SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of telemetry data.\r\n     */\r\n    function Envelope(logger, data, name) {\r\n        var _this = this;\r\n        var _self = this;\r\n        _self.ver = 1;\r\n        _self.sampleRate = 100.0;\r\n        _self.tags = {};\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        _self.data = data;\r\n        _self.time = toISOString(new Date());\r\n        _self.aiDataContract = {\r\n            time: 1 /* FieldType.Required */,\r\n            iKey: 1 /* FieldType.Required */,\r\n            name: 1 /* FieldType.Required */,\r\n            sampleRate: function () {\r\n                return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n            },\r\n            tags: 1 /* FieldType.Required */,\r\n            data: 1 /* FieldType.Required */\r\n        };\r\n    }\r\n    return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Data = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of telemetry data.\r\n     */\r\n    function Data(baseType, data) {\r\n        /**\r\n         * The data contract for serializing this object.\r\n         */\r\n        this.aiDataContract = {\r\n            baseType: 1 /* FieldType.Required */,\r\n            baseData: 1 /* FieldType.Required */\r\n        };\r\n        this.baseType = baseType;\r\n        this.baseData = data;\r\n    }\r\n    return Data;\r\n}());\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","import { __assign } from \"tslib\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n    return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n    // todo: switch to keys from common in this method\r\n    var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n    var itmExt = item.ext = item.ext || {};\r\n    var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n    var extUser = itmExt.user;\r\n    if (extUser) {\r\n        _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n        _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n    }\r\n    var extApp = itmExt.app;\r\n    if (extApp) {\r\n        _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n    }\r\n    var extDevice = itmExt.device;\r\n    if (extDevice) {\r\n        _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n        _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n        _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n        _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n        _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n    }\r\n    var web = item.ext.web;\r\n    if (web) {\r\n        _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n        _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n        _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n        var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n        var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n        var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n        _setValueIf(envProps, \"domain\", web.domain);\r\n        _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n        _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n        _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n    }\r\n    var extOs = itmExt.os;\r\n    if (extOs) {\r\n        _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n    }\r\n    // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n    var extTrace = itmExt.trace;\r\n    if (extTrace) {\r\n        _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n        _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n        _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n    }\r\n    // Sample 4.0 schema\r\n    //  {\r\n    //     \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n    //     \"name\" : \"MetricWithNamespace\",\r\n    //     \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n    //     \"ext\": {  \"cloud\": {\r\n    //          \"role\": \"WATSON3\",\r\n    //          \"roleInstance\": \"CO4AEAP00000260\"\r\n    //      },\r\n    //      \"device\": {}, \"correlation\": {} },\r\n    //      \"tags\": [\r\n    //        { \"amazon.region\" : \"east2\" },\r\n    //        { \"os.expid\" : \"wp:02df239\" }\r\n    //     ]\r\n    //   }\r\n    var tgs = {};\r\n    // deals with tags.push({object})\r\n    for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n        var tg = itmTags[i];\r\n        objForEachKey(tg, function (key, value) {\r\n            tgs[key] = value;\r\n        });\r\n        itmTags.splice(i, 1);\r\n    }\r\n    // deals with tags[key]=value (and handles hasOwnProperty)\r\n    objForEachKey(itmTags, function (tg, value) {\r\n        tgs[tg] = value;\r\n    });\r\n    var theTags = __assign(__assign({}, envTags), tgs);\r\n    if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n        // Append a version in case it is not already set\r\n        theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n    }\r\n    env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n    if (!isNullOrUndefined(data)) {\r\n        objForEachKey(data, function (key, value) {\r\n            if (isNumber(value)) {\r\n                measurements[key] = value;\r\n            }\r\n            else if (isString(value)) {\r\n                properties[key] = value;\r\n            }\r\n            else if (hasJSON()) {\r\n                properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n            }\r\n        });\r\n    }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n    if (!isNullOrUndefined(properties)) {\r\n        objForEachKey(properties, function (key, value) {\r\n            properties[key] = value || customUndefinedValue;\r\n        });\r\n    }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n    var envelope = new Envelope(logger, data, envelopeType);\r\n    _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n    if ((telemetryItem[strBaseData] || {}).startTime) {\r\n        envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n    }\r\n    envelope.iKey = telemetryItem.iKey;\r\n    var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n    envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n    // extract all extensions from ctx\r\n    _extractPartAExtensions(logger, telemetryItem, envelope);\r\n    // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n    telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n    return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n    if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n    }\r\n}\r\nexport var EnvelopeCreator = {\r\n    Version: '2.8.10'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n    }\r\n    var bd = telemetryItem[strBaseData];\r\n    if (isNullOrUndefined(bd)) {\r\n        _warnToConsole(logger, \"Invalid input for dependency data\");\r\n        return null;\r\n    }\r\n    var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n    var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n    var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n    return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var customProperties = {};\r\n    var customMeasurements = {};\r\n    if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n        customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n    }\r\n    if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n        customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n        customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    }\r\n    else { // if its not a known type, convert to custom event\r\n        if (telemetryItem[strBaseData]) {\r\n            _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n        }\r\n    }\r\n    // Extract root level properties from part C telemetryItem.data\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n    }\r\n    var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n    var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n    var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n    return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    // Extract root level properties from part C telemetryItem.data\r\n    var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n    }\r\n    var bd = telemetryItem[strBaseData];\r\n    var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n    var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n    return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var baseData = telemetryItem[strBaseData];\r\n    var props = baseData[strProperties] || {};\r\n    var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n    }\r\n    var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n    var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n    return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n    var duration;\r\n    var baseData = telemetryItem[strBaseData];\r\n    if (!isNullOrUndefined(baseData) &&\r\n        !isNullOrUndefined(baseData[strProperties]) &&\r\n        !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n        duration = baseData[strProperties][STR_DURATION];\r\n        delete baseData[strProperties][STR_DURATION];\r\n    }\r\n    else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n        !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n        duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n        delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n    }\r\n    var bd = telemetryItem[strBaseData];\r\n    // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n    var currentContextId;\r\n    if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n        currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n    }\r\n    var id = bd.id || currentContextId;\r\n    var name = bd[_DYN_NAME /* @min:%2ename */];\r\n    var url = bd.uri;\r\n    var properties = bd[strProperties] || {};\r\n    var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd.refUri)) {\r\n        properties[\"refUri\"] = bd.refUri;\r\n    }\r\n    // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd.pageType)) {\r\n        properties[\"pageType\"] = bd.pageType;\r\n    }\r\n    // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n        properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n    }\r\n    // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd[strProperties])) {\r\n        var pageTags = bd[strProperties];\r\n        objForEachKey(pageTags, function (key, value) {\r\n            properties[key] = value;\r\n        });\r\n    }\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n    }\r\n    var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n    var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n    return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var bd = telemetryItem[strBaseData];\r\n    var name = bd[_DYN_NAME /* @min:%2ename */];\r\n    var url = bd.uri || bd.url;\r\n    var properties = bd[strProperties] || {};\r\n    var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n    }\r\n    var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n    var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n    return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var message = telemetryItem[strBaseData].message;\r\n    var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n    var props = telemetryItem[strBaseData][strProperties] || {};\r\n    var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n    }\r\n    var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n    var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n    return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","import { createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ON_LINE } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n    eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n    var _document = getDocument();\r\n    var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n    var _isListening = false;\r\n    var _onlineStatus = true;\r\n    var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n    try {\r\n        if (_enableEvents(getWindow())) {\r\n            _isListening = true;\r\n        }\r\n        if (_document) {\r\n            // Also attach to the document.body or document\r\n            var target = _document.body || _document;\r\n            if (target.ononline) {\r\n                if (_enableEvents(target)) {\r\n                    _isListening = true;\r\n                }\r\n            }\r\n        }\r\n        if (_isListening) {\r\n            // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n            if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n                _onlineStatus = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n            }\r\n        }\r\n    }\r\n    catch (e) {\r\n        // this makes react-native less angry\r\n        _isListening = false;\r\n    }\r\n    function _enableEvents(target) {\r\n        var enabled = false;\r\n        if (target) {\r\n            enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n            if (enabled) {\r\n                eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n            }\r\n        }\r\n        return enabled;\r\n    }\r\n    function _setOnline() {\r\n        _onlineStatus = true;\r\n    }\r\n    function _setOffline() {\r\n        _onlineStatus = false;\r\n    }\r\n    function _isOnline() {\r\n        var result = true;\r\n        if (_isListening) {\r\n            result = _onlineStatus;\r\n        }\r\n        else if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n            result = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n        }\r\n        return result;\r\n    }\r\n    function _unload() {\r\n        var win = getWindow();\r\n        if (win && _isListening) {\r\n            _disableEvents(win, _evtNamespace);\r\n            if (_document) {\r\n                // Also attach to the document.body or document\r\n                var target = _document.body || _document;\r\n                if (!isUndefined(target.ononline)) {\r\n                    _disableEvents(target, _evtNamespace);\r\n                }\r\n            }\r\n            _isListening = false;\r\n        }\r\n    }\r\n    return {\r\n        isOnline: _isOnline,\r\n        isListening: function () { return _isListening; },\r\n        unload: _unload\r\n    };\r\n}\r\n//# sourceMappingURL=Offline.js.map","import { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_COUNT, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_NAME_PREFIX, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n    function BaseSendBuffer(logger, config) {\r\n        var _buffer = [];\r\n        var _bufferFullMessageSent = false;\r\n        this._get = function () {\r\n            return _buffer;\r\n        };\r\n        this._set = function (buffer) {\r\n            _buffer = buffer;\r\n            return _buffer;\r\n        };\r\n        dynamicProto(BaseSendBuffer, this, function (_self) {\r\n            _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n                if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config.eventsLimitInMem()) {\r\n                    // sent internal log only once per page view\r\n                    if (!_bufferFullMessageSent) {\r\n                        _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n                        _bufferFullMessageSent = true;\r\n                    }\r\n                    return;\r\n                }\r\n                _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n            };\r\n            _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n                return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n            };\r\n            _self.size = function () {\r\n                var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n                for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                    size += _buffer[lp][_DYN_LENGTH /* @min:%2elength */];\r\n                }\r\n                if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]()) {\r\n                    size += 2;\r\n                }\r\n                return size;\r\n            };\r\n            _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n                _buffer = [];\r\n                _bufferFullMessageSent = false;\r\n            };\r\n            _self.getItems = function () {\r\n                return _buffer.slice(0);\r\n            };\r\n            _self[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */] = function (payload) {\r\n                if (payload && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]() ?\r\n                        payload.join(\"\\n\") :\r\n                        \"[\" + payload.join(\",\") + \"]\";\r\n                    return batch;\r\n                }\r\n                return null;\r\n            };\r\n        });\r\n    }\r\n    BaseSendBuffer.prototype.enqueue = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseSendBuffer.prototype.count = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 0;\r\n    };\r\n    BaseSendBuffer.prototype.size = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 0;\r\n    };\r\n    BaseSendBuffer.prototype.clear = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseSendBuffer.prototype.getItems = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    BaseSendBuffer.prototype.batchPayloads = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n    __extends(ArraySendBuffer, _super);\r\n    function ArraySendBuffer(logger, config) {\r\n        var _this = _super.call(this, logger, config) || this;\r\n        dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n            _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n                _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n            };\r\n            _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n                // not supported\r\n            };\r\n        });\r\n        return _this;\r\n    }\r\n    ArraySendBuffer.prototype.markAsSent = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    ArraySendBuffer.prototype.clearSent = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n    __extends(SessionStorageSendBuffer, _super);\r\n    function SessionStorageSendBuffer(logger, config) {\r\n        var _this = _super.call(this, logger, config) || this;\r\n        var _bufferFullMessageSent = false;\r\n        dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n            var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n            var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n            var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n            // If the buffer has too many items, drop items from the end.\r\n            if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n                buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n            }\r\n            _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n            _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n            _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n                if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n                    // sent internal log only once per page view\r\n                    if (!_bufferFullMessageSent) {\r\n                        _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n                        _bufferFullMessageSent = true;\r\n                    }\r\n                    return;\r\n                }\r\n                _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n            };\r\n            _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n                _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n                _bufferFullMessageSent = false;\r\n            };\r\n            _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n                var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n                if (sentElements instanceof Array && payload instanceof Array) {\r\n                    sentElements = sentElements.concat(payload);\r\n                    if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n                        // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n                        // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n                        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n                        sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n                    }\r\n                    _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n                }\r\n            };\r\n            _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n                var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n                sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n            };\r\n            function _removePayloadsFromBuffer(payloads, buffer) {\r\n                var remaining = [];\r\n                arrForEach(buffer, function (value) {\r\n                    if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n                        remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n                    }\r\n                });\r\n                return remaining;\r\n            }\r\n            function _getBuffer(key) {\r\n                var prefixedKey = key;\r\n                try {\r\n                    prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n                    var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n                    if (bufferJson) {\r\n                        var buffer_1 = getJSON().parse(bufferJson);\r\n                        if (isString(buffer_1)) {\r\n                            // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n                            buffer_1 = getJSON().parse(buffer_1);\r\n                        }\r\n                        if (buffer_1 && isArray(buffer_1)) {\r\n                            return buffer_1;\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n                return [];\r\n            }\r\n            function _setBuffer(key, buffer) {\r\n                var prefixedKey = key;\r\n                try {\r\n                    prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n                    var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n                    utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n                }\r\n                catch (e) {\r\n                    // if there was an error, clear the buffer\r\n                    // telemetry is stored in the _buffer array so we won't loose any items\r\n                    utlSetSessionStorage(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n                }\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n    SessionStorageSendBuffer.prototype.enqueue = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    SessionStorageSendBuffer.prototype.clear = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    SessionStorageSendBuffer.prototype.markAsSent = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    SessionStorageSendBuffer.prototype.clearSent = function (payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n    SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n    // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n    SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n    return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","var _a;\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objForEachKey, objKeys, useXDomainRequest } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CUSTOM_HEADERS, _DYN_DIAG_LOG, _DYN_DISABLE_INSTRUMENTAT7, _DYN_DISABLE_TELEMETRY, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA4, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_RETRY_DISABLED, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_NAME_PREFIX, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET5, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SAMPLING_PERCENTAGE, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__SENDER_CONFIG, _DYN__XHR_READY_STATE_CHA6 } from \"./__DynamicConstants\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n    try {\r\n        return xhr.responseText;\r\n    }\r\n    catch (e) {\r\n        // Best effort, as XHR may throw while XDR wont so just ignore\r\n    }\r\n    return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n    var _a;\r\n    var defaultValue;\r\n    var defaultCustomHeaders;\r\n    // set default values\r\n    return _a = {\r\n            endpointUrl: function () { return DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH; }\r\n        },\r\n        _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = function () { return false; },\r\n        _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = function () { return 15000; },\r\n        _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = function () { return 102400; },\r\n        _a[_DYN_DISABLE_TELEMETRY /* @min:disableTelemetry */] = function () { return false; },\r\n        _a[_DYN_ENABLE_SESSION_STORA4 /* @min:enableSessionStorageBuffer */] = function () { return true; },\r\n        _a[_DYN_IS_RETRY_DISABLED /* @min:isRetryDisabled */] = function () { return false; },\r\n        _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = function () { return true; },\r\n        _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = function () { return false; },\r\n        _a[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:onunloadDisableFetch */] = function () { return false; },\r\n        _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = function () { return false; },\r\n        _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = function () { return defaultValue; },\r\n        _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n        _a[_DYN_SAMPLING_PERCENTAGE /* @min:samplingPercentage */] = function () { return 100; },\r\n        _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = function () { return defaultCustomHeaders; },\r\n        _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = function () { return defaultValue; },\r\n        _a.eventsLimitInMem = function () { return 10000; },\r\n        _a;\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n    _a[Event.dataType] = EventEnvelopeCreator,\r\n    _a[Trace.dataType] = TraceEnvelopeCreator,\r\n    _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n    _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n    _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n    _a[Metric.dataType] = MetricEnvelopeCreator,\r\n    _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n    _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n    __extends(Sender, _super);\r\n    function Sender() {\r\n        var _this = _super.call(this) || this;\r\n        _this.priority = 1001;\r\n        _this.identifier = BreezeChannelIdentifier;\r\n        /**\r\n         * The configuration for this sender instance\r\n         */\r\n        _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n        // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n        var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n        var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n        var _lastSend; // The time of the last send operation.\r\n        var _paused; // Flag indicating that the sending should be paused\r\n        var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n        var _serializer;\r\n        var _stamp_specific_redirects;\r\n        var _headers;\r\n        var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n        var _fallbackSender; // The sender to use if the payload size is too large\r\n        var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n        var _offlineListener;\r\n        var _evtNamespace;\r\n        dynamicProto(Sender, _this, function (_self, _base) {\r\n            _initDefaults();\r\n            _self.pause = function () {\r\n                _clearScheduledTimer();\r\n                _paused = true;\r\n            };\r\n            _self.resume = function () {\r\n                if (_paused) {\r\n                    _paused = false;\r\n                    _retryAt = null;\r\n                    // flush if we have exceeded the max-size already\r\n                    if (_self._buffer.size() > _self._senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n                        _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n                    }\r\n                    _setupTimer();\r\n                }\r\n            };\r\n            _self.flush = function (isAsync, callBack, sendReason) {\r\n                if (isAsync === void 0) { isAsync = true; }\r\n                if (!_paused) {\r\n                    // Clear the normal schedule timer as we are going to try and flush ASAP\r\n                    _clearScheduledTimer();\r\n                    try {\r\n                        _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                }\r\n            };\r\n            _self.onunloadFlush = function () {\r\n                if (!_paused) {\r\n                    if ((_self._senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */]() === false || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() === false) && isBeaconsSupported()) {\r\n                        try {\r\n                            _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n                        }\r\n                        catch (e) {\r\n                            _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                        }\r\n                    }\r\n                    else {\r\n                        _self.flush();\r\n                    }\r\n                }\r\n            };\r\n            _self.addHeader = function (name, value) {\r\n                _headers[name] = value;\r\n            };\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                if (_self.isInitialized()) {\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n                }\r\n                _base.initialize(config, core, extensions, pluginChain);\r\n                var ctx = _self._getTelCtx();\r\n                var identifier = _self.identifier;\r\n                _serializer = new Serializer(core.logger);\r\n                _consecutiveErrors = 0;\r\n                _retryAt = null;\r\n                _lastSend = 0;\r\n                _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n                _stamp_specific_redirects = 0;\r\n                var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n                _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n                _offlineListener = createOfflineListener(_evtNamespace);\r\n                // TODO v3.x: Change the ISenderConfig to not be function calls\r\n                var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n                objForEachKey(defaultConfig, function (field, value) {\r\n                    _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][field] = function () {\r\n                        var theValue = ctx.getConfig(identifier, field, value());\r\n                        if (!theValue && field === \"endpointUrl\") {\r\n                            // Use the default value (handles empty string in the configuration)\r\n                            theValue = value();\r\n                        }\r\n                        return theValue;\r\n                    };\r\n                });\r\n                _self._buffer = (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENABLE_SESSION_STORA4 /* @min:%2eenableSessionStorageBuffer */]() && utlCanUseSessionStorage())\r\n                    ? new SessionStorageSendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]) : new ArraySendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]);\r\n                _self._sample = new Sample(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */](), diagLog);\r\n                if (!_validateInstrumentationKey(config)) {\r\n                    _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n                }\r\n                if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders()[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    arrForEach(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */](), function (customHeader) {\r\n                        _this.addHeader(customHeader.header, customHeader.value);\r\n                    });\r\n                }\r\n                var senderConfig = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */];\r\n                var sendPostFunc = null;\r\n                if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n                    sendPostFunc = _xdrSender; // IE 8 and 9\r\n                }\r\n                else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n                    sendPostFunc = _xhrSender;\r\n                }\r\n                if (!sendPostFunc && isFetchSupported()) {\r\n                    sendPostFunc = _fetchSender;\r\n                }\r\n                // always fallback to XHR\r\n                _fallbackSender = sendPostFunc || _xhrSender;\r\n                if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() && isBeaconsSupported()) {\r\n                    // Config is set to always used beacon sending\r\n                    sendPostFunc = _beaconSender;\r\n                }\r\n                _self[_DYN__SENDER /* @min:%2e_sender */] = sendPostFunc || _xhrSender;\r\n                if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:%2eonunloadDisableFetch */]() && isFetchSupported(true)) {\r\n                    // Try and use the fetch with keepalive\r\n                    _syncUnloadSender = _fetchKeepAliveSender;\r\n                }\r\n                else if (isBeaconsSupported()) {\r\n                    // Try and use sendBeacon\r\n                    _syncUnloadSender = _beaconSender;\r\n                }\r\n                else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n                    _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n                }\r\n                else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n                    _syncUnloadSender = _xhrSender;\r\n                }\r\n                else {\r\n                    _syncUnloadSender = _fallbackSender;\r\n                }\r\n            };\r\n            _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n                itemCtx = _self._getTelCtx(itemCtx);\r\n                var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n                try {\r\n                    // if master off switch is set, don't send any data\r\n                    if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n                        // Do not send/save data\r\n                        return;\r\n                    }\r\n                    // validate input\r\n                    if (!telemetryItem) {\r\n                        _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n                        return;\r\n                    }\r\n                    // validate event\r\n                    if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n                        _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n                        return;\r\n                    }\r\n                    if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n                        // Default\r\n                        telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n                    }\r\n                    // ensure a sender was constructed\r\n                    if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n                        _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n                        return;\r\n                    }\r\n                    // check if this item should be sampled in, else add sampleRate tag\r\n                    if (!_isSampledIn(telemetryItem)) {\r\n                        // Item is sampled out, do not send it\r\n                        _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n                        return;\r\n                    }\r\n                    else {\r\n                        telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n                    }\r\n                    var convertUndefined = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */]() || undefined;\r\n                    // construct an envelope that Application Insights endpoint can understand\r\n                    // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n                    var defaultEnvelopeIkey = telemetryItem.iKey || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]();\r\n                    var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, convertUndefined);\r\n                    if (!aiEnvelope_1) {\r\n                        _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n                        return;\r\n                    }\r\n                    var doNotSendItem_1 = false;\r\n                    // this is for running in legacy mode, where customer may already have a custom initializer present\r\n                    if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n                        arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n                            try {\r\n                                if (callBack && callBack(aiEnvelope_1) === false) {\r\n                                    doNotSendItem_1 = true;\r\n                                    _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n                                }\r\n                            }\r\n                            catch (e) {\r\n                                // log error but dont stop executing rest of the telemetry initializers\r\n                                // doNotSendItem = true;\r\n                                _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n                            }\r\n                        });\r\n                        delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n                    }\r\n                    if (doNotSendItem_1) {\r\n                        return; // do not send, no need to execute next plugin\r\n                    }\r\n                    // check if the incoming payload is too large, truncate if necessary\r\n                    var payload = _serializer.serialize(aiEnvelope_1);\r\n                    // flush if we would exceed the max-size limit by adding this item\r\n                    var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                    var bufferSize = buffer.size();\r\n                    if ((bufferSize + payload[_DYN_LENGTH /* @min:%2elength */]) > _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n                        _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n                    }\r\n                    // enqueue the payload\r\n                    buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n                    // ensure an invocation timeout is set\r\n                    _setupTimer();\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n                // hand off the telemetry item to the next plugin\r\n                _self.processNext(telemetryItem, itemCtx);\r\n            };\r\n            /**\r\n             * xhr state changes\r\n             */\r\n            _self[_DYN__XHR_READY_STATE_CHA6 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {\r\n                if (xhr.readyState === 4) {\r\n                    _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n                }\r\n            };\r\n            /**\r\n             * Immediately send buffered data\r\n             * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n             * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n             */\r\n            _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n                if (async === void 0) { async = true; }\r\n                if (!_paused) {\r\n                    try {\r\n                        var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                        // Send data only if disableTelemetry is false\r\n                        if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n                            if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n                                var payload = buffer.getItems();\r\n                                _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n                                // invoke send\r\n                                if (forcedSender) {\r\n                                    forcedSender.call(_this, payload, async);\r\n                                }\r\n                                else {\r\n                                    _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n                                }\r\n                            }\r\n                            // update lastSend time to enable throttling\r\n                            _lastSend = +new Date;\r\n                        }\r\n                        else {\r\n                            buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n                        }\r\n                        _clearScheduledTimer();\r\n                    }\r\n                    catch (e) {\r\n                        /* Ignore this error for IE under v10 */\r\n                        var ieVer = getIEVersion();\r\n                        if (!ieVer || ieVer > 9) {\r\n                            _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                _self.onunloadFlush();\r\n                _offlineListener.unload();\r\n                _initDefaults();\r\n            };\r\n            /**\r\n             * error handler\r\n             */\r\n            _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n                _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n                _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n            };\r\n            /**\r\n             * partial success handler\r\n             */\r\n            _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n                var failed = [];\r\n                var retry = [];\r\n                // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n                var errors = results.errors.reverse();\r\n                for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n                    var error = errors_1[_i];\r\n                    var extracted = payload.splice(error.index, 1)[0];\r\n                    if (_isRetriable(error.statusCode)) {\r\n                        retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n                    }\r\n                    else {\r\n                        // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n                        failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n                    }\r\n                }\r\n                if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n                }\r\n                if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, _formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n                }\r\n                if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _resendPayload(retry);\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n                        \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n                        \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n                }\r\n            };\r\n            /**\r\n             * success handler\r\n             */\r\n            _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n                _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n            };\r\n            /**\r\n             * xdr state changes\r\n             */\r\n            _self._xdrOnLoad = function (xdr, payload) {\r\n                var responseText = _getResponseText(xdr);\r\n                if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n                    _consecutiveErrors = 0;\r\n                    _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n                }\r\n                else {\r\n                    var results = _parseResponse(responseText);\r\n                    if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n                        && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n                        _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n                    }\r\n                    else {\r\n                        _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr));\r\n                    }\r\n                }\r\n            };\r\n            function _isSampledIn(envelope) {\r\n                return _self._sample.isSampledIn(envelope);\r\n            }\r\n            function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n                var response = null;\r\n                if (!_self._appId) {\r\n                    response = _parseResponse(res);\r\n                    if (response && response.appId) {\r\n                        _self._appId = response.appId;\r\n                    }\r\n                }\r\n                if ((status < 200 || status >= 300) && status !== 0) {\r\n                    // Update End Point url if permanent redirect or moved permanently\r\n                    // Updates the end point url before retry\r\n                    if (status === 301 || status === 307 || status === 308) {\r\n                        if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n                            _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n                            return;\r\n                        }\r\n                    }\r\n                    if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]() && _isRetriable(status)) {\r\n                        _resendPayload(payload);\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n                            \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n                    }\r\n                    else {\r\n                        _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n                    }\r\n                }\r\n                else if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n                    // Note: Don't check for status == 0, since adblock gives this code\r\n                    if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n                        var offlineBackOffMultiplier = 10; // arbritrary number\r\n                        _resendPayload(payload, offlineBackOffMultiplier);\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n                    }\r\n                }\r\n                else {\r\n                    // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n                    // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n                    _checkAndUpdateEndPointUrl(responseUrl);\r\n                    if (status === 206) {\r\n                        if (!response) {\r\n                            response = _parseResponse(res);\r\n                        }\r\n                        if (response && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n                            _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n                        }\r\n                        else {\r\n                            _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n                        }\r\n                    }\r\n                    else {\r\n                        _consecutiveErrors = 0;\r\n                        _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n                    }\r\n                }\r\n            }\r\n            function _checkAndUpdateEndPointUrl(responseUrl) {\r\n                // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n                if (_stamp_specific_redirects >= 10) {\r\n                    //  _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n                    //  _stamp_specific_redirects = 0;\r\n                    return false;\r\n                }\r\n                if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n                    if (responseUrl !== _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]()) {\r\n                        _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = function () { return responseUrl; };\r\n                        ++_stamp_specific_redirects;\r\n                        return true;\r\n                    }\r\n                }\r\n                return false;\r\n            }\r\n            function _doUnloadSend(payload, isAsync) {\r\n                if (_syncUnloadSender) {\r\n                    // We are unloading so always call the sender with sync set to false\r\n                    _syncUnloadSender(payload, false);\r\n                }\r\n                else {\r\n                    // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n                    _beaconSender(payload, isAsync);\r\n                }\r\n            }\r\n            function _doBeaconSend(payload) {\r\n                var nav = getNavigator();\r\n                var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                var url = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n                var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n                // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n                // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n                var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n                // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n                var queued = nav.sendBeacon(url, plainTextBatch);\r\n                if (queued) {\r\n                    buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n                    // no response from beaconSender, clear buffer\r\n                    _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n                }\r\n                return queued;\r\n            }\r\n            /**\r\n             * Send Beacon API request\r\n             * @param payload {string} - The data payload to be sent.\r\n             * @param isAsync {boolean} - not used\r\n             * Note: Beacon API does not support custom headers and we are not able to get\r\n             * appId from the backend for the correct correlation.\r\n             */\r\n            function _beaconSender(payload, isAsync) {\r\n                if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n                    if (!_doBeaconSend(payload)) {\r\n                        // Failed to send entire payload so try and split data and try to send as much events as possible\r\n                        var droppedPayload = [];\r\n                        for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                            var thePayload = payload[lp];\r\n                            if (!_doBeaconSend([thePayload])) {\r\n                                // Can't send anymore, so split the batch and drop the rest\r\n                                droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n                            }\r\n                        }\r\n                        if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                            _fallbackSender && _fallbackSender(droppedPayload, true);\r\n                            _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            /**\r\n             * Send XMLHttpRequest\r\n             * @param payload {string} - The data payload to be sent.\r\n             * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n             */\r\n            function _xhrSender(payload, isAsync) {\r\n                var xhr = new XMLHttpRequest();\r\n                var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n                try {\r\n                    xhr[DisabledPropertyName] = true;\r\n                }\r\n                catch (e) {\r\n                    // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n                    // cause the request to fail and we no telemetry would be sent\r\n                }\r\n                xhr.open(\"POST\", endPointUrl, isAsync);\r\n                xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n                // append Sdk-Context request header only in case of breeze endpoint\r\n                if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n                    xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n                }\r\n                arrForEach(objKeys(_headers), function (headerName) {\r\n                    xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);\r\n                });\r\n                xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH /* @min:%2elength */]); };\r\n                xhr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXhr(xhr), event); };\r\n                // compose an array of payloads\r\n                var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n                xhr.send(batch);\r\n                _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n            }\r\n            function _fetchKeepAliveSender(payload, isAsync) {\r\n                if (isArray(payload)) {\r\n                    var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n                    for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                        payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];\r\n                    }\r\n                    if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n                        _doFetchSender(payload, false);\r\n                    }\r\n                    else if (isBeaconsSupported()) {\r\n                        // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n                        _beaconSender(payload, isAsync);\r\n                    }\r\n                    else {\r\n                        // Payload is going to be too big so just try and send via XHR\r\n                        _fallbackSender && _fallbackSender(payload, true);\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n                    }\r\n                }\r\n            }\r\n            /**\r\n             * Send fetch API request\r\n             * @param payload {string} - The data payload to be sent.\r\n             * @param isAsync {boolean} - not used\r\n             */\r\n            function _fetchSender(payload, isAsync) {\r\n                _doFetchSender(payload, true);\r\n            }\r\n            /**\r\n             * Send fetch API request\r\n             * @param payload {string} - The data payload to be sent.\r\n             * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n             */\r\n            function _doFetchSender(payload, isAsync) {\r\n                var _a;\r\n                var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n                var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n                var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n                var requestHeaders = new Headers();\r\n                var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n                var ignoreResponse = false;\r\n                var responseHandled = false;\r\n                // append Sdk-Context request header only in case of breeze endpoint\r\n                if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n                    requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n                }\r\n                arrForEach(objKeys(_headers), function (headerName) {\r\n                    requestHeaders.append(headerName, _headers[headerName]);\r\n                });\r\n                var init = (_a = {\r\n                        method: \"POST\",\r\n                        headers: requestHeaders,\r\n                        body: plainTextBatch\r\n                    },\r\n                    _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n                ,\r\n                    _a);\r\n                if (!isAsync) {\r\n                    init.keepalive = true;\r\n                    // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n                    // just like beacon send assume that the events have been accepted and processed\r\n                    ignoreResponse = true;\r\n                    _syncFetchPayload += batchLength;\r\n                }\r\n                var request = new Request(endPointUrl, init);\r\n                try {\r\n                    // Also try and tag the request (just in case the value in init is not copied over)\r\n                    request[DisabledPropertyName] = true;\r\n                }\r\n                catch (e) {\r\n                    // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n                    // cause the request to fail and we no telemetry would be sent\r\n                }\r\n                _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n                try {\r\n                    fetch(request).then(function (response) {\r\n                        if (!isAsync) {\r\n                            _syncFetchPayload -= batchLength;\r\n                            batchLength = 0;\r\n                        }\r\n                        if (!responseHandled) {\r\n                            responseHandled = true;\r\n                            /**\r\n                             * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n                             * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n                             * or if anything prevented the request from completing.\r\n                             */\r\n                            if (!response.ok) {\r\n                                _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response.statusText);\r\n                            }\r\n                            else {\r\n                                response.text().then(function (text) {\r\n                                    _checkResponsStatus(response.status, payload, response.url, payload[_DYN_LENGTH /* @min:%2elength */], response.statusText, text);\r\n                                });\r\n                            }\r\n                        }\r\n                    })[\"catch\"](function (error) {\r\n                        if (!isAsync) {\r\n                            _syncFetchPayload -= batchLength;\r\n                            batchLength = 0;\r\n                        }\r\n                        if (!responseHandled) {\r\n                            responseHandled = true;\r\n                            _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, error.message);\r\n                        }\r\n                    });\r\n                }\r\n                catch (e) {\r\n                    if (!responseHandled) {\r\n                        _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, dumpObj(e));\r\n                    }\r\n                }\r\n                if (ignoreResponse && !responseHandled) {\r\n                    // Assume success during unload processing as we most likely won't get the response\r\n                    responseHandled = true;\r\n                    _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n                }\r\n            }\r\n            /**\r\n             * Parses the response from the backend.\r\n             * @param response - XMLHttpRequest or XDomainRequest response\r\n             */\r\n            function _parseResponse(response) {\r\n                try {\r\n                    if (response && response !== \"\") {\r\n                        var result = getJSON().parse(response);\r\n                        if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&\r\n                            result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n                            return result;\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n                        response: response\r\n                    });\r\n                }\r\n                return null;\r\n            }\r\n            /**\r\n             * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n             * @param payload\r\n             */\r\n            function _resendPayload(payload, linearFactor) {\r\n                if (linearFactor === void 0) { linearFactor = 1; }\r\n                if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n                    return;\r\n                }\r\n                var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n                _consecutiveErrors++;\r\n                for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n                    var item = payload_1[_i];\r\n                    buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n                }\r\n                // setup timer\r\n                _setRetryTime(linearFactor);\r\n                _setupTimer();\r\n            }\r\n            /**\r\n             * Calculates the time to wait before retrying in case of an error based on\r\n             * http://en.wikipedia.org/wiki/Exponential_backoff\r\n             */\r\n            function _setRetryTime(linearFactor) {\r\n                var SlotDelayInSeconds = 10;\r\n                var delayInSeconds;\r\n                if (_consecutiveErrors <= 1) {\r\n                    delayInSeconds = SlotDelayInSeconds;\r\n                }\r\n                else {\r\n                    var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n                    // tslint:disable-next-line:insecure-random\r\n                    var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n                    backOffDelay = linearFactor * backOffDelay;\r\n                    delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n                }\r\n                // TODO: Log the backoff time like the C# version does.\r\n                var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n                // TODO: Log the retry at time like the C# version does.\r\n                _retryAt = retryAfterTimeSpan;\r\n            }\r\n            /**\r\n             * Sets up the timer which triggers actually sending the data.\r\n             */\r\n            function _setupTimer() {\r\n                if (!_timeoutHandle && !_paused) {\r\n                    var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n                    var timerValue = Math.max(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */](), retryInterval);\r\n                    _timeoutHandle = setTimeout(function () {\r\n                        _timeoutHandle = null;\r\n                        _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n                    }, timerValue);\r\n                }\r\n            }\r\n            function _clearScheduledTimer() {\r\n                clearTimeout(_timeoutHandle);\r\n                _timeoutHandle = null;\r\n                _retryAt = null;\r\n            }\r\n            /**\r\n             * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n             * @param statusCode\r\n             */\r\n            function _isRetriable(statusCode) {\r\n                return statusCode === 401 // Unauthorized\r\n                    || statusCode === 403 // Forbidden\r\n                    || statusCode === 408 // Timeout\r\n                    || statusCode === 429 // Too many requests.\r\n                    || statusCode === 500 // Internal server error.\r\n                    || statusCode === 502 // Bad Gateway.\r\n                    || statusCode === 503 // Service unavailable.\r\n                    || statusCode === 504; // Gateway timeout.\r\n            }\r\n            function _formatErrorMessageXhr(xhr, message) {\r\n                if (xhr) {\r\n                    return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n                }\r\n                return message;\r\n            }\r\n            /**\r\n             * Send XDomainRequest\r\n             * @param payload {string} - The data payload to be sent.\r\n             * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n             *\r\n             * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n             * to maintain consistency with the xhrSender's contract\r\n             * Note: XDomainRequest does not support custom headers and we are not able to get\r\n             * appId from the backend for the correct correlation.\r\n             */\r\n            function _xdrSender(payload, isAsync) {\r\n                var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                var _window = getWindow();\r\n                var xdr = new XDomainRequest();\r\n                xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n                xdr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr), event); };\r\n                // XDomainRequest requires the same protocol as the hosting page.\r\n                // If the protocol doesn't match, we can't send the telemetry :(.\r\n                var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n                if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n                        \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n                    buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n                    return;\r\n                }\r\n                var endpointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().replace(/^(https?:)/, \"\");\r\n                xdr.open(\"POST\", endpointUrl);\r\n                // compose an array of payloads\r\n                var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n                xdr.send(batch);\r\n                buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n            }\r\n            function _formatErrorMessageXdr(xdr, message) {\r\n                if (xdr) {\r\n                    return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n                }\r\n                return message;\r\n            }\r\n            // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n            function _getNotifyMgr() {\r\n                var func = \"getNotifyMgr\";\r\n                if (_self.core[func]) {\r\n                    return _self.core[func]();\r\n                }\r\n                // using _self.core['_notificationManager'] for backward compatibility\r\n                return _self.core[\"_notificationManager\"];\r\n            }\r\n            function _notifySendRequest(sendRequest, isAsync) {\r\n                var manager = _getNotifyMgr();\r\n                if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n                    try {\r\n                        manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                }\r\n            }\r\n            /**\r\n             * Validate UUID Format\r\n             * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n             */\r\n            function _validateInstrumentationKey(config) {\r\n                var disableIKeyValidationFlag = isNullOrUndefined(config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */]) ? false : config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */];\r\n                if (disableIKeyValidationFlag) {\r\n                    return true;\r\n                }\r\n                var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n                var regexp = new RegExp(UUID_Regex);\r\n                return regexp.test(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n            }\r\n            function _initDefaults() {\r\n                _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n                _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n                _self._appId = null;\r\n                _self._sample = null;\r\n                _headers = {};\r\n                _offlineListener = null;\r\n                _consecutiveErrors = 0;\r\n                _retryAt = null;\r\n                _lastSend = null;\r\n                _paused = false;\r\n                _timeoutHandle = null;\r\n                _serializer = null;\r\n                _stamp_specific_redirects = 0;\r\n                _syncFetchPayload = 0;\r\n                _fallbackSender = null;\r\n                _syncUnloadSender = null;\r\n                _evtNamespace = null;\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n    Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n        var envelope;\r\n        if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n            envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n        }\r\n        else {\r\n            envelope = orig;\r\n        }\r\n        var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n        return creator(logger, envelope, convertUndefined);\r\n    };\r\n    /**\r\n     * Pause the sending (transmission) of events, this will cause all events to be batched only until the maximum limits are\r\n     * hit at which point new events are dropped. Will also cause events to NOT be sent during page unload, so if Session storage\r\n     * is disabled events will be lost.\r\n     * SessionStorage Limit is 2000 events, In-Memory (Array) Storage is 10,000 events (can be configured via the eventsLimitInMem).\r\n     */\r\n    Sender.prototype.pause = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Resume the sending (transmission) of events, this will restart the timer and any batched events will be sent using the normal\r\n     * send interval.\r\n     */\r\n    Sender.prototype.resume = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Flush the batched events immediately (not synchronously).\r\n     * Will not flush if the Sender has been paused.\r\n     */\r\n    Sender.prototype.flush = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Flush the batched events synchronously (if possible -- based on configuration).\r\n     * Will not flush if the Send has been paused.\r\n     */\r\n    Sender.prototype.onunloadFlush = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Sender.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Sender.prototype.processTelemetry = function (telemetryItem, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * xhr state changes\r\n     */\r\n    Sender.prototype._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Immediately send buffered data\r\n     * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n     * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n     */\r\n    Sender.prototype.triggerSend = function (async, forcedSender, sendReason) {\r\n        if (async === void 0) { async = true; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * error handler\r\n     */\r\n    Sender.prototype._onError = function (payload, message, event) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * partial success handler\r\n     */\r\n    Sender.prototype._onPartialSuccess = function (payload, results) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * success handler\r\n     */\r\n    Sender.prototype._onSuccess = function (payload, countOfItemsInPayload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * xdr state changes\r\n     */\r\n    Sender.prototype._xdrOnLoad = function (xdr, payload) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add header to request\r\n     * @param name   - Header name.\r\n     * @param value  - Header value.\r\n     */\r\n    Sender.prototype.addHeader = function (name, value) {\r\n        // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","import dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n    function Serializer(logger) {\r\n        dynamicProto(Serializer, this, function (_self) {\r\n            /**\r\n             * Serializes the current object to a JSON string.\r\n             */\r\n            _self.serialize = function (input) {\r\n                var output = _serializeObject(input, \"root\");\r\n                try {\r\n                    return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n                }\r\n                catch (e) {\r\n                    // if serialization fails return an empty string\r\n                    _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n                }\r\n            };\r\n            function _serializeObject(source, name) {\r\n                var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n                var output = {};\r\n                if (!source) {\r\n                    _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n                    return output;\r\n                }\r\n                if (source[circularReferenceCheck]) {\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n                    return output;\r\n                }\r\n                if (!source.aiDataContract) {\r\n                    // special case for measurements/properties/tags\r\n                    if (name === \"measurements\") {\r\n                        output = _serializeStringMap(source, \"number\", name);\r\n                    }\r\n                    else if (name === \"properties\") {\r\n                        output = _serializeStringMap(source, \"string\", name);\r\n                    }\r\n                    else if (name === \"tags\") {\r\n                        output = _serializeStringMap(source, \"string\", name);\r\n                    }\r\n                    else if (isArray(source)) {\r\n                        output = _serializeArray(source, name);\r\n                    }\r\n                    else {\r\n                        _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n                        try {\r\n                            // verify that the object can be stringified\r\n                            getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n                            output = source;\r\n                        }\r\n                        catch (e) {\r\n                            // if serialization fails return an empty string\r\n                            _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n                        }\r\n                    }\r\n                    return output;\r\n                }\r\n                source[circularReferenceCheck] = true;\r\n                objForEachKey(source.aiDataContract, function (field, contract) {\r\n                    var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n                    var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n                    var isArray = contract & 2 /* FieldType.Array */;\r\n                    var isPresent = source[field] !== undefined;\r\n                    var isObj = isObject(source[field]) && source[field] !== null;\r\n                    if (isRequired && !isPresent && !isArray) {\r\n                        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n                        // If not in debug mode, continue and hope the error is permissible\r\n                    }\r\n                    else if (!isHidden) { // Don't serialize hidden fields\r\n                        var value = void 0;\r\n                        if (isObj) {\r\n                            if (isArray) {\r\n                                // special case; recurse on each object in the source array\r\n                                value = _serializeArray(source[field], field);\r\n                            }\r\n                            else {\r\n                                // recurse on the source object in this field\r\n                                value = _serializeObject(source[field], field);\r\n                            }\r\n                        }\r\n                        else {\r\n                            // assign the source field to the output even if undefined or required\r\n                            value = source[field];\r\n                        }\r\n                        // only emit this field if the value is defined\r\n                        if (value !== undefined) {\r\n                            output[field] = value;\r\n                        }\r\n                    }\r\n                });\r\n                delete source[circularReferenceCheck];\r\n                return output;\r\n            }\r\n            function _serializeArray(sources, name) {\r\n                var output;\r\n                if (!!sources) {\r\n                    if (!isArray(sources)) {\r\n                        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n                    }\r\n                    else {\r\n                        output = [];\r\n                        for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n                            var source = sources[i];\r\n                            var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n                            output[_DYN_PUSH /* @min:%2epush */](item);\r\n                        }\r\n                    }\r\n                }\r\n                return output;\r\n            }\r\n            function _serializeStringMap(map, expectedType, name) {\r\n                var output;\r\n                if (map) {\r\n                    output = {};\r\n                    objForEachKey(map, function (field, value) {\r\n                        if (expectedType === \"string\") {\r\n                            if (value === undefined) {\r\n                                output[field] = \"undefined\";\r\n                            }\r\n                            else if (value === null) {\r\n                                output[field] = \"null\";\r\n                            }\r\n                            else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n                                output[field] = \"invalid field: toString() is not defined.\";\r\n                            }\r\n                            else {\r\n                                output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                            }\r\n                        }\r\n                        else if (expectedType === \"number\") {\r\n                            if (value === undefined) {\r\n                                output[field] = \"undefined\";\r\n                            }\r\n                            else if (value === null) {\r\n                                output[field] = \"null\";\r\n                            }\r\n                            else {\r\n                                var num = parseFloat(value);\r\n                                if (isNaN(num)) {\r\n                                    output[field] = \"NaN\";\r\n                                }\r\n                                else {\r\n                                    output[field] = num;\r\n                                }\r\n                            }\r\n                        }\r\n                        else {\r\n                            output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n                            _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n                        }\r\n                    });\r\n                }\r\n                return output;\r\n            }\r\n        });\r\n    }\r\n    /**\r\n     * Serializes the current object to a JSON string.\r\n     */\r\n    Serializer.prototype.serialize = function (input) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n    function HashCodeScoreGenerator() {\r\n    }\r\n    HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n        var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n        return score * 100;\r\n    };\r\n    HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n        if (input === \"\") {\r\n            return 0;\r\n        }\r\n        while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n            input = input.concat(input);\r\n        }\r\n        // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n        var hash = 5381;\r\n        for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n            hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n            // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n            // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n            hash = hash & hash;\r\n        }\r\n        return Math.abs(hash);\r\n    };\r\n    // We're using 32 bit math, hence max value is (2^31 - 1)\r\n    HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n    return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n    function SamplingScoreGenerator() {\r\n        var _self = this;\r\n        var hashCodeGenerator = new HashCodeScoreGenerator();\r\n        var keys = new ContextTagKeys();\r\n        _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n            var score = 0;\r\n            if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n                score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n            }\r\n            else if (item.ext && item.ext.user && item.ext.user.id) {\r\n                score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n            }\r\n            else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n                score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n            }\r\n            else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n                score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n            }\r\n            else {\r\n                // tslint:disable-next-line:insecure-random\r\n                score = (Math.random() * 100);\r\n            }\r\n            return score;\r\n        };\r\n    }\r\n    return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n    function Sample(sampleRate, logger) {\r\n        // We're using 32 bit math, hence max value is (2^31 - 1)\r\n        this.INT_MAX_VALUE = 2147483647;\r\n        var _logger = logger || safeGetLogger(null);\r\n        if (sampleRate > 100 || sampleRate < 0) {\r\n            _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n            sampleRate = 100;\r\n        }\r\n        this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n        this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n    }\r\n    /**\r\n    * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n    */\r\n    Sample.prototype.isSampledIn = function (envelope) {\r\n        var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n        var isSampledIn = false;\r\n        if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n            return true;\r\n        }\r\n        else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n            // exclude MetricData telemetry from sampling\r\n            return true;\r\n        }\r\n        isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n        return isSampledIn;\r\n    };\r\n    return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n    if (!connectionString) {\r\n        return {};\r\n    }\r\n    var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n    var result = arrReduce(kvPairs, function (fields, kv) {\r\n        var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n        if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n            var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n            var value = kvParts[1];\r\n            fields[key] = value;\r\n        }\r\n        return fields;\r\n    }, {});\r\n    if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        // this is a valid connection string, so parse the results\r\n        if (result.endpointsuffix) {\r\n            // use endpoint suffix where overrides are not provided\r\n            var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n            result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n        }\r\n        // apply the default endpoints\r\n        result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n    }\r\n    return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n    parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel = createEnumStyle({\r\n    Verbose: 0 /* eSeverityLevel.Verbose */,\r\n    Information: 1 /* eSeverityLevel.Information */,\r\n    Warning: 2 /* eSeverityLevel.Warning */,\r\n    Error: 3 /* eSeverityLevel.Error */,\r\n    Critical: 4 /* eSeverityLevel.Critical */\r\n});\r\n//# sourceMappingURL=SeverityLevel.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_EXTENSION_CONFIG } from \"../__DynamicConstants\";\r\nvar ConfigurationManager = /** @class */ (function () {\r\n    function ConfigurationManager() {\r\n    }\r\n    ConfigurationManager.getConfig = function (config, field, identifier, defaultValue) {\r\n        if (defaultValue === void 0) { defaultValue = false; }\r\n        var configValue;\r\n        if (identifier && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */] && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier] && !isNullOrUndefined(config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field])) {\r\n            configValue = config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field];\r\n        }\r\n        else {\r\n            configValue = config[field];\r\n        }\r\n        return !isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n    };\r\n    return ConfigurationManager;\r\n}());\r\nexport { ConfigurationManager };\r\n//# sourceMappingURL=IConfig.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// // Licensed under the MIT License.\r\nimport { _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_FLUSH, _DYN_IDENTIFIER, _DYN_LENGTH, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { STR_PRIORITY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, core) {\r\n    if (queue && isArray(queue) && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        queue = queue.sort(function (a, b) {\r\n            return a[STR_PRIORITY /* @min:%2epriority */] - b[STR_PRIORITY /* @min:%2epriority */];\r\n        });\r\n        arrForEach(queue, function (queueItem) {\r\n            if (queueItem[STR_PRIORITY /* @min:%2epriority */] < ChannelControllerPriority) {\r\n                throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n            }\r\n        });\r\n        channelQueue[_DYN_PUSH /* @min:%2epush */]({\r\n            queue: objFreeze(queue),\r\n            chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG /* @min:%2econfig */], core)\r\n        });\r\n    }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n    function _getTelCtx() {\r\n        return createProcessTelemetryContext(null, core[_DYN_CONFIG /* @min:%2econfig */], core, null);\r\n    }\r\n    function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n        var waiting = theChannels ? (theChannels[_DYN_LENGTH /* @min:%2elength */] + 1) : 1;\r\n        function _runChainOnComplete() {\r\n            waiting--;\r\n            if (waiting === 0) {\r\n                onComplete && onComplete();\r\n                onComplete = null;\r\n            }\r\n        }\r\n        if (waiting > 0) {\r\n            arrForEach(theChannels, function (channels) {\r\n                // pass on to first item in queue\r\n                if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var channelChain = channels.chain;\r\n                    var chainCtx = itemCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](channelChain);\r\n                    chainCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_runChainOnComplete);\r\n                    // Cause this chain to start processing\r\n                    processFn(chainCtx);\r\n                }\r\n                else {\r\n                    waiting--;\r\n                }\r\n            });\r\n        }\r\n        _runChainOnComplete();\r\n    }\r\n    function _doUpdate(updateCtx, updateState) {\r\n        var theUpdateState = updateState || {\r\n            reason: 0 /* TelemetryUpdateReason.Unknown */\r\n        };\r\n        _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n            chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n        }, function () {\r\n            updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n        });\r\n        return true;\r\n    }\r\n    function _doTeardown(unloadCtx, unloadState) {\r\n        var theUnloadState = unloadState || {\r\n            reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n            isAsync: false\r\n        };\r\n        _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n            chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n        }, function () {\r\n            unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n            isInitialized = false;\r\n        });\r\n        return true;\r\n    }\r\n    function _getChannel(pluginIdentifier) {\r\n        var thePlugin = null;\r\n        if (channelQueue && channelQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            arrForEach(channelQueue, function (channels) {\r\n                // pass on to first item in queue\r\n                if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    arrForEach(channels.queue, function (ext) {\r\n                        if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier) {\r\n                            thePlugin = ext;\r\n                            // Cause arrForEach to stop iterating\r\n                            return -1;\r\n                        }\r\n                    });\r\n                    if (thePlugin) {\r\n                        // Cause arrForEach to stop iterating\r\n                        return -1;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        return thePlugin;\r\n    }\r\n    var isInitialized = false;\r\n    var channelController = {\r\n        identifier: \"ChannelControllerPlugin\",\r\n        priority: ChannelControllerPriority,\r\n        initialize: function (config, core, extensions, pluginChain) {\r\n            isInitialized = true;\r\n            arrForEach(channelQueue, function (channels) {\r\n                if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n                }\r\n            });\r\n        },\r\n        isInitialized: function () {\r\n            return isInitialized;\r\n        },\r\n        processTelemetry: function (item, itemCtx) {\r\n            _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n                chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n            }, function () {\r\n                itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n            });\r\n        },\r\n        update: _doUpdate,\r\n        pause: function () {\r\n            _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n                chainCtx.iterate(function (plugin) {\r\n                    plugin.pause && plugin.pause();\r\n                });\r\n            }, null);\r\n        },\r\n        resume: function () {\r\n            _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n                chainCtx.iterate(function (plugin) {\r\n                    plugin.resume && plugin.resume();\r\n                });\r\n            }, null);\r\n        },\r\n        teardown: _doTeardown,\r\n        getChannel: _getChannel,\r\n        flush: function (isAsync, callBack, sendReason, cbTimeout) {\r\n            // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n            var waiting = 1;\r\n            var doneIterating = false;\r\n            var cbTimer = null;\r\n            cbTimeout = cbTimeout || 5000;\r\n            function doCallback() {\r\n                waiting--;\r\n                if (doneIterating && waiting === 0) {\r\n                    if (cbTimer) {\r\n                        clearTimeout(cbTimer);\r\n                        cbTimer = null;\r\n                    }\r\n                    callBack && callBack(doneIterating);\r\n                    callBack = null;\r\n                }\r\n            }\r\n            _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n                chainCtx.iterate(function (plugin) {\r\n                    if (plugin[_DYN_FLUSH /* @min:%2eflush */]) {\r\n                        waiting++;\r\n                        var handled_1 = false;\r\n                        // Not all channels will call this callback for every scenario\r\n                        if (!plugin[_DYN_FLUSH /* @min:%2eflush */](isAsync, function () {\r\n                            handled_1 = true;\r\n                            doCallback();\r\n                        }, sendReason)) {\r\n                            if (!handled_1) {\r\n                                // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n                                // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n                                // followup function (such as unloading)\r\n                                if (isAsync && cbTimer == null) {\r\n                                    cbTimer = setTimeout(function () {\r\n                                        cbTimer = null;\r\n                                        doCallback();\r\n                                    }, cbTimeout);\r\n                                }\r\n                                else {\r\n                                    doCallback();\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n            }, function () {\r\n                doneIterating = true;\r\n                doCallback();\r\n            });\r\n            return true;\r\n        },\r\n        _setQueue: function (queue) {\r\n            channelQueue = queue;\r\n        }\r\n    };\r\n    return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, core) {\r\n    var channelQueue = [];\r\n    if (channels) {\r\n        // Add and sort the configuration channel queues\r\n        arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });\r\n    }\r\n    if (extensions) {\r\n        // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n        var extensionQueue_1 = [];\r\n        arrForEach(extensions, function (plugin) {\r\n            if (plugin[STR_PRIORITY /* @min:%2epriority */] > ChannelControllerPriority) {\r\n                extensionQueue_1[_DYN_PUSH /* @min:%2epush */](plugin);\r\n            }\r\n        });\r\n        _addChannelQueue(channelQueue, extensionQueue_1, core);\r\n    }\r\n    return channelQueue;\r\n}\r\n//# sourceMappingURL=ChannelController.js.map","// // Copyright (c) Microsoft Corporation. All rights reserved.\r\n// // Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n    __extends(TelemetryInitializerPlugin, _super);\r\n    function TelemetryInitializerPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.identifier = \"TelemetryInitializerPlugin\";\r\n        _this.priority = 199;\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var _id;\r\n        var _initializers;\r\n        _initDefaults();\r\n        dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n            _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n                var theInitializer = {\r\n                    id: _id++,\r\n                    fn: telemetryInitializer\r\n                };\r\n                _initializers[_DYN_PUSH /* @min:%2epush */](theInitializer);\r\n                var handler = {\r\n                    remove: function () {\r\n                        arrForEach(_initializers, function (initializer, idx) {\r\n                            if (initializer.id === theInitializer.id) {\r\n                                _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                                return -1;\r\n                            }\r\n                        });\r\n                    }\r\n                };\r\n                return handler;\r\n            };\r\n            _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n                var doNotSendItem = false;\r\n                var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n                for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n                    var telemetryInitializer = _initializers[i];\r\n                    if (telemetryInitializer) {\r\n                        try {\r\n                            if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n                                doNotSendItem = true;\r\n                                break;\r\n                            }\r\n                        }\r\n                        catch (e) {\r\n                            // log error but dont stop executing rest of the telemetry initializers\r\n                            // doNotSendItem = true;\r\n                            _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n                        }\r\n                    }\r\n                }\r\n                if (!doNotSendItem) {\r\n                    _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n                }\r\n            };\r\n            _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n                _initDefaults();\r\n            };\r\n        });\r\n        function _initDefaults() {\r\n            _id = 0;\r\n            _initializers = [];\r\n        }\r\n        return _this;\r\n    }\r\n    /**\r\n     * Add a telemetry processor to decorate or drop telemetry events.\r\n     * @param telemetryInitializer - The Telemetry Initializer function\r\n     * @returns - A ITelemetryInitializerHandler to enable the initializer to be removed\r\n     */\r\n    TelemetryInitializerPlugin.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    TelemetryInitializerPlugin.prototype.processTelemetry = function (env, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n//# sourceMappingURL=TelemetryInitializerPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { __spreadArray } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CONFIG, _DYN_FLUSH, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_ENABLED, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN__EXTENSIONS } from \"../__DynamicConstants\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { arrForEach, arrIndexOf, getCfgValue, getSetValue, isFunction, isNullOrUndefined, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY } from \"./InternalConstants\";\r\nimport { PerfManager, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n    // Have the Diagnostic Logger default to log critical errors to the console\r\n    loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n    return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n    var _a;\r\n    // Concat all available extensions\r\n    var coreExtensions = [];\r\n    // Check if any two extensions have the same priority, then warn to console\r\n    // And extract the local extensions from the\r\n    var extPriorities = {};\r\n    // Extension validation\r\n    arrForEach(allExtensions, function (ext) {\r\n        // Check for ext.initialize\r\n        if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n            throwError(strValidationError);\r\n        }\r\n        var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n        var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n        if (ext && extPriority) {\r\n            if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n                _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n            }\r\n            else {\r\n                // set a value\r\n                extPriorities[extPriority] = identifier;\r\n            }\r\n        }\r\n        // Split extensions to core and channelController\r\n        if (!extPriority || extPriority < channelPriority) {\r\n            // Add to core extension that will be managed by BaseCore\r\n            coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n        }\r\n    });\r\n    return _a = {\r\n            all: allExtensions\r\n        },\r\n        _a[STR_CORE /* @min:core */] = coreExtensions,\r\n        _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n    var exists = false;\r\n    arrForEach(plugins, function (plugin) {\r\n        if (plugin === thePlugin) {\r\n            exists = true;\r\n            return -1;\r\n        }\r\n    });\r\n    return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n    var _a;\r\n    return objCreateFn((_a = {},\r\n        _a[_DYN_ADD_NOTIFICATION_LIS1 /* @min:addNotificationListener */] = function (listener) { },\r\n        _a[_DYN_REMOVE_NOTIFICATION_2 /* @min:removeNotificationListener */] = function (listener) { },\r\n        _a[STR_EVENTS_SENT /* @min:eventsSent */] = function (events) { },\r\n        _a[STR_EVENTS_DISCARDED /* @min:eventsDiscarded */] = function (events, reason) { },\r\n        _a[STR_EVENTS_SEND_REQUEST /* @min:eventsSendRequest */] = function (sendReason, isAsync) { },\r\n        _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n    function BaseCore() {\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var _config;\r\n        var _isInitialized;\r\n        var _eventQueue;\r\n        var _notificationManager;\r\n        var _perfManager;\r\n        var _cfgPerfManager;\r\n        var _cookieManager;\r\n        var _pluginChain;\r\n        var _configExtensions;\r\n        var _coreExtensions;\r\n        var _channelControl;\r\n        var _channelConfig;\r\n        var _channelQueue;\r\n        var _isUnloading;\r\n        var _telemetryInitializerPlugin;\r\n        var _internalLogsEventName;\r\n        var _evtNamespace;\r\n        var _unloadHandlers;\r\n        var _debugListener;\r\n        var _traceCtx;\r\n        /**\r\n         * Internal log poller\r\n         */\r\n        var _internalLogPoller = 0;\r\n        dynamicProto(BaseCore, this, function (_self) {\r\n            // Set the default values (also called during teardown)\r\n            _initDefaults();\r\n            _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n            // Creating the self.initialize = ()\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n                if (_isUnloading) {\r\n                    throwError(strSdkUnloadingError);\r\n                }\r\n                // Make sure core is only initialized once\r\n                if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n                    throwError(\"Core should not be initialized more than once\");\r\n                }\r\n                _config = config || {};\r\n                _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n                if (isNullOrUndefined(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n                    throwError(\"Please provide instrumentation key\");\r\n                }\r\n                _notificationManager = notificationManager;\r\n                // For backward compatibility only\r\n                _self[strNotificationManager] = notificationManager;\r\n                _initDebugListener();\r\n                _initPerfManager();\r\n                // add notification to the extensions in the config so other plugins can access it\r\n                _initExtConfig();\r\n                if (logger) {\r\n                    _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n                }\r\n                var cfgExtensions = getSetValue(_config, STR_EXTENSIONS, []);\r\n                // Extension validation\r\n                _configExtensions = [];\r\n                _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n                _channelConfig = getSetValue(_config, STR_CHANNELS, []);\r\n                _initPluginChain(null);\r\n                if (!_channelQueue || _channelQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n                    throwError(\"No \" + STR_CHANNELS + \" available\");\r\n                }\r\n                _isInitialized = true;\r\n                _self.releaseQueue();\r\n            };\r\n            _self.getTransmissionControls = function () {\r\n                var controls = [];\r\n                if (_channelQueue) {\r\n                    arrForEach(_channelQueue, function (channels) {\r\n                        controls[_DYN_PUSH /* @min:%2epush */](channels.queue);\r\n                    });\r\n                }\r\n                return objFreeze(controls);\r\n            };\r\n            _self.track = function (telemetryItem) {\r\n                // setup default iKey if not passed in\r\n                telemetryItem.iKey = telemetryItem.iKey || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n                // add default timestamp if not passed in\r\n                telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n                // Common Schema 4.0\r\n                telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n                if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n                    // Process the telemetry plugin chain\r\n                    _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n                }\r\n                else {\r\n                    // Queue events until all extensions are initialized\r\n                    _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n                }\r\n            };\r\n            _self[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n            _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n                if (!_notificationManager) {\r\n                    // Create Dummy notification manager\r\n                    _notificationManager = _createDummyNotificationManager();\r\n                    // For backward compatibility only\r\n                    _self[strNotificationManager] = _notificationManager;\r\n                }\r\n                return _notificationManager;\r\n            };\r\n            /**\r\n             * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n             * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n             * called.\r\n             * @param {INotificationListener} listener - An INotificationListener object.\r\n             */\r\n            _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n                if (_notificationManager) {\r\n                    _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n                }\r\n            };\r\n            /**\r\n             * Removes all instances of the listener.\r\n             * @param {INotificationListener} listener - INotificationListener to remove.\r\n             */\r\n            _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n                if (_notificationManager) {\r\n                    _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](listener);\r\n                }\r\n            };\r\n            _self.getCookieMgr = function () {\r\n                if (!_cookieManager) {\r\n                    _cookieManager = createCookieMgr(_config, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n                }\r\n                return _cookieManager;\r\n            };\r\n            _self.setCookieMgr = function (cookieMgr) {\r\n                _cookieManager = cookieMgr;\r\n            };\r\n            _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n                if (!_perfManager && !_cfgPerfManager) {\r\n                    if (getCfgValue(_config.enablePerfMgr)) {\r\n                        var createPerfMgr = getCfgValue(_config[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */]);\r\n                        if (isFunction(createPerfMgr)) {\r\n                            _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n                        }\r\n                    }\r\n                }\r\n                return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n            };\r\n            _self.setPerfMgr = function (perfMgr) {\r\n                _perfManager = perfMgr;\r\n            };\r\n            _self.eventCnt = function () {\r\n                return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n            };\r\n            _self.releaseQueue = function () {\r\n                if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var eventQueue = _eventQueue;\r\n                    _eventQueue = [];\r\n                    arrForEach(eventQueue, function (event) {\r\n                        _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n                    });\r\n                }\r\n            };\r\n            /**\r\n             * Periodically check logger.queue for log messages to be flushed\r\n             */\r\n            _self.pollInternalLogs = function (eventName) {\r\n                _internalLogsEventName = eventName || null;\r\n                var interval = getCfgValue(_config.diagnosticLogInterval);\r\n                if (!interval || !(interval > 0)) {\r\n                    interval = 10000;\r\n                }\r\n                if (_internalLogPoller) {\r\n                    clearInterval(_internalLogPoller);\r\n                }\r\n                _internalLogPoller = setInterval(function () {\r\n                    _flushInternalLogs();\r\n                }, interval);\r\n                return _internalLogPoller;\r\n            };\r\n            /**\r\n             * Stop polling log messages from logger.queue\r\n             */\r\n            _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n                if (_internalLogPoller) {\r\n                    clearInterval(_internalLogPoller);\r\n                    _internalLogPoller = 0;\r\n                    _flushInternalLogs();\r\n                }\r\n            };\r\n            // Add addTelemetryInitializer\r\n            proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n            _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n                var _a;\r\n                if (isAsync === void 0) { isAsync = true; }\r\n                if (!_isInitialized) {\r\n                    // The SDK is not initialized\r\n                    throwError(strSdkNotInitialized);\r\n                }\r\n                // Check if the SDK still unloading so throw\r\n                if (_isUnloading) {\r\n                    // The SDK is already unloading\r\n                    throwError(strSdkUnloadingError);\r\n                }\r\n                var unloadState = (_a = {\r\n                        reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n                    },\r\n                    _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n                    _a.flushComplete = false,\r\n                    _a);\r\n                var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n                processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n                    _initDefaults();\r\n                    unloadComplete && unloadComplete(unloadState);\r\n                }, _self);\r\n                function _doUnload(flushComplete) {\r\n                    unloadState.flushComplete = flushComplete;\r\n                    _isUnloading = true;\r\n                    // Run all of the unload handlers first (before unloading the plugins)\r\n                    _unloadHandlers.run(processUnloadCtx, unloadState);\r\n                    // Stop polling the internal logs\r\n                    _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n                    // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n                    processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n                }\r\n                if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n                    _doUnload(false);\r\n                }\r\n            };\r\n            _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n            _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n                if (!plugin) {\r\n                    addCb && addCb(false);\r\n                    _logOrThrowError(strValidationError);\r\n                    return;\r\n                }\r\n                var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n                if (existingPlugin && !replaceExisting) {\r\n                    addCb && addCb(false);\r\n                    _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n                    return;\r\n                }\r\n                var updateState = {\r\n                    reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n                };\r\n                function _addPlugin(removed) {\r\n                    _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n                    updateState.added = [plugin];\r\n                    // Re-Initialize the plugin chain\r\n                    _initPluginChain(updateState);\r\n                    addCb && addCb(true);\r\n                }\r\n                if (existingPlugin) {\r\n                    var removedPlugins_1 = [existingPlugin.plugin];\r\n                    var unloadState = {\r\n                        reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n                        isAsync: !!isAsync\r\n                    };\r\n                    _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n                        if (!removed) {\r\n                            // Previous plugin was successfully removed or was not installed\r\n                            addCb && addCb(false);\r\n                        }\r\n                        else {\r\n                            updateState.removed = removedPlugins_1;\r\n                            updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n                            _addPlugin(true);\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    _addPlugin(false);\r\n                }\r\n            };\r\n            _self.evtNamespace = function () {\r\n                return _evtNamespace;\r\n            };\r\n            _self[_DYN_FLUSH /* @min:%2eflush */] = _flushChannels;\r\n            _self.getTraceCtx = function (createNew) {\r\n                if (!_traceCtx) {\r\n                    _traceCtx = createDistributedTraceContext();\r\n                }\r\n                return _traceCtx;\r\n            };\r\n            _self.setTraceCtx = function (traceCtx) {\r\n                _traceCtx = traceCtx || null;\r\n            };\r\n            // Create the addUnloadCb\r\n            proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n            function _initDefaults() {\r\n                _isInitialized = false;\r\n                // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n                _config = objExtend(true, {}, defaultInitConfig);\r\n                _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n                _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_config);\r\n                _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = [];\r\n                _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n                _eventQueue = [];\r\n                _notificationManager = null;\r\n                _perfManager = null;\r\n                _cfgPerfManager = null;\r\n                _cookieManager = null;\r\n                _pluginChain = null;\r\n                _coreExtensions = null;\r\n                _configExtensions = [];\r\n                _channelControl = null;\r\n                _channelConfig = null;\r\n                _channelQueue = null;\r\n                _isUnloading = false;\r\n                _internalLogsEventName = null;\r\n                _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n                _unloadHandlers = createUnloadHandlerContainer();\r\n                _traceCtx = null;\r\n            }\r\n            function _createTelCtx() {\r\n                return createProcessTelemetryContext(_getPluginChain(), _config, _self);\r\n            }\r\n            // Initialize or Re-initialize the plugins\r\n            function _initPluginChain(updateState) {\r\n                // Extension validation\r\n                var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n                _coreExtensions = theExtensions[STR_CORE /* @min:%2ecore */];\r\n                _pluginChain = null;\r\n                // Sort the complete set of extensions by priority\r\n                var allExtensions = theExtensions.all;\r\n                // Initialize the Channel Queues and the channel plugins first\r\n                _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));\r\n                if (_channelControl) {\r\n                    // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n                    // But we also want the controller as the last, so remove if already present\r\n                    // And reusing the existing instance, just in case an installed plugin has a reference and\r\n                    // is using it.\r\n                    var idx = arrIndexOf(allExtensions, _channelControl);\r\n                    if (idx !== -1) {\r\n                        allExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                    }\r\n                    idx = arrIndexOf(_coreExtensions, _channelControl);\r\n                    if (idx !== -1) {\r\n                        _coreExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                    }\r\n                    _channelControl._setQueue(_channelQueue);\r\n                }\r\n                else {\r\n                    _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n                }\r\n                // Add on \"channelController\" as the last \"plugin\"\r\n                allExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n                _coreExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n                // Required to allow plugins to call core.getPlugin() during their own initialization\r\n                _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = sortPlugins(allExtensions);\r\n                // Initialize the controls\r\n                _channelControl[_DYN_INITIALIZE /* @min:%2einitialize */](_config, _self, allExtensions);\r\n                initializePlugins(_createTelCtx(), allExtensions);\r\n                // Now reset the extensions to just those being managed by Basecore\r\n                _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n                if (updateState) {\r\n                    _doUpdate(updateState);\r\n                }\r\n            }\r\n            function _getPlugin(pluginIdentifier) {\r\n                var _a;\r\n                var theExt = null;\r\n                var thePlugin = null;\r\n                arrForEach(_self[_DYN__EXTENSIONS /* @min:%2e_extensions */], function (ext) {\r\n                    if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n                        thePlugin = ext;\r\n                        return -1;\r\n                    }\r\n                });\r\n                if (!thePlugin && _channelControl) {\r\n                    // Check the channel Controller\r\n                    thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n                }\r\n                if (thePlugin) {\r\n                    theExt = (_a = {\r\n                            plugin: thePlugin\r\n                        },\r\n                        _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (enabled) {\r\n                            _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n                        },\r\n                        _a.isEnabled = function () {\r\n                            var pluginState = _getPluginState(thePlugin);\r\n                            return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n                        },\r\n                        _a.remove = function (isAsync, removeCb) {\r\n                            var _a;\r\n                            if (isAsync === void 0) { isAsync = true; }\r\n                            var pluginsToRemove = [thePlugin];\r\n                            var unloadState = (_a = {\r\n                                    reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n                                },\r\n                                _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n                                _a);\r\n                            _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n                                if (removed) {\r\n                                    // Re-Initialize the plugin chain\r\n                                    _initPluginChain({\r\n                                        reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n                                        removed: pluginsToRemove\r\n                                    });\r\n                                }\r\n                                removeCb && removeCb(removed);\r\n                            });\r\n                        },\r\n                        _a);\r\n                }\r\n                return theExt;\r\n            }\r\n            function _getPluginChain() {\r\n                if (!_pluginChain) {\r\n                    // copy the collection of extensions\r\n                    var extensions = (_coreExtensions || []).slice();\r\n                    // During add / remove this may get called again, so don't readd if already present\r\n                    if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n                        extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n                    }\r\n                    _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _config, _self);\r\n                }\r\n                return _pluginChain;\r\n            }\r\n            function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n                if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var unloadChain = createTelemetryProxyChain(thePlugins, _config, _self);\r\n                    var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n                    unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n                        var removed = false;\r\n                        // Remove the listed config extensions\r\n                        var newConfigExtensions = [];\r\n                        arrForEach(_configExtensions, function (plugin, idx) {\r\n                            if (!_isPluginPresent(plugin, thePlugins)) {\r\n                                newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n                            }\r\n                            else {\r\n                                removed = true;\r\n                            }\r\n                        });\r\n                        _configExtensions = newConfigExtensions;\r\n                        // Re-Create the channel config\r\n                        var newChannelConfig = [];\r\n                        if (_channelConfig) {\r\n                            arrForEach(_channelConfig, function (queue, idx) {\r\n                                var newQueue = [];\r\n                                arrForEach(queue, function (channel) {\r\n                                    if (!_isPluginPresent(channel, thePlugins)) {\r\n                                        newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n                                    }\r\n                                    else {\r\n                                        removed = true;\r\n                                    }\r\n                                });\r\n                                newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n                            });\r\n                            _channelConfig = newChannelConfig;\r\n                        }\r\n                        removeComplete && removeComplete(removed);\r\n                    });\r\n                    unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n                }\r\n                else {\r\n                    removeComplete(false);\r\n                }\r\n            }\r\n            function _flushInternalLogs() {\r\n                var queue = _self[_DYN_LOGGER /* @min:%2elogger */] ? _self[_DYN_LOGGER /* @min:%2elogger */].queue : [];\r\n                if (queue) {\r\n                    arrForEach(queue, function (logMessage) {\r\n                        var _a;\r\n                        var item = (_a = {},\r\n                            _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n                            _a.iKey = getCfgValue(_config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]),\r\n                            _a.time = toISOString(new Date()),\r\n                            _a.baseType = _InternalLogMessage.dataType,\r\n                            _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n                            _a);\r\n                        _self.track(item);\r\n                    });\r\n                    queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n                }\r\n            }\r\n            function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n                if (_channelControl) {\r\n                    return _channelControl[_DYN_FLUSH /* @min:%2eflush */](isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n                }\r\n                callBack && callBack(false);\r\n                return true;\r\n            }\r\n            function _initDebugListener() {\r\n                var disableDbgExt = getCfgValue(_config.disableDbgExt);\r\n                if (disableDbgExt === true && _debugListener) {\r\n                    // Remove any previously loaded debug listener\r\n                    _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](_debugListener);\r\n                    _debugListener = null;\r\n                }\r\n                if (_notificationManager && !_debugListener && disableDbgExt !== true) {\r\n                    _debugListener = getDebugListener(_config);\r\n                    _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](_debugListener);\r\n                }\r\n            }\r\n            function _initPerfManager() {\r\n                var enablePerfMgr = getCfgValue(_config.enablePerfMgr);\r\n                if (!enablePerfMgr && _cfgPerfManager) {\r\n                    // Remove any existing config based performance manager\r\n                    _cfgPerfManager = null;\r\n                }\r\n                if (enablePerfMgr) {\r\n                    // Set the performance manager creation function if not defined\r\n                    getSetValue(_config, STR_CREATE_PERF_MGR, _createPerfManager);\r\n                }\r\n            }\r\n            function _initExtConfig() {\r\n                var extConfig = getSetValue(_config, STR_EXTENSION_CONFIG, {});\r\n                extConfig.NotificationManager = _notificationManager;\r\n            }\r\n            function _doUpdate(updateState) {\r\n                var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n                if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n                    updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n                }\r\n            }\r\n            function _logOrThrowError(message) {\r\n                var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n                if (logger) {\r\n                    // there should always be a logger\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n                }\r\n                else {\r\n                    throwError(message);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    BaseCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseCore.prototype.getTransmissionControls = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    BaseCore.prototype.track = function (telemetryItem) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseCore.prototype.getProcessTelContext = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    BaseCore.prototype.getNotifyMgr = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n     * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n     * called.\r\n     * @param {INotificationListener} listener - An INotificationListener object.\r\n     */\r\n    BaseCore.prototype.addNotificationListener = function (listener) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Removes all instances of the listener.\r\n     * @param {INotificationListener} listener - INotificationListener to remove.\r\n     */\r\n    BaseCore.prototype.removeNotificationListener = function (listener) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Get the current cookie manager for this instance\r\n     */\r\n    BaseCore.prototype.getCookieMgr = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Set the current cookie manager for this instance\r\n     * @param cookieMgr - The manager, if set to null/undefined will cause the default to be created\r\n     */\r\n    BaseCore.prototype.setCookieMgr = function (cookieMgr) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseCore.prototype.getPerfMgr = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    BaseCore.prototype.setPerfMgr = function (perfMgr) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseCore.prototype.eventCnt = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 0;\r\n    };\r\n    /**\r\n     * Periodically check logger.queue for\r\n     */\r\n    BaseCore.prototype.pollInternalLogs = function (eventName) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return 0;\r\n    };\r\n    /**\r\n     * Periodically check logger.queue for\r\n     */\r\n    BaseCore.prototype.stopPollingInternalLogs = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add a telemetry processor to decorate or drop telemetry events.\r\n     * @param telemetryInitializer - The Telemetry Initializer function\r\n     * @returns - A ITelemetryInitializerHandler to enable the initializer to be removed\r\n     */\r\n    BaseCore.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered\r\n     * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous\r\n     * unload call return `true` stating that all plugins reported that they also unloaded, the recommended\r\n     * approach is to create a new instance and initialize that instance.\r\n     * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable\r\n     * to successfully remove any global references or they may just be completing the unload process asynchronously.\r\n     * @param isAsync - Can the unload be performed asynchronously (default)\r\n     * @param unloadComplete - An optional callback that will be called once the unload has completed\r\n     * @param cbTimeout - An optional timeout to wait for any flush operations to complete before proceeding with the unload. Defaults to 5 seconds.\r\n     */\r\n    BaseCore.prototype.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseCore.prototype.getPlugin = function (pluginIdentifier) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Add a new plugin to the installation\r\n     * @param plugin - The new plugin to add\r\n     * @param replaceExisting - should any existing plugin be replaced, default is false\r\n     * @param doAsync - Should the add be performed asynchronously\r\n     * @param addCb - [Optional] callback to call after the plugin has been added\r\n     */\r\n    BaseCore.prototype.addPlugin = function (plugin, replaceExisting, doAsync, addCb) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Returns the unique event namespace that should be used\r\n     */\r\n    BaseCore.prototype.evtNamespace = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Add an unload handler that will be called when the SDK is being unloaded\r\n     * @param handler - the handler\r\n     */\r\n    BaseCore.prototype.addUnloadCb = function (handler) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Flush and send any batched / cached data immediately\r\n     * @param async - send data asynchronously when true (defaults to true)\r\n     * @param callBack - if specified, notify caller when send is complete, the channel should return true to indicate to the caller that it will be called.\r\n     * If the caller doesn't return true the caller should assume that it may never be called.\r\n     * @param sendReason - specify the reason that you are calling \"flush\" defaults to ManualFlush (1) if not specified\r\n     * @returns - true if the callback will be return after the flush is complete otherwise the caller should assume that any provided callback will never be called\r\n     */\r\n    BaseCore.prototype.flush = function (isAsync, callBack, sendReason) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Gets the current distributed trace context for this instance if available\r\n     * @param createNew - Optional flag to create a new instance if one doesn't currently exist, defaults to true\r\n     */\r\n    BaseCore.prototype.getTraceCtx = function (createNew) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Sets the current distributed trace context for this instance if available\r\n     */\r\n    BaseCore.prototype.setTraceCtx = function (newTracectx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    BaseCore.prototype.releaseQueue = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Hook for Core extensions to allow them to update their own configuration before updating all of the plugins.\r\n     * @param updateCtx - The plugin update context\r\n     * @param updateState - The Update State\r\n     * @returns boolean - True means the extension class will call updateState otherwise the Core will\r\n     */\r\n    BaseCore.prototype._updateHook = function (updateCtx, updateState) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return false;\r\n    };\r\n    return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LISTENERS, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n    arrForEach(listeners, function (listener) {\r\n        if (listener && listener[name]) {\r\n            if (isAsync) {\r\n                setTimeout(function () { return callback(listener); }, 0);\r\n            }\r\n            else {\r\n                try {\r\n                    callback(listener);\r\n                }\r\n                catch (e) {\r\n                    // Catch errors to ensure we don't block sending the requests\r\n                }\r\n            }\r\n        }\r\n    });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n    function NotificationManager(config) {\r\n        this.listeners = [];\r\n        var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n        dynamicProto(NotificationManager, this, function (_self) {\r\n            _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n                _self.listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n            };\r\n            /**\r\n             * Removes all instances of the listener.\r\n             * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n             */\r\n            _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n                var index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n                while (index > -1) {\r\n                    _self.listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n                    index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n                }\r\n            };\r\n            /**\r\n             * Notification for events sent.\r\n             * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n             */\r\n            _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n                _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SENT, true, function (listener) {\r\n                    listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n                });\r\n            };\r\n            /**\r\n             * Notification for events being discarded.\r\n             * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n             * @param {number} reason           - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n             * constant should be used to check the different values.\r\n             */\r\n            _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n                _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_DISCARDED, true, function (listener) {\r\n                    listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n                });\r\n            };\r\n            /**\r\n             * [Optional] A function called when the events have been requested to be sent to the sever.\r\n             * @param {number} sendReason - The reason why the event batch is being sent.\r\n             * @param {boolean} isAsync   - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n             */\r\n            _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n                _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {\r\n                    listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n                });\r\n            };\r\n            _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n                if (perfEvent) {\r\n                    // Send all events or only parent events\r\n                    if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n                        _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_PERF_EVENT, false, function (listener) {\r\n                            if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n                                setTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n                            }\r\n                            else {\r\n                                listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n            };\r\n        });\r\n    }\r\n    /**\r\n     * Adds a notification listener.\r\n     * @param {INotificationListener} listener - The notification listener to be added.\r\n     */\r\n    NotificationManager.prototype.addNotificationListener = function (listener) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Removes all instances of the listener.\r\n     * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n     */\r\n    NotificationManager.prototype.removeNotificationListener = function (listener) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Notification for events sent.\r\n     * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n     */\r\n    NotificationManager.prototype.eventsSent = function (events) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Notification for events being discarded.\r\n     * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n     * @param {number} reason           - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n     * constant should be used to check the different values.\r\n     */\r\n    NotificationManager.prototype.eventsDiscarded = function (events, reason) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * [Optional] A function called when the events have been requested to be sent to the sever.\r\n     * @param {number} sendReason - The reason why the event batch is being sent.\r\n     * @param {boolean} isAsync   - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n     */\r\n    NotificationManager.prototype.eventsSendRequest = function (sendReason, isAsync) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","import { __extends } from \"tslib\";\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_GET_NOTIFY_MGR, _DYN_INITIALIZE, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_GET_PERF_MGR } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n    __extends(AppInsightsCore, _super);\r\n    function AppInsightsCore() {\r\n        var _this = _super.call(this) || this;\r\n        dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n                _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n            };\r\n            _self.track = function (telemetryItem) {\r\n                doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n                    if (telemetryItem === null) {\r\n                        _notifyInvalidEvent(telemetryItem);\r\n                        // throw error\r\n                        throwError(\"Invalid telemetry item\");\r\n                    }\r\n                    // do basic validation before sending it through the pipeline\r\n                    _validateTelemetryItem(telemetryItem);\r\n                    _base.track(telemetryItem);\r\n                }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n            };\r\n            function _validateTelemetryItem(telemetryItem) {\r\n                if (isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n                    _notifyInvalidEvent(telemetryItem);\r\n                    throwError(\"telemetry name required\");\r\n                }\r\n            }\r\n            function _notifyInvalidEvent(telemetryItem) {\r\n                var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n                if (manager) {\r\n                    manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n                }\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n    AppInsightsCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AppInsightsCore.prototype.track = function (telemetryItem) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_ERROR_STATUS_TEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n    var result = 0;\r\n    var from = resourceEntry[start];\r\n    var to = resourceEntry[end];\r\n    if (from && to) {\r\n        result = dateTimeUtilsDuration(from, to);\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n    var result = 0;\r\n    var value = _calcPerfDuration(resourceEntry, start, end);\r\n    if (value) {\r\n        result = _setPerfValue(props, name, msToTimeSpan(value));\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n    var strPerf = \"ajaxPerf\";\r\n    var result = 0;\r\n    if (props && name && value) {\r\n        var perfData = props[strPerf] = (props[strPerf] || {});\r\n        perfData[name] = value;\r\n        result = 1;\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n    /*\r\n    * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n    *  | -startTime\r\n    *  | -redirectStart\r\n    *  |            | -redirectEnd\r\n    *  |            | | -fetchStart\r\n    *  |            | |   | -domainLookupStart\r\n    *  |            | |   |                |- domainLookupEnd\r\n    *  |            | |   |                | | -connectStart\r\n    *  |            | |   |                | |  | -secureConnectionStart\r\n    *  |            | |   |                | |  |        | -connectEnd\r\n    *  |            | |   |                | |  |        | | -requestStart\r\n    *  |            | |   |                | |  |        | |           | | -responseStart\r\n    *  |            | |   |                | |  |        | |           | |            | | -responseEnd\r\n    *  +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n    *  |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n    *  |-------------------networkConnect----------------|\r\n    *  |                                                   |---------sentRequest--------|\r\n    *  |------------------------------------perfTotal-----------------------------------|\r\n    */\r\n    var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n    var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n    var propsSet = 0;\r\n    var strName = \"name\";\r\n    var strStart = \"Start\";\r\n    var strEnd = \"End\";\r\n    var strDomainLookup = \"domainLookup\";\r\n    var strConnect = \"connect\";\r\n    var strRedirect = \"redirect\";\r\n    var strRequest = \"request\";\r\n    var strResponse = \"response\";\r\n    var strStartTime = \"startTime\";\r\n    var strDomainLookupStart = strDomainLookup + strStart;\r\n    var strDomainLookupEnd = strDomainLookup + strEnd;\r\n    var strConnectStart = strConnect + strStart;\r\n    var strConnectEnd = strConnect + strEnd;\r\n    var strRequestStart = strRequest + strStart;\r\n    var strRequestEnd = strRequest + strEnd;\r\n    var strResponseStart = strResponse + strStart;\r\n    var strResponseEnd = strResponse + strEnd;\r\n    var strRedirectStart = strRedirect + strStart;\r\n    var strRedirectEnd = strRedirect = strEnd;\r\n    var strTransferSize = \"transferSize\";\r\n    var strEncodedBodySize = \"encodedBodySize\";\r\n    var strDecodedBodySize = \"decodedBodySize\";\r\n    var strServerTiming = \"serverTiming\";\r\n    if (resourceEntry) {\r\n        // redirect\r\n        propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n        // domainLookup\r\n        propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n        // connect\r\n        propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n        // request\r\n        propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n        // response\r\n        propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n        // Network connection time\r\n        propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n        // Sent Request\r\n        propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n        // PerfTotal / Duration\r\n        var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n        if (!duration) {\r\n            duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n        }\r\n        propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n        propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n        var serverTiming = resourceEntry[strServerTiming];\r\n        if (serverTiming) {\r\n            var server_1 = {};\r\n            arrForEach(serverTiming, function (value, idx) {\r\n                var name = normalizeJsName(value[strName] || \"\" + idx);\r\n                var newValue = server_1[name] || {};\r\n                objForEachKey(value, function (key, val) {\r\n                    if (key !== strName && isString(val) || isNumber(val)) {\r\n                        if (newValue[key]) {\r\n                            val = newValue[key] + \";\" + val;\r\n                        }\r\n                        if (val || !isString(val)) {\r\n                            // Only set the value if it has a value and it's not an empty string\r\n                            newValue[key] = val;\r\n                        }\r\n                    }\r\n                });\r\n                server_1[name] = newValue;\r\n            });\r\n            propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n        }\r\n        propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n        propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n        propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n    }\r\n    else {\r\n        if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n            propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n        }\r\n    }\r\n    if (propsSet) {\r\n        dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n    }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n    function XHRMonitoringState() {\r\n        var self = this;\r\n        self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n        self.setRequestHeaderDone = false;\r\n        self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n        self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n        // <summary>True, if onreadyStateChangeCallback function attached to xhr, otherwise false</summary>\r\n        self[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = false;\r\n    }\r\n    return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n    function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n        var _a;\r\n        var self = this;\r\n        var _logger = logger;\r\n        var strResponseText = \"responseText\";\r\n        // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n        // this.XXXX = null\r\n        self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n        self.completed = false;\r\n        self.requestHeadersSize = null;\r\n        self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n        self.responseReceivingDuration = null;\r\n        self.callbackDuration = null;\r\n        self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n        self[_DYN_ABORTED /* @min:%2eaborted */] = 0;\r\n        self.pageUrl = null;\r\n        self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n        self.requestSize = 0;\r\n        self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n        self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n        self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n        self.responseStartedTime = null;\r\n        self[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = null;\r\n        self.callbackFinishedTime = null;\r\n        self.endTime = null;\r\n        self.xhrMonitoringState = new XHRMonitoringState();\r\n        self.clientFailure = 0;\r\n        self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n        self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n        self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n        if (traceCtx) {\r\n            self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n                _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n                _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n                _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n                _a);\r\n        }\r\n        else {\r\n            self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n        }\r\n        dynamicProto(ajaxRecord, self, function (self) {\r\n            self.getAbsoluteUrl = function () {\r\n                return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n            };\r\n            self.getPathName = function () {\r\n                return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n            };\r\n            self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n                var _a;\r\n                // round to 3 decimal points\r\n                self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n                if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n                    return null;\r\n                }\r\n                var dependency = (_a = {\r\n                        id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n                        target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n                    },\r\n                    _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n                    _a.type = ajaxType,\r\n                    _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n                    _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n                    _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n                    _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n                    _a.method = self[_DYN_METHOD /* @min:%2emethod */],\r\n                    _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n                    _a);\r\n                var props = dependency[STR_PROPERTIES];\r\n                if (self[_DYN_ABORTED /* @min:%2eaborted */]) {\r\n                    props[_DYN_ABORTED /* @min:%2eaborted */] = true;\r\n                }\r\n                if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n                    // Set the correct dependency start time\r\n                    dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n                    dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n                }\r\n                // Add Ajax perf details if available\r\n                _populatePerfData(self, dependency);\r\n                if (enableRequestHeaderTracking) {\r\n                    if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                        props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n                    }\r\n                }\r\n                if (getResponse) {\r\n                    var response = getResponse();\r\n                    if (response) {\r\n                        // enrich dependency target with correlation context from the server\r\n                        var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n                        if (correlationContext) {\r\n                            dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n                        }\r\n                        if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n                            if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                                props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n                            }\r\n                        }\r\n                        if (self[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */]) {\r\n                            if (self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n                                var responseType = response.type;\r\n                                if (responseType === \"\" || responseType === \"text\") {\r\n                                    props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n                                }\r\n                                if (responseType === \"json\") {\r\n                                    props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n                                }\r\n                            }\r\n                            else if (self[_DYN_STATUS /* @min:%2estatus */] === 0) {\r\n                                props.responseText = response[_DYN_STATUS_TEXT /* @min:%2estatusText */] || \"\";\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return dependency;\r\n            };\r\n            self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n                var _a;\r\n                var partA = null;\r\n                var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n                if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n                    partA = {};\r\n                    var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n                        _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n                        _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n                        _a);\r\n                    if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n                        traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n                    }\r\n                }\r\n                return partA;\r\n            };\r\n        });\r\n    }\r\n    ajaxRecord.prototype.getAbsoluteUrl = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    ajaxRecord.prototype.getPathName = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    ajaxRecord.prototype.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    ajaxRecord.prototype.getPartAProps = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES19, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V9, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar STR_FETCH = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n    var _global = getGlobal();\r\n    if (!_global ||\r\n        isNullOrUndefined(_global.Request) ||\r\n        isNullOrUndefined(_global.Request[strPrototype]) ||\r\n        isNullOrUndefined(_global[STR_FETCH])) {\r\n        return null;\r\n    }\r\n    return _global[STR_FETCH];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n    var result = false;\r\n    if (isXhrSupported()) {\r\n        var proto = XMLHttpRequest[strPrototype];\r\n        result = !isNullOrUndefined(proto) &&\r\n            !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n            !isNullOrUndefined(proto.send) &&\r\n            !isNullOrUndefined(proto.abort);\r\n    }\r\n    var ieVer = getIEVersion();\r\n    if (ieVer && ieVer < 9) {\r\n        result = false;\r\n    }\r\n    if (result) {\r\n        // Disable if the XmlHttpRequest can't be extended or hooked\r\n        try {\r\n            var xhr = new XMLHttpRequest();\r\n            xhr[strAjaxData] = {};\r\n            // Check that we can update the prototype\r\n            var theOpen = XMLHttpRequest[strPrototype].open;\r\n            XMLHttpRequest[strPrototype].open = theOpen;\r\n        }\r\n        catch (e) {\r\n            // We can't decorate the xhr object so disable monitoring\r\n            result = false;\r\n            _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n                exception: dumpObj(e)\r\n            });\r\n        }\r\n    }\r\n    return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n    var result = \"\";\r\n    try {\r\n        if (xhr && xhr[strAjaxData] && xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n            result += \"(url: '\" + xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n        }\r\n    }\r\n    catch (e) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n    _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n    _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n    // tslint:disable-next-line\r\n    return function (args) {\r\n        _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n            ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args[_DYN_INST /* @min:%2einst */]),\r\n            exception: dumpObj(args.err)\r\n        });\r\n    };\r\n}\r\nfunction _indexOf(value, match) {\r\n    if (value && match) {\r\n        return value.indexOf(match);\r\n    }\r\n    return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n    var theHandler = {\r\n        id: id,\r\n        fn: theFunc\r\n    };\r\n    container.push(theHandler);\r\n    return {\r\n        remove: function () {\r\n            arrForEach(container, function (initializer, idx) {\r\n                if (initializer.id === theHandler.id) {\r\n                    container.splice(idx, 1);\r\n                    return -1;\r\n                }\r\n            });\r\n        }\r\n    };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n    var result = true;\r\n    arrForEach(container, function (theFunc, idx) {\r\n        try {\r\n            if (theFunc.fn.call(null, details) === false) {\r\n                result = false;\r\n            }\r\n        }\r\n        catch (e) {\r\n            _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n        }\r\n    });\r\n    return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n    var _a;\r\n    var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n    if (initializersCount > 0) {\r\n        var details = (_a = {},\r\n            _a[_DYN_CORE /* @min:core */] = core,\r\n            _a.xhr = xhr,\r\n            _a.input = input,\r\n            _a.init = init,\r\n            _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n            _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n            _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n            _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n            _a.aborted = !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */],\r\n            _a);\r\n        _processDependencyContainer(core, listeners, details, \"listener\");\r\n        ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n        ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n        ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n        ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n    }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = deepFreeze([\r\n    BLOB_CORE + \"windows.net\",\r\n    BLOB_CORE + \"chinacloudapi.cn\",\r\n    BLOB_CORE + \"cloudapi.de\",\r\n    BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n    /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nfunction _getDefaultConfig() {\r\n    var _a;\r\n    var config = (_a = {},\r\n        _a[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:maxAjaxCallsPerView */] = 500,\r\n        _a[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:disableAjaxTracking */] = false,\r\n        _a[_DYN_DISABLE_FETCH_TRACKI13 /* @min:disableFetchTracking */] = false,\r\n        _a[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,\r\n        _a.disableCorrelationHeaders = false,\r\n        _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n        _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,\r\n        _a.correlationHeaderDomains = undefined,\r\n        _a.correlationHeaderExcludePatterns = undefined,\r\n        _a[_DYN_APP_ID /* @min:appId */] = undefined,\r\n        _a.enableCorsCorrelation = false,\r\n        _a[_DYN_ENABLE_REQUEST_HEADE6 /* @min:enableRequestHeaderTracking */] = false,\r\n        _a[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:enableResponseHeaderTracking */] = false,\r\n        _a[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:enableAjaxErrorStatusText */] = false,\r\n        _a[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:enableAjaxPerfTracking */] = false,\r\n        _a.maxAjaxPerfLookupAttempts = 3,\r\n        _a[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:ajaxPerfLookupDelay */] = 25,\r\n        _a.ignoreHeaders = [\r\n            \"Authorization\",\r\n            \"X-API-Key\",\r\n            \"WWW-Authenticate\"\r\n        ],\r\n        _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,\r\n        _a.addIntEndpoints = true,\r\n        _a);\r\n    return config;\r\n}\r\nfunction _getEmptyConfig() {\r\n    var emptyConfig = _getDefaultConfig();\r\n    objForEachKey(emptyConfig, function (value) {\r\n        emptyConfig[value] = undefined;\r\n    });\r\n    return emptyConfig;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n    __extends(AjaxMonitor, _super);\r\n    function AjaxMonitor() {\r\n        var _this = _super.call(this) || this;\r\n        _this.identifier = AjaxMonitor.identifier;\r\n        _this.priority = 120;\r\n        var _fetchInitialized; // fetch monitoring initialized\r\n        var _xhrInitialized; // XHR monitoring initialized\r\n        var _currentWindowHost;\r\n        var _config;\r\n        var _enableRequestHeaderTracking;\r\n        var _enableAjaxErrorStatusText;\r\n        var _trackAjaxAttempts;\r\n        var _context;\r\n        var _isUsingW3CHeaders;\r\n        var _isUsingAIHeaders;\r\n        var _markPrefix;\r\n        var _enableAjaxPerfTracking;\r\n        var _maxAjaxCallsPerView;\r\n        var _enableResponseHeaderTracking;\r\n        var _disabledUrls;\r\n        var _disableAjaxTracking;\r\n        var _disableFetchTracking;\r\n        var _excludeRequestFromAutoTrackingPatterns;\r\n        var _addRequestContext;\r\n        var _evtNamespace;\r\n        var _dependencyHandlerId;\r\n        var _dependencyListeners;\r\n        var _dependencyInitializers;\r\n        dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n            var _addHook = _base._addHook;\r\n            _initDefaults();\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                if (!_self.isInitialized()) {\r\n                    _base.initialize(config, core, extensions, pluginChain);\r\n                    _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n                    _populateDefaults(config);\r\n                    _instrumentXhr();\r\n                    _instrumentFetch();\r\n                    _populateContext();\r\n                }\r\n            };\r\n            _self._doTeardown = function () {\r\n                _initDefaults();\r\n            };\r\n            _self.trackDependencyData = function (dependency, properties) {\r\n                _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n            };\r\n            _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n                // Test Hook to allow the overriding of the location host\r\n                var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n                _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n                if (input) { // Fetch\r\n                    if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n                        if (!init) {\r\n                            init = {};\r\n                        }\r\n                        // init headers override original request headers\r\n                        // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n                        // not using original request headers will result in them being lost\r\n                        var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n                        if (_isUsingAIHeaders) {\r\n                            var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n                            headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n                            }\r\n                        }\r\n                        var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n                        if (appId) {\r\n                            headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n                            }\r\n                        }\r\n                        if (_isUsingW3CHeaders) {\r\n                            var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n                            if (isNullOrUndefined(traceFlags)) {\r\n                                traceFlags = 0x01;\r\n                            }\r\n                            var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n                            headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n                            }\r\n                        }\r\n                        init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n                    }\r\n                    return init;\r\n                }\r\n                else if (xhr) { // XHR\r\n                    if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n                        if (_isUsingAIHeaders) {\r\n                            var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n                            xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n                            }\r\n                        }\r\n                        var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n                        if (appId) {\r\n                            xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n                            }\r\n                        }\r\n                        if (_isUsingW3CHeaders) {\r\n                            var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n                            if (isNullOrUndefined(traceFlags)) {\r\n                                traceFlags = 0x01;\r\n                            }\r\n                            var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n                            xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n                            }\r\n                        }\r\n                    }\r\n                    return xhr;\r\n                }\r\n                return undefined;\r\n            };\r\n            _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n                if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n                    // Hack since expected format in w3c mode is |abc.def.\r\n                    // Non-w3c format is |abc.def\r\n                    // @todo Remove if better solution is available, e.g. handle in portal\r\n                    if ((_config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 2 /* eDistributedTracingModes.W3C */\r\n                        || _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n                        && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n                        dependency.id += \".\";\r\n                    }\r\n                    if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n                        dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n                    }\r\n                    var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n                }\r\n                else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n                    _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n                }\r\n                ++_trackAjaxAttempts;\r\n            };\r\n            _self.addDependencyListener = function (dependencyListener) {\r\n                return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n            };\r\n            _self.addDependencyInitializer = function (dependencyInitializer) {\r\n                return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n            };\r\n            function _initDefaults() {\r\n                var location = getLocation();\r\n                _fetchInitialized = false; // fetch monitoring initialized\r\n                _xhrInitialized = false; // XHR monitoring initialized\r\n                _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                _config = AjaxMonitor.getEmptyConfig();\r\n                _enableRequestHeaderTracking = false;\r\n                _enableAjaxErrorStatusText = false;\r\n                _trackAjaxAttempts = 0;\r\n                _context = null;\r\n                _isUsingW3CHeaders = false;\r\n                _isUsingAIHeaders = false;\r\n                _markPrefix = null;\r\n                _enableAjaxPerfTracking = false;\r\n                _maxAjaxCallsPerView = 0;\r\n                _enableResponseHeaderTracking = false;\r\n                _disabledUrls = {};\r\n                _disableAjaxTracking = false;\r\n                _disableFetchTracking = false;\r\n                _excludeRequestFromAutoTrackingPatterns = null;\r\n                _addRequestContext = null;\r\n                _evtNamespace = null;\r\n                _dependencyHandlerId = 0;\r\n                _dependencyListeners = [];\r\n                _dependencyInitializers = [];\r\n            }\r\n            function _populateDefaults(config) {\r\n                var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n                // Reset to the empty config\r\n                _config = _getEmptyConfig();\r\n                var defaultConfig = _getDefaultConfig();\r\n                objForEachKey(defaultConfig, function (field, value) {\r\n                    _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n                });\r\n                var distributedTracingMode = _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */];\r\n                _enableRequestHeaderTracking = _config[_DYN_ENABLE_REQUEST_HEADE6 /* @min:%2eenableRequestHeaderTracking */];\r\n                _enableAjaxErrorStatusText = _config[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:%2eenableAjaxErrorStatusText */];\r\n                _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:%2eenableAjaxPerfTracking */];\r\n                _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];\r\n                _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];\r\n                _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n                _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n                _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n                _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n                if (_enableAjaxPerfTracking) {\r\n                    var iKey = config.instrumentationKey || \"unkwn\";\r\n                    if (iKey[_DYN_LENGTH /* @min:%2elength */] > 5) {\r\n                        _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey[_DYN_LENGTH /* @min:%2elength */] - 5) + \".\";\r\n                    }\r\n                    else {\r\n                        _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n                    }\r\n                }\r\n                _disableAjaxTracking = !!_config[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:%2edisableAjaxTracking */];\r\n                _disableFetchTracking = !!_config[_DYN_DISABLE_FETCH_TRACKI13 /* @min:%2edisableFetchTracking */];\r\n            }\r\n            function _populateContext() {\r\n                var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n                if (propExt) {\r\n                    _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n                }\r\n            }\r\n            // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n            function _canIncludeHeaders(header) {\r\n                var rlt = true;\r\n                if (header || _config.ignoreHeaders) {\r\n                    arrForEach(_config.ignoreHeaders, (function (key) {\r\n                        if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n                            rlt = false;\r\n                            return -1;\r\n                        }\r\n                    }));\r\n                }\r\n                return rlt;\r\n            }\r\n            // Fetch Stuff\r\n            function _instrumentFetch() {\r\n                var fetch = _supportsFetch();\r\n                if (!fetch) {\r\n                    return;\r\n                }\r\n                var global = getGlobal();\r\n                var isPolyfill = fetch.polyfill;\r\n                if (!_disableFetchTracking && !_fetchInitialized) {\r\n                    _addHook(InstrumentFunc(global, STR_FETCH, {\r\n                        ns: _evtNamespace,\r\n                        // Add request hook\r\n                        req: function (callDetails, input, init) {\r\n                            var fetchData;\r\n                            if (!_disableFetchTracking && _fetchInitialized &&\r\n                                !_isDisabledRequest(null, input, init) &&\r\n                                // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n                                !(isPolyfill && _xhrInitialized)) {\r\n                                var ctx = callDetails.ctx();\r\n                                fetchData = _createFetchRecord(input, init);\r\n                                var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n                                if (newInit !== init) {\r\n                                    callDetails.set(1, newInit);\r\n                                }\r\n                                ctx.data = fetchData;\r\n                            }\r\n                        },\r\n                        rsp: function (callDetails, input) {\r\n                            if (!_disableFetchTracking) {\r\n                                var fetchData_1 = callDetails.ctx().data;\r\n                                if (fetchData_1) {\r\n                                    // Replace the result with the new promise from this code\r\n                                    callDetails.rslt = callDetails.rslt.then(function (response) {\r\n                                        _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n                                            var _a;\r\n                                            var ajaxResponse = (_a = {\r\n                                                    statusText: (response || {})[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n                                                },\r\n                                                _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n                                                _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getFetchCorrelationContext(response),\r\n                                                _a);\r\n                                            if (_enableResponseHeaderTracking && response) {\r\n                                                var responseHeaderMap_1 = {};\r\n                                                response.headers.forEach(function (value, name) {\r\n                                                    if (_canIncludeHeaders(name)) {\r\n                                                        responseHeaderMap_1[name] = value;\r\n                                                    }\r\n                                                });\r\n                                                ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n                                            }\r\n                                            return ajaxResponse;\r\n                                        });\r\n                                        return response;\r\n                                    })[\"catch\"](function (reason) {\r\n                                        _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message || dumpObj(reason) });\r\n                                        throw reason;\r\n                                    });\r\n                                }\r\n                            }\r\n                        },\r\n                        // Create an error callback to report any hook errors\r\n                        hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n                    }));\r\n                    _fetchInitialized = true;\r\n                }\r\n                else if (isPolyfill) {\r\n                    // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n                    // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n                    // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n                    // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n                    // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n                    // App Insights\r\n                    _addHook(InstrumentFunc(global, STR_FETCH, {\r\n                        ns: _evtNamespace,\r\n                        req: function (callDetails, input, init) {\r\n                            // Just call so that we record any disabled URL\r\n                            _isDisabledRequest(null, input, init);\r\n                        }\r\n                    }));\r\n                }\r\n                if (isPolyfill) {\r\n                    // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n                    // But also supports multiple App Insights usages\r\n                    global[STR_FETCH].polyfill = isPolyfill;\r\n                }\r\n            }\r\n            function _hookProto(target, funcName, callbacks) {\r\n                _addHook(InstrumentProto(target, funcName, callbacks));\r\n            }\r\n            function _instrumentXhr() {\r\n                if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {\r\n                    // Instrument open\r\n                    _hookProto(XMLHttpRequest, \"open\", {\r\n                        ns: _evtNamespace,\r\n                        req: function (args, method, url, async) {\r\n                            if (!_disableAjaxTracking) {\r\n                                var xhr = args[_DYN_INST /* @min:%2einst */];\r\n                                var ajaxData = xhr[strAjaxData];\r\n                                if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {\r\n                                    if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n                                        // Only create a single ajaxData (even when multiple AI instances are running)\r\n                                        _openHandler(xhr, method, url, async);\r\n                                    }\r\n                                    // always attach to the on ready state change (required for handling multiple instances)\r\n                                    _attachToOnReadyStateChange(xhr);\r\n                                }\r\n                            }\r\n                        },\r\n                        hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n                    });\r\n                    // Instrument send\r\n                    _hookProto(XMLHttpRequest, \"send\", {\r\n                        ns: _evtNamespace,\r\n                        req: function (args, context) {\r\n                            if (!_disableAjaxTracking) {\r\n                                var xhr = args[_DYN_INST /* @min:%2einst */];\r\n                                var ajaxData = xhr[strAjaxData];\r\n                                if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n                                    _createMarkId(\"xhr\", ajaxData);\r\n                                    ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n                                    _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n                                    ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n                                }\r\n                            }\r\n                        },\r\n                        hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n                    });\r\n                    // Instrument abort\r\n                    _hookProto(XMLHttpRequest, \"abort\", {\r\n                        ns: _evtNamespace,\r\n                        req: function (args) {\r\n                            if (!_disableAjaxTracking) {\r\n                                var xhr = args[_DYN_INST /* @min:%2einst */];\r\n                                var ajaxData = xhr[strAjaxData];\r\n                                if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n                                    ajaxData[_DYN_ABORTED /* @min:%2eaborted */] = 1;\r\n                                    ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n                                }\r\n                            }\r\n                        },\r\n                        hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n                    });\r\n                    // Instrument setRequestHeader\r\n                    _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n                        ns: _evtNamespace,\r\n                        req: function (args, header, value) {\r\n                            if (!_disableAjaxTracking && _enableRequestHeaderTracking) {\r\n                                var xhr = args[_DYN_INST /* @min:%2einst */];\r\n                                if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {\r\n                                    xhr[strAjaxData][_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n                                }\r\n                            }\r\n                        },\r\n                        hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n                    });\r\n                    _xhrInitialized = true;\r\n                }\r\n            }\r\n            function _isDisabledRequest(xhr, request, init) {\r\n                var isDisabled = false;\r\n                var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n                arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n                    var theRegex = regex;\r\n                    if (isString(regex)) {\r\n                        theRegex = new RegExp(regex);\r\n                    }\r\n                    if (!isDisabled) {\r\n                        isDisabled = theRegex.test(theUrl);\r\n                    }\r\n                });\r\n                // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n                if (isDisabled) {\r\n                    return isDisabled;\r\n                }\r\n                var idx = _indexOf(theUrl, \"?\");\r\n                var idx2 = _indexOf(theUrl, \"#\");\r\n                if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n                    idx = idx2;\r\n                }\r\n                if (idx !== -1) {\r\n                    // Strip off any Query string\r\n                    theUrl = theUrl.substring(0, idx);\r\n                }\r\n                // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n                if (!isNullOrUndefined(xhr)) {\r\n                    // Look on the XMLHttpRequest of the URL string value\r\n                    isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n                }\r\n                else if (!isNullOrUndefined(request)) { // fetch\r\n                    // Look for DisabledPropertyName in either Request or RequestInit\r\n                    isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n                        (init ? init[DisabledPropertyName] === true : false);\r\n                }\r\n                // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n                if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n                    isDisabled = true;\r\n                }\r\n                if (isDisabled) {\r\n                    // Add the disabled url if not present\r\n                    if (!_disabledUrls[theUrl]) {\r\n                        _disabledUrls[theUrl] = 1;\r\n                    }\r\n                }\r\n                else {\r\n                    // Check to see if the url is listed as disabled\r\n                    if (_disabledUrls[theUrl]) {\r\n                        isDisabled = true;\r\n                    }\r\n                }\r\n                return isDisabled;\r\n            }\r\n            /// <summary>Verifies that particalar instance of XMLHttpRequest needs to be monitored</summary>\r\n            /// <param name=\"excludeAjaxDataValidation\">Optional parameter. True if ajaxData must be excluded from verification</param>\r\n            /// <returns type=\"bool\">True if instance needs to be monitored, otherwise false</returns>\r\n            function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n                var ajaxValidation = true;\r\n                var initialized = _xhrInitialized;\r\n                if (!isNullOrUndefined(xhr)) {\r\n                    ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n                }\r\n                // checking to see that all interested functions on xhr were instrumented\r\n                return initialized\r\n                    // checking on ajaxData to see that it was not removed in user code\r\n                    && ajaxValidation;\r\n            }\r\n            function _getDistributedTraceCtx() {\r\n                var distributedTraceCtx = null;\r\n                if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n                    distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n                }\r\n                // Fall back\r\n                if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n                    distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n                }\r\n                return distributedTraceCtx;\r\n            }\r\n            function _openHandler(xhr, method, url, async) {\r\n                var _a;\r\n                var distributedTraceCtx = _getDistributedTraceCtx();\r\n                var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n                var spanID = generateW3CId().substr(0, 16);\r\n                var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n                ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n                ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n                ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n                ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n                ajaxData.async = async;\r\n                ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n                xhr[strAjaxData] = ajaxData;\r\n            }\r\n            function _attachToOnReadyStateChange(xhr) {\r\n                xhr[strAjaxData].xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n                    var _a;\r\n                    try {\r\n                        if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n                            _onAjaxComplete(xhr);\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        var exceptionText = dumpObj(e);\r\n                        // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n                        if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n                            _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, (_a = {},\r\n                                _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n                                _a.exception = exceptionText,\r\n                                _a));\r\n                        }\r\n                    }\r\n                }, _evtNamespace);\r\n            }\r\n            function _getResponseText(xhr) {\r\n                try {\r\n                    var responseType = xhr.responseType;\r\n                    if (responseType === \"\" || responseType === \"text\") {\r\n                        // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n                        return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n                }\r\n                return null;\r\n            }\r\n            function _onAjaxComplete(xhr) {\r\n                var ajaxData = xhr[strAjaxData];\r\n                ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n                ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n                function _reportXhrError(e, failedProps) {\r\n                    var errorProps = failedProps || {};\r\n                    errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n                    if (e) {\r\n                        errorProps[\"exception\"] = dumpObj(e);\r\n                    }\r\n                    _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n                }\r\n                _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n                    try {\r\n                        var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n                            var _a;\r\n                            var ajaxResponse = (_a = {\r\n                                    statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n                                },\r\n                                _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n                                _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getAjaxCorrelationContext(xhr),\r\n                                _a.type = xhr.responseType,\r\n                                _a[_DYN_RESPONSE_TEXT /* @min:responseText */] = _getResponseText(xhr),\r\n                                _a.response = xhr[_DYN_RESPONSE /* @min:%2eresponse */],\r\n                                _a);\r\n                            if (_enableResponseHeaderTracking) {\r\n                                var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n                                if (headers) {\r\n                                    // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n                                    // the regex converts the header string into an array of individual headers\r\n                                    var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n                                    var responseHeaderMap_2 = {};\r\n                                    arrForEach(arr, function (line) {\r\n                                        var parts = line.split(\": \");\r\n                                        var header = parts.shift();\r\n                                        var value = parts.join(\": \");\r\n                                        if (_canIncludeHeaders(header)) {\r\n                                            responseHeaderMap_2[header] = value;\r\n                                        }\r\n                                    });\r\n                                    ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n                                }\r\n                            }\r\n                            return ajaxResponse;\r\n                        });\r\n                        var properties = void 0;\r\n                        try {\r\n                            if (!!_addRequestContext) {\r\n                                properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n                            }\r\n                        }\r\n                        catch (e) {\r\n                            _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n                        }\r\n                        if (dependency) {\r\n                            if (properties !== undefined) {\r\n                                dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n                            }\r\n                            var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n                            _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n                        }\r\n                        else {\r\n                            _reportXhrError(null, {\r\n                                requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n                                responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n                            });\r\n                        }\r\n                    }\r\n                    finally {\r\n                        // cleanup telemetry data\r\n                        try {\r\n                            xhr[strAjaxData] = null;\r\n                        }\r\n                        catch (e) {\r\n                            // May throw in environments that prevent extension or freeze xhr\r\n                        }\r\n                    }\r\n                }, function (e) {\r\n                    _reportXhrError(e, null);\r\n                });\r\n            }\r\n            function _getAjaxCorrelationContext(xhr) {\r\n                var _a;\r\n                try {\r\n                    var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n                    if (responseHeadersString !== null) {\r\n                        var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n                        if (index !== -1) {\r\n                            var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n                            return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},\r\n                        _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n                        _a.exception = dumpObj(e),\r\n                        _a));\r\n                }\r\n            }\r\n            function _createMarkId(type, ajaxData) {\r\n                if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n                    var performance_1 = getPerformance();\r\n                    if (performance_1 && isFunction(performance_1.mark)) {\r\n                        _markCount++;\r\n                        var markId = _markPrefix + type + \"#\" + _markCount;\r\n                        performance_1.mark(markId);\r\n                        var entries = performance_1.getEntriesByName(markId);\r\n                        if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n                            ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n                var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n                var performance = getPerformance();\r\n                var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n                var retryDelay = _config[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:%2eajaxPerfLookupDelay */];\r\n                var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n                var attempt = 0;\r\n                (function locateResourceTiming() {\r\n                    try {\r\n                        if (performance && perfMark) {\r\n                            attempt++;\r\n                            var perfTiming = null;\r\n                            var entries = performance.getEntries();\r\n                            for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n                                var entry = entries[lp];\r\n                                if (entry) {\r\n                                    if (entry.entryType === \"resource\") {\r\n                                        if (entry.initiatorType === initiatorType &&\r\n                                            (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n                                            perfTiming = entry;\r\n                                        }\r\n                                    }\r\n                                    else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n                                        // We hit the start event\r\n                                        ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n                                        break;\r\n                                    }\r\n                                    if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n                                        // Fallback to try and reduce the time spent looking for the perf entry\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        if (!perfMark || // - we don't have a perfMark or\r\n                            ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n                            attempt >= maxAttempts || // - we have tried too many attempts or\r\n                            ajaxData.async === false) { // - this is a sync request\r\n                            if (perfMark && isFunction(performance.clearMarks)) {\r\n                                // Remove the mark so we don't fill up the performance resources too much\r\n                                performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n                            }\r\n                            ajaxData.perfAttempts = attempt;\r\n                            // just continue and report the track event\r\n                            trackCallback();\r\n                        }\r\n                        else {\r\n                            // We need to wait for the browser to populate the window.performance entry\r\n                            // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n                            // this is a scheduling issue for the browser implementation\r\n                            setTimeout(locateResourceTiming, retryDelay);\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        reportError(e);\r\n                    }\r\n                })();\r\n            }\r\n            function _createFetchRecord(input, init) {\r\n                var _a;\r\n                var distributedTraceCtx = _getDistributedTraceCtx();\r\n                var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n                var spanID = generateW3CId().substr(0, 16);\r\n                var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n                ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n                ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n                ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n                if (input instanceof Request) {\r\n                    ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input ? input.url : \"\";\r\n                }\r\n                else {\r\n                    ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input;\r\n                }\r\n                var method = \"GET\";\r\n                if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n                    method = init[_DYN_METHOD /* @min:%2emethod */];\r\n                }\r\n                else if (input && input instanceof Request) {\r\n                    method = input[_DYN_METHOD /* @min:%2emethod */];\r\n                }\r\n                ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n                var requestHeaders = {};\r\n                if (_enableRequestHeaderTracking) {\r\n                    var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n                    headers.forEach(function (value, key) {\r\n                        if (_canIncludeHeaders(key)) {\r\n                            requestHeaders[key] = value;\r\n                        }\r\n                    });\r\n                }\r\n                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n                _createMarkId(STR_FETCH, ajaxData);\r\n                return ajaxData;\r\n            }\r\n            function _getFailedFetchDiagnosticsMessage(input) {\r\n                var result = \"\";\r\n                try {\r\n                    if (!isNullOrUndefined(input)) {\r\n                        if (typeof (input) === \"string\") {\r\n                            result += \"(url: '\".concat(input, \"')\");\r\n                        }\r\n                        else {\r\n                            result += \"(url: '\".concat(input.url, \"')\");\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n                }\r\n                return result;\r\n            }\r\n            function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n                if (!ajaxData) {\r\n                    return;\r\n                }\r\n                function _reportFetchError(msgId, e, failedProps) {\r\n                    var errorProps = failedProps || {};\r\n                    errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n                    if (e) {\r\n                        errorProps[\"exception\"] = dumpObj(e);\r\n                    }\r\n                    _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n                }\r\n                ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n                ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n                _findPerfResourceEntry(STR_FETCH, ajaxData, function () {\r\n                    var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n                    var properties;\r\n                    try {\r\n                        if (!!_addRequestContext) {\r\n                            properties = _addRequestContext({ status: status, request: input, response: response });\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n                    }\r\n                    if (dependency) {\r\n                        if (properties !== undefined) {\r\n                            dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n                        }\r\n                        var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n                        _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n                    }\r\n                    else {\r\n                        _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n                            requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n                            responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n                        });\r\n                    }\r\n                }, function (e) {\r\n                    _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n                });\r\n            }\r\n            function _getFetchCorrelationContext(response) {\r\n                if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n                    try {\r\n                        var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n                        return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n                            fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n                            exception: dumpObj(e)\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n                var _a;\r\n                var result = true;\r\n                var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n                if (initializersCount > 0) {\r\n                    var details = (_a = {\r\n                            item: dependency\r\n                        },\r\n                        _a[STR_PROPERTIES /* @min:properties */] = properties,\r\n                        _a.sysProperties = systemProperties,\r\n                        _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n                        _a.aborted = ajaxData ? !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */] : false,\r\n                        _a);\r\n                    result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n                }\r\n                if (result) {\r\n                    _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n                }\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n    AjaxMonitor.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n        this.processNext(item, itemCtx);\r\n    };\r\n    /**\r\n     * Logs dependency call\r\n     * @param dependencyData dependency data object\r\n     */\r\n    AjaxMonitor.prototype.trackDependencyData = function (dependency, properties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AjaxMonitor.prototype.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you\r\n     * to access the headers and modify the values used to generate the distributed tracing correlation headers.\r\n     * @param dependencyListener - The Telemetry Initializer function\r\n     * @returns - A IDependencyListenerHandler to enable the initializer to be removed\r\n     */\r\n    AjaxMonitor.prototype.addDependencyListener = function (dependencyListener) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n     * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n     * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n     * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n     * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n     * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n     */\r\n    AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n        return null;\r\n    };\r\n    /**\r\n     * Protected function to allow sub classes the chance to add additional properties to the dependency event\r\n     * before it's sent. This function calls track, so sub-classes must call this function after they have\r\n     * populated their properties.\r\n     * @param dependencyData dependency data object\r\n     */\r\n    AjaxMonitor.prototype.trackDependencyDataInternal = function (dependency, properties, systemProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n    AjaxMonitor.getDefaultConfig = _getDefaultConfig;\r\n    AjaxMonitor.getEmptyConfig = _getEmptyConfig;\r\n    return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Application = /** @class */ (function () {\r\n    function Application() {\r\n    }\r\n    return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Device = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the Device class\r\n     */\r\n    function Device() {\r\n        // don't attempt to fingerprint browsers\r\n        this.id = \"browser\";\r\n        // Device type is a dimension in our data platform\r\n        // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n        this.deviceClass = \"Browser\";\r\n    }\r\n    return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_SDK_EXTENSION } from \"../__DynamicConstants\";\r\nvar Version = '2.8.10';\r\nvar Internal = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the internal telemetry data class.\r\n     */\r\n    function Internal(config) {\r\n        this.sdkVersion = (config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */] && config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() ? config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() + \"_\" : \"\") + \"javascript:\" + Version;\r\n    }\r\n    return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Location = /** @class */ (function () {\r\n    function Location() {\r\n    }\r\n    return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_CONFIG, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_EXPIRATION_M7, _DYN_SESSION_RENEWAL_MS, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n    function Session() {\r\n    }\r\n    return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n    function _SessionManager(config, core) {\r\n        var self = this;\r\n        var _storageNamePrefix;\r\n        var _cookieUpdatedTimestamp;\r\n        var _logger = safeGetLogger(core);\r\n        var _cookieManager = safeGetCookieMgr(core);\r\n        dynamicProto(_SessionManager, self, function (_self) {\r\n            if (!config) {\r\n                config = {};\r\n            }\r\n            if (!isFunction(config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */])) {\r\n                config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */] = function () { return _SessionManager.acquisitionSpan; };\r\n            }\r\n            if (!isFunction(config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */])) {\r\n                config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */] = function () { return _SessionManager.renewalSpan; };\r\n            }\r\n            _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n            // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n            var sessionCookiePostfix = (_self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]()) ?\r\n                _self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]() :\r\n                ((_self.config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() : \"\");\r\n            _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n            _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n            _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n                // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n                // the number to be incorrect.\r\n                var nowMs = dateNow();\r\n                var isExpired = false;\r\n                var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n                if (!session.id) {\r\n                    isExpired = !_initializeAutomaticSession(session, nowMs);\r\n                }\r\n                var sessionExpirationMs = _self.config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]();\r\n                if (!isExpired && sessionExpirationMs > 0) {\r\n                    var sessionRenewalMs = _self.config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n                    var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n                    var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n                    isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n                    isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n                    isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n                }\r\n                // renew if acquisitionSpan or renewalSpan has elapsed\r\n                if (isExpired) {\r\n                    // update automaticSession so session state has correct id\r\n                    _renew(nowMs);\r\n                }\r\n                else {\r\n                    // do not update the cookie more often than cookieUpdateInterval\r\n                    if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n                        _setCookie(session, nowMs);\r\n                    }\r\n                }\r\n            };\r\n            /**\r\n             *  Record the current state of the automatic session and store it in our cookie string format\r\n             *  into the browser's local storage. This is used to restore the session data when the cookie\r\n             *  expires.\r\n             */\r\n            _self.backup = function () {\r\n                var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n                _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n            };\r\n            /**\r\n             * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n             * initialize the automatic session.\r\n             * @returns true if values set otherwise false\r\n             */\r\n            function _initializeAutomaticSession(session, now) {\r\n                var isValid = false;\r\n                var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n                if (cookieValue && isFunction(cookieValue.split)) {\r\n                    isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n                }\r\n                else {\r\n                    // There's no cookie, but we might have session data in local storage\r\n                    // This can happen if the session expired or the user actively deleted the cookie\r\n                    // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n                    // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n                    var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n                    if (storageValue) {\r\n                        isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n                    }\r\n                }\r\n                return isValid || !!session.id;\r\n            }\r\n            /**\r\n             * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n             * use this data to initialize automaticSession.\r\n             *\r\n             * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n             * @returns true if values set otherwise false\r\n             */\r\n            function _initializeAutomaticSessionWithData(session, sessionData) {\r\n                var isValid = false;\r\n                var sessionReset = \", session will be reset\";\r\n                var tokens = sessionData.split(\"|\");\r\n                if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n                    try {\r\n                        var acqMs = +tokens[1] || 0;\r\n                        var renewalMs = +tokens[2] || 0;\r\n                        if (isNaN(acqMs) || acqMs <= 0) {\r\n                            _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n                        }\r\n                        else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n                            _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n                        }\r\n                        else if (tokens[0]) {\r\n                            // Everything looks valid so set the values\r\n                            session.id = tokens[0];\r\n                            session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n                            session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n                            isValid = true;\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                }\r\n                return isValid;\r\n            }\r\n            function _renew(nowMs) {\r\n                var theConfig = (_self[_DYN_CONFIG /* @min:%2econfig */] || {});\r\n                var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n                _self.automaticSession.id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n                _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n                _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n                // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n                if (!utlCanUseLocalStorage()) {\r\n                    _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n                }\r\n            }\r\n            function _setCookie(session, nowMs) {\r\n                var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n                session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n                var config = _self[_DYN_CONFIG /* @min:%2econfig */];\r\n                var renewalPeriodMs = config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n                // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n                // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n                var acqTimeLeftMs = (acq + config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]()) - nowMs;\r\n                var cookie = [session.id, acq, nowMs];\r\n                var maxAgeSec = 0;\r\n                if (acqTimeLeftMs < renewalPeriodMs) {\r\n                    maxAgeSec = acqTimeLeftMs / 1000;\r\n                }\r\n                else {\r\n                    maxAgeSec = renewalPeriodMs / 1000;\r\n                }\r\n                var cookieDomain = config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */] ? config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */]() : null;\r\n                // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n                // A cookie with 0 expiry in the session cookie will never expire for that browser session.  If the browser is closed the cookie expires.\r\n                // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n                _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]() > 0 ? maxAgeSec : null, cookieDomain);\r\n                _cookieUpdatedTimestamp = nowMs;\r\n            }\r\n            function _setStorage(guid, acq, renewal) {\r\n                // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n                // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n                // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n                utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n            }\r\n        });\r\n    }\r\n    _SessionManager.prototype.update = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     *  Record the current state of the automatic session and store it in our cookie string format\r\n     *  into the browser's local storage. This is used to restore the session data when the cookie\r\n     *  expires.\r\n     */\r\n    _SessionManager.prototype.backup = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n    _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n    _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n    return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n    function TelemetryTrace(id, parentId, name, logger) {\r\n        var _self = this;\r\n        _self.traceID = id || generateW3CId();\r\n        _self.parentID = parentId;\r\n        var location = getLocation();\r\n        if (!name && location && location.pathname) {\r\n            name = location.pathname;\r\n        }\r\n        _self.name = dataSanitizeString(logger, name);\r\n    }\r\n    return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM8, _DYN_CONFIG, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n    // Validate:\r\n    // 1. Id is a non-empty string.\r\n    // 2. It does not contain special characters for cookies.\r\n    if (typeof id !== \"string\" ||\r\n        !id ||\r\n        id.match(/,|;|=| |\\|/)) {\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n    function User(config, core) {\r\n        /**\r\n         * A flag indicating whether this represents a new user\r\n         */\r\n        this.isNewUser = false;\r\n        /**\r\n         * A flag indicating whether the user cookie has been set\r\n         */\r\n        this.isUserCookieSet = false;\r\n        var _logger = safeGetLogger(core);\r\n        var _cookieManager = safeGetCookieMgr(core);\r\n        var _storageNamePrefix;\r\n        dynamicProto(User, this, function (_self) {\r\n            _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n            var userCookiePostfix = (_self.config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]() : \"\";\r\n            _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n            // get userId or create new one if none exists\r\n            var cookie = _cookieManager.get(_storageNamePrefix());\r\n            if (cookie) {\r\n                _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n                var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n                if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _self.id = params[0];\r\n                    // we already have a cookie\r\n                    _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n                }\r\n            }\r\n            function _generateNewId() {\r\n                var theConfig = (config || {});\r\n                var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n                var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n                return id;\r\n            }\r\n            function _generateNewCookie(userId) {\r\n                var acqStr = toISOString(new Date());\r\n                _self.accountAcquisitionDate = acqStr;\r\n                _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n                var newCookie = [userId, acqStr];\r\n                return newCookie;\r\n            }\r\n            function _setUserCookie(cookie) {\r\n                // without expiration, cookies expire at the end of the session\r\n                // set it to 365 days from now\r\n                // 365 * 24 * 60 * 60 = 31536000\r\n                var oneYear = 31536000;\r\n                _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n            }\r\n            if (!_self.id) {\r\n                _self.id = _generateNewId();\r\n                var newCookie = _generateNewCookie(_self.id);\r\n                _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n                // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n                // We should respect their wishes and clear ourselves from local storage\r\n                var name_1 = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"ai_session\" : \"ai_session\";\r\n                utlRemoveStorage(_logger, name_1);\r\n            }\r\n            // We still take the account id from the ctor param for backward compatibility.\r\n            // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n            _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] ? config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */]() : undefined;\r\n            // Get the auth user id and account id from the cookie if exists\r\n            // Cookie is in the pattern: <authenticatedId>|<accountId>\r\n            var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n            if (authCookie) {\r\n                authCookie = decodeURI(authCookie);\r\n                var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n                if (authCookieString[0]) {\r\n                    _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n                }\r\n                if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n                    _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n                }\r\n            }\r\n            _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n                if (storeInCookie === void 0) { storeInCookie = false; }\r\n                // Validate inputs to ensure no cookie control characters.\r\n                var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n                if (isInvalidInput) {\r\n                    _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n                        \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n                    return;\r\n                }\r\n                // Create cookie string.\r\n                _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n                var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n                if (accountId) {\r\n                    _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n                    authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n                }\r\n                if (storeInCookie) {\r\n                    // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n                    // Encoding the cookie to handle unexpected unicode characters.\r\n                    _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n                }\r\n            };\r\n            /**\r\n             * Clears the authenticated user id and the account id from the user context.\r\n             * @returns {}\r\n             */\r\n            _self.clearAuthenticatedUserContext = function () {\r\n                _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n                _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n                _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n            };\r\n            _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n                // Optimizations to avoid setting and processing the cookie when not needed\r\n                if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n                    var user_id = userId ? userId : _generateNewId();\r\n                    var user_cookie = _generateNewCookie(user_id);\r\n                    _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n                }\r\n            };\r\n        });\r\n    }\r\n    /**\r\n    * Sets the authenticated user id and the account id in this session.\r\n    *\r\n    * @param authenticatedUserId {string} - The authenticated user id. A unique and persistent string that represents each authenticated user in the service.\r\n    * @param accountId {string} - An optional string to represent the account associated with the authenticated user.\r\n    */\r\n    User.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n        if (storeInCookie === void 0) { storeInCookie = false; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Clears the authenticated user id and the account id from the user context.\r\n     * @returns {}\r\n     */\r\n    User.prototype.clearAuthenticatedUserContext = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Update or create the user cookie if cookies where previously disabled or the new userId does not match the existing value.\r\n     * If you pass nothing a new random user id will be created.\r\n     * @param userId - Specific either the current (via appInsights.context.user.id) or new id that you want to set\r\n     */\r\n    User.prototype.update = function (userId) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    User.cookieSeparator = \"|\";\r\n    User.userCookieName = \"ai_user\";\r\n    User.authUserCookieName = \"ai_authUser\";\r\n    return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n    if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n        delete target[name];\r\n    }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n    function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n        var _this = this;\r\n        var logger = core.logger;\r\n        this.appId = function () { return null; };\r\n        this[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () { return null; };\r\n        dynamicProto(TelemetryContext, this, function (_self) {\r\n            _self.application = new Application();\r\n            _self.internal = new Internal(defaultConfig);\r\n            if (hasWindow()) {\r\n                _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core);\r\n                _self.device = new Device();\r\n                _self.location = new Location();\r\n                _self.user = new User(defaultConfig, core);\r\n                var traceId = void 0;\r\n                var parentId = void 0;\r\n                var name_1;\r\n                if (previousTraceCtx) {\r\n                    traceId = previousTraceCtx.getTraceId();\r\n                    parentId = previousTraceCtx.getSpanId();\r\n                    name_1 = previousTraceCtx.getName();\r\n                }\r\n                _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n                _self.session = new Session();\r\n            }\r\n            _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n                var session = _self.session;\r\n                var sesId = null;\r\n                // If customer set session info, apply their context; otherwise apply context automatically generated\r\n                if (session && isString(session.id)) {\r\n                    sesId = session.id;\r\n                }\r\n                else {\r\n                    // Gets the automatic session if it exists or an empty object\r\n                    var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n                    sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n                }\r\n                return sesId;\r\n            };\r\n            _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n                setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n            };\r\n            _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n                setValue(evt.ext, Extensions.OSExt, _self.os);\r\n            };\r\n            _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n                var application = _self.application;\r\n                if (application) {\r\n                    // evt.ext.app\r\n                    var tags = getSetValue(evt, strTags);\r\n                    setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n                    setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n                var device = _self.device;\r\n                if (device) {\r\n                    // evt.ext.device\r\n                    var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n                    setValue(extDevice, \"localId\", device.id, isString);\r\n                    setValue(extDevice, \"ip\", device.ip, isString);\r\n                    setValue(extDevice, \"model\", device.model, isString);\r\n                    setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n                var internal = _self.internal;\r\n                if (internal) {\r\n                    var tags = getSetValue(evt, strTags);\r\n                    setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n                    setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n                    if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n                        setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n                        setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n                var location = _this.location;\r\n                if (location) {\r\n                    setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n                var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n                if (telemetryTrace) {\r\n                    var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n                    setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n                    setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n                    setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n                }\r\n            };\r\n            _self.applyWebContext = function (evt, itemCtx) {\r\n                var web = _this.web;\r\n                if (web) {\r\n                    setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n                var user = _self.user;\r\n                if (user) {\r\n                    var tags = getSetValue(evt, strTags, []);\r\n                    // stays in tags\r\n                    setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n                    // CS 4.0\r\n                    var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n                    setValue(extUser, \"id\", user.id, isString);\r\n                    setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n                }\r\n            };\r\n            _self.cleanUp = function (evt, itemCtx) {\r\n                var ext = evt.ext;\r\n                if (ext) {\r\n                    _removeEmpty(ext, Extensions.DeviceExt);\r\n                    _removeEmpty(ext, Extensions.UserExt);\r\n                    _removeEmpty(ext, Extensions.WebExt);\r\n                    _removeEmpty(ext, Extensions.OSExt);\r\n                    _removeEmpty(ext, Extensions.AppExt);\r\n                    _removeEmpty(ext, Extensions.TraceExt);\r\n                }\r\n            };\r\n        });\r\n    }\r\n    TelemetryContext.prototype.applySessionContext = function (evt, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyOperatingSystemContxt = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyApplicationContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyDeviceContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyInternalContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyLocationContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyOperationContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyWebContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.applyUserContext = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    TelemetryContext.prototype.cleanUp = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, BreezeChannelIdentifier, ConfigurationManager, ConnectionStringParser, ContextTagKeys, CorrelationIdHelper, CtxTagKeys, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Data, DataSanitizer, DateTimeUtils, DisabledPropertyName, DistributedTracingModes, Envelope, Event, Exception, Extensions, HttpMethod, Metric, PageView, PageViewPerformance, ProcessLegacy, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, SampleRate, SeverityLevel, TelemetryItemCreator, Trace, UrlHelper, Util, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, arrForEach, arrIndexOf, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, objForEachKey, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF20, _DYN_APP_INSIGHTS, _DYN_CONFIG, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_DIAGNOSTIC_LOG_INTER4, _DYN_DISABLE_FLUSH_ON_BEF11, _DYN_DISABLE_FLUSH_ON_UNL12, _DYN_DISABLE_IKEY_DEPRECA18, _DYN_ENDPOINT_URL, _DYN_GET_TRANSMISSION_CON19, _DYN_INDEX_OF, _DYN_INSTRUMENTATION_KEY, _DYN_LOAD_APP_INSIGHTS, _DYN_ONUNLOAD_FLUSH, _DYN_PUSH, _DYN_QUEUE, _DYN_UPDATE_SNIPPET_DEFIN0, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n    STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n    Default: 0 /* FieldType.Default */,\r\n    Required: 1 /* FieldType.Required */,\r\n    Array: 2 /* FieldType.Array */,\r\n    Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n    __proto__: null,\r\n    PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n    BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n    AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n    Util: Util,\r\n    CorrelationIdHelper: CorrelationIdHelper,\r\n    UrlHelper: UrlHelper,\r\n    DateTimeUtils: DateTimeUtils,\r\n    ConnectionStringParser: ConnectionStringParser,\r\n    FieldType: fieldType,\r\n    RequestHeaders: RequestHeaders,\r\n    DisabledPropertyName: DisabledPropertyName,\r\n    ProcessLegacy: ProcessLegacy,\r\n    SampleRate: SampleRate,\r\n    HttpMethod: HttpMethod,\r\n    DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n    Envelope: Envelope,\r\n    Event: Event,\r\n    Exception: Exception,\r\n    Metric: Metric,\r\n    PageView: PageView,\r\n    RemoteDependencyData: RemoteDependencyData,\r\n    Trace: Trace,\r\n    PageViewPerformance: PageViewPerformance,\r\n    Data: Data,\r\n    SeverityLevel: SeverityLevel,\r\n    ConfigurationManager: ConfigurationManager,\r\n    ContextTagKeys: ContextTagKeys,\r\n    DataSanitizer: DataSanitizer,\r\n    TelemetryItemCreator: TelemetryItemCreator,\r\n    CtxTagKeys: CtxTagKeys,\r\n    Extensions: Extensions,\r\n    DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n    function Initialization(snippet) {\r\n        var _this = this;\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var dependencies;\r\n        var properties;\r\n        var _sender;\r\n        var _snippetVersion;\r\n        var _evtNamespace;\r\n        var _houseKeepingNamespace;\r\n        var _core;\r\n        dynamicProto(Initialization, this, function (_self) {\r\n            _initDefaults();\r\n            // initialize the queue and config in case they are undefined\r\n            _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n            snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n            snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n            var config = snippet[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n            if (config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]) {\r\n                var cs = parseConnectionString(config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]);\r\n                var ingest = cs.ingestionendpoint;\r\n                config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = ingest ? (ingest + DEFAULT_BREEZE_PATH) : config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]; // only add /v2/track when from connectionstring\r\n                config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs.instrumentationkey || config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n            }\r\n            _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */] = new AnalyticsPlugin();\r\n            properties = new PropertiesPlugin();\r\n            dependencies = new DependenciesPlugin();\r\n            _sender = new Sender();\r\n            _core = new AppInsightsCore();\r\n            _self.core = _core;\r\n            var isErrMessageDisabled = isNullOrUndefined(config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */]) ? true : config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */];\r\n            if (!config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && !isErrMessageDisabled) {\r\n                _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n            }\r\n            _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n            _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n            _getSKUDefaults();\r\n            _self[STR_FLUSH /* @min:%2eflush */] = function (async) {\r\n                if (async === void 0) { async = true; }\r\n                doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n                    arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n                        arrForEach(channels, function (channel) {\r\n                            channel[STR_FLUSH /* @min:%2eflush */](async);\r\n                        });\r\n                    });\r\n                }, null, async);\r\n            };\r\n            _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n                if (async === void 0) { async = true; }\r\n                arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n                    arrForEach(channels, function (channel) {\r\n                        if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n                            channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n                        }\r\n                        else {\r\n                            channel[STR_FLUSH /* @min:%2eflush */](async);\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n            _self[_DYN_LOAD_APP_INSIGHTS /* @min:%2eloadAppInsights */] = function (legacyMode, logger, notificationManager) {\r\n                if (legacyMode === void 0) { legacyMode = false; }\r\n                function _updateSnippetProperties(snippet) {\r\n                    if (snippet) {\r\n                        var snippetVer = \"\";\r\n                        if (!isNullOrUndefined(_snippetVersion)) {\r\n                            snippetVer += _snippetVersion;\r\n                        }\r\n                        if (legacyMode) {\r\n                            snippetVer += \".lg\";\r\n                        }\r\n                        if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n                            _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n                        }\r\n                        // apply updated properties to the global instance (snippet)\r\n                        objForEachKey(_self, function (field, value) {\r\n                            if (isString(field) &&\r\n                                !isFunction(value) &&\r\n                                field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n                                arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n                                snippet[field] = value;\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n                // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n                if (legacyMode && _self[_DYN_CONFIG /* @min:%2econfig */].extensions && _self[_DYN_CONFIG /* @min:%2econfig */].extensions.length > 0) {\r\n                    throwError(\"Extensions not allowed in legacy mode\");\r\n                }\r\n                doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n                    var extensions = [];\r\n                    extensions[_DYN_PUSH /* @min:%2epush */](_sender);\r\n                    extensions[_DYN_PUSH /* @min:%2epush */](properties);\r\n                    extensions[_DYN_PUSH /* @min:%2epush */](dependencies);\r\n                    extensions[_DYN_PUSH /* @min:%2epush */](_self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */]);\r\n                    // initialize core\r\n                    _core.initialize(_self[_DYN_CONFIG /* @min:%2econfig */], extensions, logger, notificationManager);\r\n                    _self[_DYN_CONTEXT /* @min:%2econtext */] = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n                    if (_internalSdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n                        _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = _internalSdkSrc;\r\n                    }\r\n                    _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n                    // Empty queue of all api calls logged prior to sdk download\r\n                    _self.emptyQueue();\r\n                    _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n                    _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */](_this);\r\n                });\r\n                return _self;\r\n            };\r\n            _self[_DYN_UPDATE_SNIPPET_DEFIN0 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n                // apply full appInsights to the global instance\r\n                // Note: This must be called before loadAppInsights is called\r\n                proxyAssign(snippet, _self, function (name) {\r\n                    // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n                    return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n                });\r\n            };\r\n            _self.emptyQueue = function () {\r\n                // call functions that were queued before the main script was loaded\r\n                try {\r\n                    if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n                        // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n                        var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n                        for (var i = 0; i < length_1; i++) {\r\n                            var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n                            call();\r\n                        }\r\n                        _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n                        delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n                    }\r\n                }\r\n                catch (exception) {\r\n                    var properties_1 = {};\r\n                    if (exception && isFunction(exception.toString)) {\r\n                        properties_1.exception = exception.toString();\r\n                    }\r\n                    // need from core\r\n                    // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n                    //     eLoggingSeverity.WARNING,\r\n                    //     _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n                    //     \"Failed to send queued telemetry\",\r\n                    //     properties);\r\n                }\r\n            };\r\n            _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n                // Add callback to push events when the user navigates away\r\n                if (hasWindow() || hasDocument()) {\r\n                    var performHousekeeping = function () {\r\n                        // Adds the ability to flush all data before the page unloads.\r\n                        // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n                        // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n                        // Telemetry here will help us analyze how effective this approach is.\r\n                        // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n                        // impact on user experience.\r\n                        // appInsightsInstance.context._sender.triggerSend();\r\n                        appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n                        // Back up the current session to local storage\r\n                        // This lets us close expired sessions after the cookies themselves expire\r\n                        if (isFunction(_this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n                            var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n                            if (loadedPlugin) {\r\n                                var propertiesPlugin = loadedPlugin.plugin;\r\n                                if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n                                    propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n                                }\r\n                            }\r\n                        }\r\n                    };\r\n                    var added = false;\r\n                    var excludePageUnloadEvents = appInsightsInstance.appInsights[_DYN_CONFIG /* @min:%2econfig */].disablePageUnloadEvents;\r\n                    if (!_houseKeepingNamespace) {\r\n                        _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n                    }\r\n                    if (!appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_BEF11 /* @min:%2edisableFlushOnBeforeUnload */]) {\r\n                        // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n                        // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n                        if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n                            added = true;\r\n                        }\r\n                        // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n                        if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n                            added = true;\r\n                        }\r\n                        // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n                        // log the failure in this case\r\n                        if (!added && !isReactNative()) {\r\n                            _throwInternal(appInsightsInstance[_DYN_APP_INSIGHTS /* @min:%2eappInsights */].core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n                        }\r\n                    }\r\n                    if (!added && !appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_UNL12 /* @min:%2edisableFlushOnUnload */]) {\r\n                        // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n                        addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n                    }\r\n                }\r\n            };\r\n            _self.getSender = function () {\r\n                return _sender;\r\n            };\r\n            _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n                _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n                // Remove any registered event handlers\r\n                if (_houseKeepingNamespace) {\r\n                    removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n                    removePageHideEventListener(null, _houseKeepingNamespace);\r\n                }\r\n                _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n            };\r\n            proxyFunctions(_self, _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */], [\r\n                STR_GET_COOKIE_MGR,\r\n                STR_TRACK_EVENT,\r\n                STR_TRACK_PAGE_VIEW,\r\n                \"trackPageViewPerformance\",\r\n                STR_TRACK_EXCEPTION,\r\n                \"_onerror\",\r\n                STR_TRACK_TRACE,\r\n                STR_TRACK_METRIC,\r\n                STR_START_TRACK_PAGE,\r\n                STR_STOP_TRACK_PAGE,\r\n                STR_START_TRACK_EVENT,\r\n                STR_STOP_TRACK_EVENT\r\n            ]);\r\n            proxyFunctions(_self, _getCurrentDependencies, [\r\n                STR_TRACK_DEPENDENCY_DATA,\r\n                \"addDependencyListener\",\r\n                \"addDependencyInitializer\"\r\n            ]);\r\n            proxyFunctions(_self, _core, [\r\n                STR_ADD_TELEMETRY_INITIALIZER,\r\n                STR_POLL_INTERNAL_LOGS,\r\n                \"stopPollingInternalLogs\",\r\n                STR_GET_PLUGIN,\r\n                \"addPlugin\",\r\n                STR_EVT_NAMESPACE,\r\n                \"addUnloadCb\",\r\n                \"getTraceCtx\"\r\n            ]);\r\n            proxyFunctions(_self, function () {\r\n                var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n                return context ? context.user : null;\r\n            }, [\r\n                STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n                STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n            ]);\r\n            function _getSKUDefaults() {\r\n                _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] =\r\n                    _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] > 0 ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] : 10000;\r\n            }\r\n            // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n            function _getCurrentDependencies() {\r\n                return dependencies;\r\n            }\r\n            function _initDefaults() {\r\n                _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n                _houseKeepingNamespace = null;\r\n                dependencies = null;\r\n                properties = null;\r\n                _sender = null;\r\n                _snippetVersion = null;\r\n            }\r\n        });\r\n    }\r\n    // Analytics Plugin\r\n    /**\r\n     * Get the current cookie manager for this instance\r\n     */\r\n    Initialization.prototype.getCookieMgr = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Log a user action or other occurrence.\r\n     * @param {IEventTelemetry} event\r\n     * @param {ICustomProperties} [customProperties]\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackEvent = function (event, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Logs that a page, or similar container was displayed to the user.\r\n     * @param {IPageViewTelemetry} pageView\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackPageView = function (pageView) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log a bag of performance information via the customProperties field.\r\n     * @param {IPageViewPerformanceTelemetry} pageViewPerformance\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackPageViewPerformance = function (pageViewPerformance) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log an exception that you have caught.\r\n     * @param {IExceptionTelemetry} exception\r\n     * @param {{[key: string]: any}} customProperties   Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackException = function (exception, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Manually send uncaught exception telemetry. This method is automatically triggered\r\n     * on a window.onerror event.\r\n     * @param {IAutoExceptionTelemetry} exception\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype._onerror = function (exception) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log a diagnostic scenario such entering or leaving a function.\r\n     * @param {ITraceTelemetry} trace\r\n     * @param {ICustomProperties} [customProperties]\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackTrace = function (trace, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log a numeric value that is not associated with a specific event. Typically used\r\n     * to send regular reports of performance indicators.\r\n     *\r\n     * To send a single measurement, just use the `name` and `average` fields\r\n     * of {@link IMetricTelemetry}.\r\n     *\r\n     * If you take measurements frequently, you can reduce the telemetry bandwidth by\r\n     * aggregating multiple measurements and sending the resulting average and modifying\r\n     * the `sampleCount` field of {@link IMetricTelemetry}.\r\n     * @param {IMetricTelemetry} metric input object argument. Only `name` and `average` are mandatory.\r\n     * @param {ICustomProperties} [customProperties]\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackMetric = function (metric, customProperties) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n     * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n     * and send the event.\r\n     * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n     */\r\n    Initialization.prototype.startTrackPage = function (name) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n     * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n     * @param   name  The string you used as the name in startTrackPage. Defaults to the document title.\r\n     * @param   url   String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n     * @param   properties  map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n     * @param   measurements    map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n     */\r\n    Initialization.prototype.stopTrackPage = function (name, url, customProperties, measurements) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Initialization.prototype.startTrackEvent = function (name) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Log an extended event that you started timing with `startTrackEvent`.\r\n     * @param   name    The string you used to identify this event in `startTrackEvent`.\r\n     * @param   properties  map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n     * @param   measurements    map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n     */\r\n    Initialization.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Initialization.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    // Properties Plugin\r\n    /**\r\n     * Set the authenticated user id and the account id. Used for identifying a specific signed-in user. Parameters must not contain whitespace or ,;=|\r\n     *\r\n     * The method will only set the `authenticatedUserId` and `accountId` in the current page view. To set them for the whole session, you should set `storeInCookie = true`\r\n     * @param {string} authenticatedUserId\r\n     * @param {string} [accountId]\r\n     * @param {boolean} [storeInCookie=false]\r\n     */\r\n    Initialization.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n        if (storeInCookie === void 0) { storeInCookie = false; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Clears the authenticated user id and account id. The associated cookie is cleared, if present.\r\n     */\r\n    Initialization.prototype.clearAuthenticatedUserContext = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    // Dependencies Plugin\r\n    /**\r\n     * Log a dependency call (e.g. ajax)\r\n     * @param {IDependencyTelemetry} dependency\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.trackDependencyData = function (dependency) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    // Misc\r\n    /**\r\n     * Manually trigger an immediate send of all telemetry still in the buffer.\r\n     * @param {boolean} [async=true]\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.flush = function (async) {\r\n        if (async === void 0) { async = true; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Manually trigger an immediate send of all telemetry still in the buffer using beacon Sender.\r\n     * Fall back to xhr sender if beacon is not supported.\r\n     * @param {boolean} [async=true]\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.onunloadFlush = function (async) {\r\n        if (async === void 0) { async = true; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Initialize this instance of ApplicationInsights\r\n     * @returns {IApplicationInsights}\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n        if (legacyMode === void 0) { legacyMode = false; }\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Overwrite the lazy loaded fields of global window snippet to contain the\r\n     * actual initialized API methods\r\n     * @param {Snippet} snippet\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.updateSnippetDefinitions = function (snippet) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Call any functions that were queued before the main script was loaded\r\n     * @memberof Initialization\r\n     */\r\n    Initialization.prototype.emptyQueue = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Initialization.prototype.pollInternalLogs = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Initialization.prototype.stopPollingInternalLogs = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Initialization.prototype.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    Initialization.prototype.getSender = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered\r\n     * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous\r\n     * unload call return `true` stating that all plugins reported that they also unloaded, the recommended\r\n     * approach is to create a new instance and initialize that instance.\r\n     * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable\r\n     * to successfully remove any global references or they may just be completing the unload process asynchronously.\r\n     */\r\n    Initialization.prototype.unload = function (isAsync, unloadComplete) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    Initialization.prototype.getPlugin = function (pluginIdentifier) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    Initialization.prototype.addPlugin = function (plugin, replaceExisting, doAsync, addCb) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Returns the unique event namespace that should be used\r\n     */\r\n    Initialization.prototype.evtNamespace = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Add an unload handler that will be called when the SDK is being unloaded\r\n     * @param handler - the handler\r\n     */\r\n    Initialization.prototype.addUnloadCb = function (handler) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you\r\n     * to access the headers and modify the values used to generate the distributed tracing correlation headers. (added in v2.8.4)\r\n     * @param dependencyListener - The Telemetry Initializer function\r\n     * @returns - A IDependencyListenerHandler to enable the initializer to be removed\r\n     */\r\n    Initialization.prototype.addDependencyListener = function (dependencyListener) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    /**\r\n     * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n     * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n     * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n     * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n     * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n     * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n     */\r\n    Initialization.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n        return null;\r\n    };\r\n    /**\r\n     * Gets the current distributed trace context for this instance if available\r\n     */\r\n    Initialization.prototype.getTraceCtx = function () {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n        return null;\r\n    };\r\n    return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n    var sdkSrc = null;\r\n    var isModule = false;\r\n    var cdns = [\r\n        \"://js.monitor.azure.com/\",\r\n        \"://az416426.vo.msecnd.net/\"\r\n    ];\r\n    try {\r\n        // Try and determine whether the sdk is being loaded from the CDN\r\n        // currentScript is only valid during initial processing\r\n        var scrpt = (document || {}).currentScript;\r\n        if (scrpt) {\r\n            sdkSrc = scrpt.src;\r\n            // } else {\r\n            //     // We need to update to at least typescript 2.9 for this to work :-(\r\n            //     // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n            //     let meta = import.meta;\r\n            //     sdkSrc = (meta || {}).url;\r\n            //     isModule = true;\r\n        }\r\n    }\r\n    catch (e) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    if (sdkSrc) {\r\n        try {\r\n            var url = sdkSrc.toLowerCase();\r\n            if (url) {\r\n                var src = \"\";\r\n                for (var idx = 0; idx < cdns.length; idx++) {\r\n                    if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](cdns[idx]) !== -1) {\r\n                        src = \"cdn\" + (idx + 1);\r\n                        if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/scripts/\") === -1) {\r\n                            if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/next/\") !== -1) {\r\n                                src += \"-next\";\r\n                            }\r\n                            else if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/beta/\") !== -1) {\r\n                                src += \"-beta\";\r\n                            }\r\n                        }\r\n                        _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        catch (e) {\r\n            // eslint-disable-next-line no-empty\r\n        }\r\n    }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SDK_EXTENSION, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n    __extends(PropertiesPlugin, _super);\r\n    function PropertiesPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.priority = 110;\r\n        _this.identifier = PropertiesPluginIdentifier;\r\n        var _extensionConfig;\r\n        var _distributedTraceCtx;\r\n        var _previousTraceCtx;\r\n        dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n            _initDefaults();\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                _base.initialize(config, core, extensions, pluginChain);\r\n                _populateDefaults(config);\r\n            };\r\n            /**\r\n             * Add Part A fields to the event\r\n             * @param event The event that needs to be processed\r\n             */\r\n            _self.processTelemetry = function (event, itemCtx) {\r\n                if (isNullOrUndefined(event)) {\r\n                    // TODO(barustum): throw an internal event once we have support for internal logging\r\n                }\r\n                else {\r\n                    itemCtx = _self._getTelCtx(itemCtx);\r\n                    // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n                    if (event.name === PageView.envelopeType) {\r\n                        itemCtx.diagLog().resetInternalMessageCount();\r\n                    }\r\n                    var theContext = (_self.context || {});\r\n                    if (theContext.session) {\r\n                        // If customer did not provide custom session id update the session manager\r\n                        if (typeof _self.context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n                            theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n                        }\r\n                    }\r\n                    var userCtx = theContext.user;\r\n                    if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n                        userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n                    }\r\n                    _processTelemetryInternal(event, itemCtx);\r\n                    if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n                        userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n                        var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n                        _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n                    }\r\n                    _self.processNext(event, itemCtx);\r\n                }\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                var core = (unloadCtx || {}).core();\r\n                if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n                    var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n                    if (traceCtx === _distributedTraceCtx) {\r\n                        core.setTraceCtx(_previousTraceCtx);\r\n                    }\r\n                }\r\n                _initDefaults();\r\n            };\r\n            function _initDefaults() {\r\n                _extensionConfig = null;\r\n                _distributedTraceCtx = null;\r\n                _previousTraceCtx = null;\r\n            }\r\n            function _populateDefaults(config) {\r\n                var identifier = _self.identifier;\r\n                var core = _self.core;\r\n                var ctx = createProcessTelemetryContext(null, config, core);\r\n                var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n                _extensionConfig = _extensionConfig || {};\r\n                objForEachKey(defaultConfig, function (field, value) {\r\n                    _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n                });\r\n                _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n                _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n                _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n                core.setTraceCtx(_distributedTraceCtx);\r\n                _self.context.appId = function () {\r\n                    var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n                    return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n                };\r\n                // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n                _self[\"_extConfig\"] = _extensionConfig;\r\n            }\r\n            function _processTelemetryInternal(evt, itemCtx) {\r\n                // Set Part A fields\r\n                getSetValue(evt, \"tags\", []);\r\n                getSetValue(evt, \"ext\", {});\r\n                var ctx = _self.context;\r\n                ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n                ctx.applyWebContext(evt, itemCtx);\r\n                ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n                ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n                ctx.cleanUp(evt, itemCtx);\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n    PropertiesPlugin.getDefaultConfig = function () {\r\n        var _a;\r\n        var defaultValue;\r\n        var nullValue = null;\r\n        var defaultConfig = (_a = {\r\n                instrumentationKey: function () { return defaultValue; }\r\n            },\r\n            _a[_DYN_ACCOUNT_ID /* @min:accountId */] = function () { return nullValue; },\r\n            _a.sessionRenewalMs = function () { return 30 * 60 * 1000; },\r\n            _a.samplingPercentage = function () { return 100; },\r\n            _a.sessionExpirationMs = function () { return 24 * 60 * 60 * 1000; },\r\n            _a[_DYN_COOKIE_DOMAIN /* @min:cookieDomain */] = function () { return nullValue; },\r\n            _a[_DYN_SDK_EXTENSION /* @min:sdkExtension */] = function () { return nullValue; },\r\n            _a.isBrowserLinkTrackingEnabled = function () { return false; },\r\n            _a.appId = function () { return nullValue; },\r\n            _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = function () { return nullValue; },\r\n            _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n            _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = function () { return defaultValue; },\r\n            _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = function () { return defaultValue; },\r\n            _a[_DYN_ID_LENGTH /* @min:idLength */] = function () { return 22; },\r\n            _a[_DYN_GET_NEW_ID /* @min:getNewId */] = function () { return nullValue; },\r\n            _a);\r\n        return defaultConfig;\r\n    };\r\n    PropertiesPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    /**\r\n     * Add Part A fields to the event\r\n     * @param event The event that needs to be processed\r\n     */\r\n    PropertiesPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n        // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n    };\r\n    return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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  return target;\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var handler = controlledValues[prop];\n      !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n      propTypes[prop] = readOnlyPropType(handler, displayName);\n    }\n  });\n  return propTypes;\n}\nexport function isProp(props, prop) {\n  return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\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\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n  var wasPropRef = useRef(propValue !== undefined);\n\n  var _useState = useState(defaultValue),\n      stateValue = _useState[0],\n      setState = _useState[1];\n\n  var isProp = propValue !== undefined;\n  var wasProp = wasPropRef.current;\n  wasPropRef.current = isProp;\n  /**\n   * If a prop switches from controlled to Uncontrolled\n   * reset its value to the defaultValue\n   */\n\n  if (!isProp && wasProp && stateValue !== defaultValue) {\n    setState(defaultValue);\n  }\n\n  return [isProp ? propValue : stateValue, useCallback(function (value) {\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    if (handler) handler.apply(void 0, [value].concat(args));\n    setState(value);\n  }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var _ref = result,\n        defaultValue = _ref[Utils.defaultKey(fieldName)],\n        propsValue = _ref[fieldName],\n        rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n\n    var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n        value = _useUncontrolledProp[0],\n        handler = _useUncontrolledProp[1];\n\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n  }, props);\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\nexport { polyfill };\n","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n  var ref = useRef(value);\n  useEffect(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  var ref = useCommittedRef(fn);\n  return useCallback(function () {\n    return ref.current && ref.current.apply(ref, arguments);\n  }, [ref]);\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture) {\n  if (capture === void 0) {\n    capture = false;\n  }\n\n  var handler = useEventCallback(listener);\n  useEffect(function () {\n    var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n    target.addEventListener(event, handler, capture);\n    return function () {\n      return target.removeEventListener(event, handler, capture);\n    };\n  }, [eventTarget]);\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\nfunction useSafeState(state) {\n  var isMounted = useMounted();\n  return [state[0], useCallback(function (nextState) {\n    if (!isMounted()) return;\n    return state[1](nextState);\n  }, [isMounted, state[1]])];\n}\n\nexport default useSafeState;","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base';\n\n// For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\nexport const createPopper = popperGenerator({\n  defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","const _excluded = [\"enabled\", \"placement\", \"strategy\", \"modifiers\"];\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; }\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { dequal } from 'dequal';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\nconst disabledApplyStylesModifier = {\n  name: 'applyStyles',\n  enabled: false,\n  phase: 'afterWrite',\n  fn: () => undefined\n};\n\n// until docjs supports type exports...\n\nconst ariaDescribedByModifier = {\n  name: 'ariaDescribedBy',\n  enabled: true,\n  phase: 'afterWrite',\n  effect: ({\n    state\n  }) => () => {\n    const {\n      reference,\n      popper\n    } = state.elements;\n    if ('removeAttribute' in reference) {\n      const ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(id => id.trim() !== popper.id);\n      if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n    }\n  },\n  fn: ({\n    state\n  }) => {\n    var _popper$getAttribute;\n    const {\n      popper,\n      reference\n    } = state.elements;\n    const role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n    if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n      const ids = reference.getAttribute('aria-describedby');\n      if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n        return;\n      }\n      reference.setAttribute('aria-describedby', ids ? `${ids},${popper.id}` : popper.id);\n    }\n  }\n};\nconst EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object}      options\n * @param {object=}     options.modifiers Popper.js modifiers\n * @param {boolean=}    options.enabled toggle the popper functionality on/off\n * @param {string=}     options.placement The popper element placement relative to the reference element\n * @param {string=}     options.strategy the positioning strategy\n * @param {function=}   options.onCreate called when the popper is created\n * @param {function=}   options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\nfunction usePopper(referenceElement, popperElement, _ref = {}) {\n  let {\n      enabled = true,\n      placement = 'bottom',\n      strategy = 'absolute',\n      modifiers = EMPTY_MODIFIERS\n    } = _ref,\n    config = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const prevModifiers = useRef(modifiers);\n  const popperInstanceRef = useRef();\n  const update = useCallback(() => {\n    var _popperInstanceRef$cu;\n    (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n  }, []);\n  const forceUpdate = useCallback(() => {\n    var _popperInstanceRef$cu2;\n    (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n  }, []);\n  const [popperState, setState] = useSafeState(useState({\n    placement,\n    update,\n    forceUpdate,\n    attributes: {},\n    styles: {\n      popper: {},\n      arrow: {}\n    }\n  }));\n  const updateModifier = useMemo(() => ({\n    name: 'updateStateModifier',\n    enabled: true,\n    phase: 'write',\n    requires: ['computeStyles'],\n    fn: ({\n      state\n    }) => {\n      const styles = {};\n      const attributes = {};\n      Object.keys(state.elements).forEach(element => {\n        styles[element] = state.styles[element];\n        attributes[element] = state.attributes[element];\n      });\n      setState({\n        state,\n        styles,\n        attributes,\n        update,\n        forceUpdate,\n        placement: state.placement\n      });\n    }\n  }), [update, forceUpdate, setState]);\n  const nextModifiers = useMemo(() => {\n    if (!dequal(prevModifiers.current, modifiers)) {\n      prevModifiers.current = modifiers;\n    }\n    return prevModifiers.current;\n  }, [modifiers]);\n  useEffect(() => {\n    if (!popperInstanceRef.current || !enabled) return;\n    popperInstanceRef.current.setOptions({\n      placement,\n      strategy,\n      modifiers: [...nextModifiers, updateModifier, disabledApplyStylesModifier]\n    });\n  }, [strategy, placement, updateModifier, enabled, nextModifiers]);\n  useEffect(() => {\n    if (!enabled || referenceElement == null || popperElement == null) {\n      return undefined;\n    }\n    popperInstanceRef.current = createPopper(referenceElement, popperElement, Object.assign({}, config, {\n      placement,\n      strategy,\n      modifiers: [...nextModifiers, ariaDescribedByModifier, updateModifier]\n    }));\n    return () => {\n      if (popperInstanceRef.current != null) {\n        popperInstanceRef.current.destroy();\n        popperInstanceRef.current = undefined;\n        setState(s => Object.assign({}, s, {\n          attributes: {},\n          styles: {\n            popper: {}\n          }\n        }));\n      }\n    };\n    // This is only run once to _create_ the popper\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [enabled, referenceElement, popperElement]);\n  return popperState;\n}\nexport default usePopper;","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nconst noop = () => {};\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nexport const getRefTarget = ref => ref && ('current' in ref ? ref.current : ref);\nconst InitialTriggerEvents = {\n  click: 'mousedown',\n  mouseup: 'mousedown',\n  pointerup: 'pointerdown'\n};\n\n/**\n * The `useClickOutside` hook registers your callback on the document that fires\n * when a pointer event is registered outside of the provided ref or element.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref  The element boundary\n * @param {function} onClickOutside\n * @param {object=}  options\n * @param {boolean=} options.disabled\n * @param {string=}  options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useClickOutside(ref, onClickOutside = noop, {\n  disabled,\n  clickTrigger = 'click'\n} = {}) {\n  const preventMouseClickOutsideRef = useRef(false);\n  const waitingForTrigger = useRef(false);\n  const handleMouseCapture = useCallback(e => {\n    const currentTarget = getRefTarget(ref);\n    warning(!!currentTarget, 'ClickOutside captured a close event but does not have a ref to compare it to. ' + 'useClickOutside(), should be passed a ref that resolves to a DOM node');\n    preventMouseClickOutsideRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target) || waitingForTrigger.current;\n    waitingForTrigger.current = false;\n  }, [ref]);\n  const handleInitialMouse = useEventCallback(e => {\n    const currentTarget = getRefTarget(ref);\n    if (currentTarget && contains(currentTarget, e.target)) {\n      waitingForTrigger.current = true;\n    }\n  });\n  const handleMouse = useEventCallback(e => {\n    if (!preventMouseClickOutsideRef.current) {\n      onClickOutside(e);\n    }\n  });\n  useEffect(() => {\n    if (disabled || ref == null) return undefined;\n    const doc = ownerDocument(getRefTarget(ref));\n\n    // Store the current event to avoid triggering handlers immediately\n    // https://github.com/facebook/react/issues/20074\n    let currentEvent = (doc.defaultView || window).event;\n    let removeInitialTriggerListener = null;\n    if (InitialTriggerEvents[clickTrigger]) {\n      removeInitialTriggerListener = listen(doc, InitialTriggerEvents[clickTrigger], handleInitialMouse, true);\n    }\n\n    // Use capture for this listener so it fires before React's listener, to\n    // avoid false positives in the contains() check below if the target DOM\n    // element is removed in the React mouse callback.\n    const removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n    const removeMouseListener = listen(doc, clickTrigger, e => {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n      handleMouse(e);\n    });\n    let mobileSafariHackListeners = [];\n    if ('ontouchstart' in doc.documentElement) {\n      mobileSafariHackListeners = [].slice.call(doc.body.children).map(el => listen(el, 'mousemove', noop));\n    }\n    return () => {\n      removeInitialTriggerListener == null ? void 0 : removeInitialTriggerListener();\n      removeMouseCaptureListener();\n      removeMouseListener();\n      mobileSafariHackListeners.forEach(remove => remove());\n    };\n  }, [ref, disabled, clickTrigger, handleMouseCapture, handleInitialMouse, handleMouse]);\n}\nexport default useClickOutside;","export function toModifierMap(modifiers) {\n  const result = {};\n  if (!Array.isArray(modifiers)) {\n    return modifiers || result;\n  }\n\n  // eslint-disable-next-line no-unused-expressions\n  modifiers == null ? void 0 : modifiers.forEach(m => {\n    result[m.name] = m;\n  });\n  return result;\n}\nexport function toModifierArray(map = {}) {\n  if (Array.isArray(map)) return map;\n  return Object.keys(map).map(k => {\n    map[k].name = k;\n    return map[k];\n  });\n}\nexport default function mergeOptionsWithPopperConfig({\n  enabled,\n  enableEvents,\n  placement,\n  flip,\n  offset,\n  fixed,\n  containerPadding,\n  arrowElement,\n  popperConfig = {}\n}) {\n  var _modifiers$eventListe, _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n  const modifiers = toModifierMap(popperConfig.modifiers);\n  return Object.assign({}, popperConfig, {\n    placement,\n    enabled,\n    strategy: fixed ? 'fixed' : popperConfig.strategy,\n    modifiers: toModifierArray(Object.assign({}, modifiers, {\n      eventListeners: {\n        enabled: enableEvents,\n        options: (_modifiers$eventListe = modifiers.eventListeners) == null ? void 0 : _modifiers$eventListe.options\n      },\n      preventOverflow: Object.assign({}, modifiers.preventOverflow, {\n        options: containerPadding ? Object.assign({\n          padding: containerPadding\n        }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n      }),\n      offset: {\n        options: Object.assign({\n          offset\n        }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n      },\n      arrow: Object.assign({}, modifiers.arrow, {\n        enabled: !!arrowElement,\n        options: Object.assign({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n          element: arrowElement\n        })\n      }),\n      flip: Object.assign({\n        enabled: !!flip\n      }, modifiers.flip)\n    }))\n  });\n}","const _excluded = [\"children\"];\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; }\nimport { useContext, useRef } from 'react';\nimport * as React from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useClickOutside from './useClickOutside';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst noop = () => {};\n\n/**\n * @memberOf Dropdown\n * @param {object}  options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string}  options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object}  options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\nexport function useDropdownMenu(options = {}) {\n  const context = useContext(DropdownContext);\n  const [arrowElement, attachArrowRef] = useCallbackRef();\n  const hasShownRef = useRef(false);\n  const {\n    flip,\n    offset,\n    rootCloseEvent,\n    fixed = false,\n    placement: placementOverride,\n    popperConfig = {},\n    enableEventListeners = true,\n    usePopper: shouldUsePopper = !!context\n  } = options;\n  const show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n  if (show && !hasShownRef.current) {\n    hasShownRef.current = true;\n  }\n  const handleClose = e => {\n    context == null ? void 0 : context.toggle(false, e);\n  };\n  const {\n    placement,\n    setMenu,\n    menuElement,\n    toggleElement\n  } = context || {};\n  const popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n    placement: placementOverride || placement || 'bottom-start',\n    enabled: shouldUsePopper,\n    enableEvents: enableEventListeners == null ? show : enableEventListeners,\n    offset,\n    flip,\n    fixed,\n    arrowElement,\n    popperConfig\n  }));\n  const menuProps = Object.assign({\n    ref: setMenu || noop,\n    'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n  }, popper.attributes.popper, {\n    style: popper.styles.popper\n  });\n  const metadata = {\n    show,\n    placement,\n    hasShown: hasShownRef.current,\n    toggle: context == null ? void 0 : context.toggle,\n    popper: shouldUsePopper ? popper : null,\n    arrowProps: shouldUsePopper ? Object.assign({\n      ref: attachArrowRef\n    }, popper.attributes.arrow, {\n      style: popper.styles.arrow\n    }) : {}\n  };\n  useClickOutside(menuElement, handleClose, {\n    clickTrigger: rootCloseEvent,\n    disabled: !show\n  });\n  return [menuProps, metadata];\n}\nconst defaultProps = {\n  usePopper: true\n};\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref) {\n  let {\n      children\n    } = _ref,\n    options = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const [props, meta] = useDropdownMenu(options);\n  return /*#__PURE__*/_jsx(_Fragment, {\n    children: children(props, meta)\n  });\n}\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\n\n/** @component */\nexport default DropdownMenu;","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n *   if (!element) return\n *\n *   const calendar = new FullCalendar.Calendar(element)\n *\n *   return () => {\n *     calendar.destroy()\n *   }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n  return useState(null);\n}","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport React, {ReactNode, useContext, useLayoutEffect, useMemo, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n  prefix: string,\n  current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n  prefix: String(Math.round(Math.random() * 10000000000)),\n  current: 0\n};\n\nconst SSRContext = React.createContext<SSRContextValue>(defaultContext);\n\nexport interface SSRProviderProps {\n  /** Your application here. */\n  children: ReactNode\n}\n\n/**\n * When using SSR with React Aria, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n  let cur = useContext(SSRContext);\n  let value: SSRContextValue = useMemo(() => ({\n    // If this is the first SSRProvider, start with an empty string prefix, otherwise\n    // append and increment the counter.\n    prefix: cur === defaultContext ? '' : `${cur.prefix}-${++cur.current}`,\n    current: 0\n  }), [cur]);\n\n  return (\n    <SSRContext.Provider value={value}>\n      {props.children}\n    </SSRContext.Provider>\n  );\n}\n\nlet canUseDOM = Boolean(\n  typeof window !== 'undefined' &&\n  window.document &&\n  window.document.createElement\n);\n\n/** @private */\nexport function useSSRSafeId(defaultId?: string): string {\n  let ctx = useContext(SSRContext);\n\n  // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n  // provide a warning to hint to the developer to add one.\n  if (ctx === defaultContext && !canUseDOM) {\n    console.warn('When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.');\n  }\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return useMemo(() => defaultId || `react-aria${ctx.prefix}-${++ctx.current}`, [defaultId]);\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n  let cur = useContext(SSRContext);\n  let isInSSRContext = cur !== defaultContext;\n  let [isSSR, setIsSSR] = useState(isInSSRContext);\n\n  // If on the client, and the component was initially server rendered,\n  // then schedule a layout effect to update the component after hydration.\n  if (typeof window !== 'undefined' && isInSSRContext) {\n    // This if statement technically breaks the rules of hooks, but is safe\n    // because the condition never changes after mounting.\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useLayoutEffect(() => {\n      setIsSSR(false);\n    }, []);\n  }\n\n  return isSSR;\n}\n","import { useContext, useCallback } from 'react';\nimport * as React from 'react';\nimport { useSSRSafeId } from './ssr';\nimport DropdownContext from './DropdownContext';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const isRoleMenu = el => {\n  var _el$getAttribute;\n  return ((_el$getAttribute = el.getAttribute('role')) == null ? void 0 : _el$getAttribute.toLowerCase()) === 'menu';\n};\nconst noop = () => {};\n\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\nexport function useDropdownToggle() {\n  const id = useSSRSafeId();\n  const {\n    show = false,\n    toggle = noop,\n    setToggle,\n    menuElement\n  } = useContext(DropdownContext) || {};\n  const handleClick = useCallback(e => {\n    toggle(!show, e);\n  }, [show, toggle]);\n  const props = {\n    id,\n    ref: setToggle || noop,\n    onClick: handleClick,\n    'aria-expanded': !!show\n  };\n\n  // This is maybe better down in an effect, but\n  // the component is going to update anyway when the menu element\n  // is set so might return new props.\n  if (menuElement && isRoleMenu(menuElement)) {\n    props['aria-haspopup'] = true;\n  }\n  return [props, {\n    show,\n    toggle\n  }];\n}\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle({\n  children\n}) {\n  const [props, meta] = useDropdownToggle();\n  return /*#__PURE__*/_jsx(_Fragment, {\n    children: children(props, meta)\n  });\n}\nDropdownToggle.displayName = 'DropdownToggle';\n\n/** @component */\nexport default DropdownToggle;","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\nexport default SelectableContext;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","const _excluded = [\"as\", \"disabled\"];\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; }\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n  tagName,\n  disabled,\n  href,\n  target,\n  rel,\n  role,\n  onClick,\n  tabIndex = 0,\n  type\n}) {\n  if (!tagName) {\n    if (href != null || target != null || rel != null) {\n      tagName = 'a';\n    } else {\n      tagName = 'button';\n    }\n  }\n  const meta = {\n    tagName\n  };\n  if (tagName === 'button') {\n    return [{\n      type: type || 'button',\n      disabled\n    }, meta];\n  }\n  const handleClick = event => {\n    if (disabled || tagName === 'a' && isTrivialHref(href)) {\n      event.preventDefault();\n    }\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n    onClick == null ? void 0 : onClick(event);\n  };\n  const handleKeyDown = event => {\n    if (event.key === ' ') {\n      event.preventDefault();\n      handleClick(event);\n    }\n  };\n  if (tagName === 'a') {\n    // Ensure there's a href so Enter can trigger anchor button.\n    href || (href = '#');\n    if (disabled) {\n      href = undefined;\n    }\n  }\n  return [{\n    role: role != null ? role : 'button',\n    // explicitly undefined so that it overrides the props disabled in a spread\n    // e.g. <Tag {...props} {...hookProps} />\n    disabled: undefined,\n    tabIndex: disabled ? undefined : tabIndex,\n    href,\n    target: tagName === 'a' ? target : undefined,\n    'aria-disabled': !disabled ? undefined : disabled,\n    rel: tagName === 'a' ? rel : undefined,\n    onClick: handleClick,\n    onKeyDown: handleKeyDown\n  }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n      as: asProp,\n      disabled\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const [buttonProps, {\n    tagName: Component\n  }] = useButtonProps(Object.assign({\n    tagName: asProp,\n    disabled\n  }, props));\n  return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n    ref: ref\n  }));\n});\nButton.displayName = 'Button';\nexport default Button;","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n  return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n  return `${PROPERTY_PREFIX}${property}`;\n}","const _excluded = [\"eventKey\", \"disabled\", \"onClick\", \"active\", \"as\"];\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; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Create a dropdown item. Returns a set of props for the dropdown item component\n * including an `onClick` handler that prevents selection when the item is disabled\n */\nexport function useDropdownItem({\n  key,\n  href,\n  active,\n  disabled,\n  onClick\n}) {\n  const onSelectCtx = useContext(SelectableContext);\n  const navContext = useContext(NavContext);\n  const {\n    activeKey\n  } = navContext || {};\n  const eventKey = makeEventKey(key, href);\n  const isActive = active == null && key != null ? makeEventKey(activeKey) === eventKey : active;\n  const handleClick = useEventCallback(event => {\n    if (disabled) return;\n    onClick == null ? void 0 : onClick(event);\n    if (onSelectCtx && !event.isPropagationStopped()) {\n      onSelectCtx(eventKey, event);\n    }\n  });\n  return [{\n    onClick: handleClick,\n    'aria-disabled': disabled || undefined,\n    'aria-selected': isActive,\n    [dataAttr('dropdown-item')]: ''\n  }, {\n    isActive\n  }];\n}\nconst DropdownItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n      eventKey,\n      disabled,\n      onClick,\n      active,\n      as: Component = Button\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const [dropdownItemProps] = useDropdownItem({\n    key: eventKey,\n    href: props.href,\n    disabled,\n    onClick,\n    active\n  });\n  return /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n    ref: ref\n  }, dropdownItemProps));\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import { createContext, useContext } from 'react';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nconst Context = /*#__PURE__*/createContext(canUseDOM ? window : undefined);\nexport const WindowProvider = Context.Provider;\n\n/**\n * The document \"window\" placed in React context. Helpful for determining\n * SSR context, or when rendering into an iframe.\n *\n * @returns the current window\n */\nexport default function useWindow() {\n  return useContext(Context);\n}","import qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport { useCallback, useRef, useEffect, useMemo, useContext } from 'react';\nimport * as React from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useEventListener from '@restart/hooks/useEventListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle, { isRoleMenu } from './DropdownToggle';\nimport DropdownItem from './DropdownItem';\nimport SelectableContext from './SelectableContext';\nimport { dataAttr } from './DataKey';\nimport useWindow from './useWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction useRefWithUpdate() {\n  const forceUpdate = useForceUpdate();\n  const ref = useRef(null);\n  const attachRef = useCallback(element => {\n    ref.current = element;\n    // ensure that a menu set triggers an update for consumers\n    forceUpdate();\n  }, [forceUpdate]);\n  return [ref, attachRef];\n}\n\n/**\n * @displayName Dropdown\n * @public\n */\nfunction Dropdown({\n  defaultShow,\n  show: rawShow,\n  onSelect,\n  onToggle: rawOnToggle,\n  itemSelector = `* [${dataAttr('dropdown-item')}]`,\n  focusFirstItemOnShow,\n  placement = 'bottom-start',\n  children\n}) {\n  const window = useWindow();\n  const [show, onToggle] = useUncontrolledProp(rawShow, defaultShow, rawOnToggle);\n\n  // We use normal refs instead of useCallbackRef in order to populate the\n  // the value as quickly as possible, otherwise the effect to focus the element\n  // may run before the state value is set\n  const [menuRef, setMenu] = useRefWithUpdate();\n  const menuElement = menuRef.current;\n  const [toggleRef, setToggle] = useRefWithUpdate();\n  const toggleElement = toggleRef.current;\n  const lastShow = usePrevious(show);\n  const lastSourceEvent = useRef(null);\n  const focusInDropdown = useRef(false);\n  const onSelectCtx = useContext(SelectableContext);\n  const toggle = useCallback((nextShow, event, source = event == null ? void 0 : event.type) => {\n    onToggle(nextShow, {\n      originalEvent: event,\n      source\n    });\n  }, [onToggle]);\n  const handleSelect = useEventCallback((key, event) => {\n    onSelect == null ? void 0 : onSelect(key, event);\n    toggle(false, event, 'select');\n    if (!event.isPropagationStopped()) {\n      onSelectCtx == null ? void 0 : onSelectCtx(key, event);\n    }\n  });\n  const context = useMemo(() => ({\n    toggle,\n    placement,\n    show,\n    menuElement,\n    toggleElement,\n    setMenu,\n    setToggle\n  }), [toggle, placement, show, menuElement, toggleElement, setMenu, setToggle]);\n  if (menuElement && lastShow && !show) {\n    focusInDropdown.current = menuElement.contains(menuElement.ownerDocument.activeElement);\n  }\n  const focusToggle = useEventCallback(() => {\n    if (toggleElement && toggleElement.focus) {\n      toggleElement.focus();\n    }\n  });\n  const maybeFocusFirst = useEventCallback(() => {\n    const type = lastSourceEvent.current;\n    let focusType = focusFirstItemOnShow;\n    if (focusType == null) {\n      focusType = menuRef.current && isRoleMenu(menuRef.current) ? 'keyboard' : false;\n    }\n    if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n    const first = qsa(menuRef.current, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  });\n  useEffect(() => {\n    if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n      focusInDropdown.current = false;\n      focusToggle();\n    }\n    // only `show` should be changing\n  }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n  useEffect(() => {\n    lastSourceEvent.current = null;\n  });\n  const getNextFocusedChild = (current, offset) => {\n    if (!menuRef.current) return null;\n    const items = qsa(menuRef.current, itemSelector);\n    let index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n  useEventListener(useCallback(() => window.document, [window]), 'keydown', event => {\n    var _menuRef$current, _toggleRef$current;\n    const {\n      key\n    } = event;\n    const target = event.target;\n    const fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n    const fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target);\n\n    // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n    // in inscrutability\n    const isInput = /input|textarea/i.test(target.tagName);\n    if (isInput && (key === ' ' || key !== 'Escape' && fromMenu || key === 'Escape' && target.type === 'search')) {\n      return;\n    }\n    if (!fromMenu && !fromToggle) {\n      return;\n    }\n    if (key === 'Tab' && (!menuRef.current || !show)) {\n      return;\n    }\n    lastSourceEvent.current = event.type;\n    const meta = {\n      originalEvent: event,\n      source: event.type\n    };\n    switch (key) {\n      case 'ArrowUp':\n        {\n          const next = getNextFocusedChild(target, -1);\n          if (next && next.focus) next.focus();\n          event.preventDefault();\n          return;\n        }\n      case 'ArrowDown':\n        event.preventDefault();\n        if (!show) {\n          onToggle(true, meta);\n        } else {\n          const next = getNextFocusedChild(target, 1);\n          if (next && next.focus) next.focus();\n        }\n        return;\n      case 'Tab':\n        // on keydown the target is the element being tabbed FROM, we need that\n        // to know if this event is relevant to this dropdown (e.g. in this menu).\n        // On `keyup` the target is the element being tagged TO which we use to check\n        // if focus has left the menu\n        addEventListener(target.ownerDocument, 'keyup', e => {\n          var _menuRef$current2;\n          if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n            onToggle(false, meta);\n          }\n        }, {\n          once: true\n        });\n        break;\n      case 'Escape':\n        if (key === 'Escape') {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        onToggle(false, meta);\n        break;\n      default:\n    }\n  });\n  return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n    value: handleSelect,\n    children: /*#__PURE__*/_jsx(DropdownContext.Provider, {\n      value: context,\n      children: children\n    })\n  });\n}\nDropdown.displayName = 'Dropdown';\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nDropdown.Item = DropdownItem;\nexport default Dropdown;","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n *  forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n  // The toggling state value is designed to defeat React optimizations for skipping\n  // updates when they are stricting equal to the last state value\n  var _useReducer = useReducer(function (state) {\n    return !state;\n  }, false),\n      dispatch = _useReducer[1];\n\n  return dispatch;\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n  var ref = useRef(null);\n  useEffect(function () {\n    ref.current = value;\n  });\n  return ref.current;\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext({});\nDropdownContext.displayName = 'DropdownContext';\nexport default DropdownContext;","import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nvar targetMap = new WeakMap();\nvar resizeObserver;\n\nfunction getResizeObserver() {\n  // eslint-disable-next-line no-return-assign\n  return resizeObserver = resizeObserver || new window.ResizeObserver(function (entries) {\n    entries.forEach(function (entry) {\n      var handler = targetMap.get(entry.target);\n      if (handler) handler(entry.contentRect);\n    });\n  });\n}\n/**\n * Efficiently observe size changes on an element. Depends on the `ResizeObserver` api,\n * and polyfills are needed in older browsers.\n *\n * ```ts\n * const [ref, attachRef] = useCallbackRef(null);\n *\n * const rect = useResizeObserver(ref);\n *\n * return (\n *  <div ref={attachRef}>\n *    {JSON.stringify(rect)}\n *  </div>\n * )\n * ```\n *\n * @param element The DOM element to observe\n */\n\n\nexport default function useResizeObserver(element) {\n  var _useState = useState(null),\n      rect = _useState[0],\n      setRect = _useState[1];\n\n  useEffect(function () {\n    if (!element) return;\n    getResizeObserver().observe(element);\n    setRect(element.getBoundingClientRect());\n    targetMap.set(element, function (rect) {\n      setRect(rect);\n    });\n    return function () {\n      targetMap.delete(element);\n    };\n  }, [element]);\n  return rect;\n}","const _excluded = [\"onKeyDown\"];\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/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/anchor-has-content */\n\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * An generic `<a>` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n      onKeyDown\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const [buttonProps] = useButtonProps(Object.assign({\n    tagName: 'a'\n  }, props));\n  const handleKeyDown = useEventCallback(e => {\n    buttonProps.onKeyDown(e);\n    onKeyDown == null ? void 0 : onKeyDown(e);\n  });\n  if (isTrivialHref(props.href) || props.role === 'button') {\n    return /*#__PURE__*/_jsx(\"a\", Object.assign({\n      ref: ref\n    }, props, buttonProps, {\n      onKeyDown: handleKeyDown\n    }));\n  }\n  return /*#__PURE__*/_jsx(\"a\", Object.assign({\n    ref: ref\n  }, props, {\n    onKeyDown: onKeyDown\n  }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n  prefixes: {},\n  breakpoints: DEFAULT_BREAKPOINTS,\n  minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n  Consumer,\n  Provider\n} = ThemeContext;\nfunction ThemeProvider({\n  prefixes = {},\n  breakpoints = DEFAULT_BREAKPOINTS,\n  minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n  dir,\n  children\n}) {\n  const contextValue = useMemo(() => ({\n    prefixes: {\n      ...prefixes\n    },\n    breakpoints,\n    minBreakpoint,\n    dir\n  }), [prefixes, breakpoints, minBreakpoint, dir]);\n  return /*#__PURE__*/_jsx(Provider, {\n    value: contextValue,\n    children: children\n  });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n  const {\n    prefixes\n  } = useContext(ThemeContext);\n  return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n  const {\n    breakpoints\n  } = useContext(ThemeContext);\n  return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n  const {\n    minBreakpoint\n  } = useContext(ThemeContext);\n  return minBreakpoint;\n}\nexport function useIsRTL() {\n  const {\n    dir\n  } = useContext(ThemeContext);\n  return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  const isClassy = Component.prototype && Component.prototype.isReactComponent;\n  // If it's a functional component make sure we don't break it with a ref\n  const {\n    prefix,\n    forwardRefAs = isClassy ? 'ref' : 'innerRef'\n  } = opts;\n  const Wrapped = /*#__PURE__*/React.forwardRef(({\n    ...props\n  }, ref) => {\n    props[forwardRefAs] = ref;\n    const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n    return /*#__PURE__*/_jsx(Component, {\n      ...props,\n      bsPrefix: bsPrefix\n    });\n  });\n  Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n  return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useDropdownItem } from '@restart/ui/DropdownItem';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownItem = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  eventKey,\n  disabled = false,\n  onClick,\n  active,\n  as: Component = Anchor,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  const [dropdownItemProps, meta] = useDropdownItem({\n    key: eventKey,\n    href: props.href,\n    disabled,\n    onClick,\n    active\n  });\n  return /*#__PURE__*/_jsx(Component, {\n    ...props,\n    ...dropdownItemProps,\n    ref: ref,\n    className: classNames(className, prefix, meta.isActive && 'active', disabled && 'disabled')\n  });\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n  return !ref || typeof ref === 'function' ? ref : function (value) {\n    ref.current = value;\n  };\n};\n\nexport function mergeRefs(refA, refB) {\n  var a = toFnRef(refA);\n  var b = toFnRef(refB);\n  return function (value) {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n  return useMemo(function () {\n    return mergeRefs(refA, refB);\n  }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'InputGroupContext';\nexport default context;","import * as React from 'react';\n\n// TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n  // @ts-ignore\n  if (!(process.env.NODE_ENV !== \"production\")) return ref;\n\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const warningRef = useCallback(refValue => {\n    !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${componentName} injected a ref to a provided \\`as\\` component that resolved to a component instance instead of a DOM element. ` + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n  }, [componentName]);\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return useMergedRefs(warningRef, ref);\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownMenu } from '@restart/ui/DropdownMenu';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport DropdownContext from './DropdownContext';\nimport InputGroupContext from './InputGroupContext';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  flip: true\n};\nexport function getDropdownMenuPlacement(alignEnd, dropDirection, isRTL) {\n  const topStart = isRTL ? 'top-end' : 'top-start';\n  const topEnd = isRTL ? 'top-start' : 'top-end';\n  const bottomStart = isRTL ? 'bottom-end' : 'bottom-start';\n  const bottomEnd = isRTL ? 'bottom-start' : 'bottom-end';\n  const leftStart = isRTL ? 'right-start' : 'left-start';\n  const leftEnd = isRTL ? 'right-end' : 'left-end';\n  const rightStart = isRTL ? 'left-start' : 'right-start';\n  const rightEnd = isRTL ? 'left-end' : 'right-end';\n  let placement = alignEnd ? bottomEnd : bottomStart;\n  if (dropDirection === 'up') placement = alignEnd ? topEnd : topStart;else if (dropDirection === 'end') placement = alignEnd ? rightEnd : rightStart;else if (dropDirection === 'start') placement = alignEnd ? leftEnd : leftStart;else if (dropDirection === 'down-centered') placement = 'bottom';else if (dropDirection === 'up-centered') placement = 'top';\n  return placement;\n}\nconst DropdownMenu = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  align,\n  rootCloseEvent,\n  flip,\n  show: showProps,\n  renderOnMount,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  popperConfig,\n  variant,\n  ...props\n}, ref) => {\n  let alignEnd = false;\n  const isNavbar = useContext(NavbarContext);\n  const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n  const {\n    align: contextAlign,\n    drop,\n    isRTL\n  } = useContext(DropdownContext);\n  align = align || contextAlign;\n  const isInputGroup = useContext(InputGroupContext);\n  const alignClasses = [];\n  if (align) {\n    if (typeof align === 'object') {\n      const keys = Object.keys(align);\n      process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n      if (keys.length) {\n        const brkPoint = keys[0];\n        const direction = align[brkPoint];\n\n        // .dropdown-menu-end is required for responsively aligning\n        // left in addition to align left classes.\n        alignEnd = direction === 'start';\n        alignClasses.push(`${prefix}-${brkPoint}-${direction}`);\n      }\n    } else if (align === 'end') {\n      alignEnd = true;\n    }\n  }\n  const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n  const [menuProps, {\n    hasShown,\n    popper,\n    show,\n    toggle\n  }] = useDropdownMenu({\n    flip,\n    rootCloseEvent,\n    show: showProps,\n    usePopper: !isNavbar && alignClasses.length === 0,\n    offset: [0, 2],\n    popperConfig,\n    placement\n  });\n  menuProps.ref = useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref);\n  useIsomorphicEffect(() => {\n    // Popper's initial position for the menu is incorrect when\n    // renderOnMount=true. Need to call update() to correct it.\n    if (show) popper == null ? void 0 : popper.update();\n  }, [show]);\n  if (!hasShown && !renderOnMount && !isInputGroup) return null;\n\n  // For custom components provide additional, non-DOM, props;\n  if (typeof Component !== 'string') {\n    menuProps.show = show;\n    menuProps.close = () => toggle == null ? void 0 : toggle(false);\n    menuProps.align = align;\n  }\n  let style = props.style;\n  if (popper != null && popper.placement) {\n    // we don't need the default popper style,\n    // menus are display: none when not shown.\n    style = {\n      ...props.style,\n      ...menuProps.style\n    };\n    props['x-placement'] = popper.placement;\n  }\n  return /*#__PURE__*/_jsx(Component, {\n    ...props,\n    ...menuProps,\n    style: style\n    // Bootstrap css requires this data attrib to style responsive menus.\n    ,\n    ...((alignClasses.length || isNavbar) && {\n      'data-bs-popper': 'static'\n    }),\n    className: classNames(className, prefix, show && 'show', alignEnd && `${prefix}-end`, variant && `${prefix}-${variant}`, ...alignClasses)\n  });\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false\n};\nconst Button = /*#__PURE__*/React.forwardRef(({\n  as,\n  bsPrefix,\n  variant,\n  size,\n  active,\n  className,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  const [buttonProps, {\n    tagName\n  }] = useButtonProps({\n    tagName: as,\n    ...props\n  });\n  const Component = tagName;\n  return /*#__PURE__*/_jsx(Component, {\n    ...buttonProps,\n    ...props,\n    ref: ref,\n    className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && props.disabled && 'disabled')\n  });\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import useMergedRefs from '@restart/hooks/useMergedRefs';\nimport DropdownContext from '@restart/ui/DropdownContext';\nimport { useDropdownToggle } from '@restart/ui/DropdownToggle';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownToggle = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  split,\n  className,\n  childBsPrefix,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = Button,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n  const dropdownContext = useContext(DropdownContext);\n  if (childBsPrefix !== undefined) {\n    props.bsPrefix = childBsPrefix;\n  }\n  const [toggleProps] = useDropdownToggle();\n  toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle'));\n\n  // This intentionally forwards size and variant (if set) to the\n  // underlying component, to allow it to render size and style variants.\n  return /*#__PURE__*/_jsx(Component, {\n    className: classNames(className, prefix, split && `${prefix}-split`, (dropdownContext == null ? void 0 : dropdownContext.show) && 'show'),\n    ...toggleProps,\n    ...props\n  });\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}","import classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst pascalCase = str => str[0].toUpperCase() + camelize(str).slice(1);\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, {\n  displayName = pascalCase(prefix),\n  Component,\n  defaultProps\n} = {}) {\n  const BsComponent = /*#__PURE__*/React.forwardRef(({\n    className,\n    bsPrefix,\n    as: Tag = Component || 'div',\n    ...props\n  }, ref) => {\n    const resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return /*#__PURE__*/_jsx(Tag, {\n      ref: ref,\n      className: classNames(className, resolvedPrefix),\n      ...props\n    });\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport BaseDropdown from '@restart/ui/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu, { getDropdownMenuPlacement } from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownHeader = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nconst DropdownDivider = createWithBsPrefix('dropdown-divider', {\n  Component: 'hr',\n  defaultProps: {\n    role: 'separator'\n  }\n});\nconst DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n  Component: 'span'\n});\nconst defaultProps = {\n  navbar: false,\n  align: 'start',\n  autoClose: true,\n  drop: 'down'\n};\nconst Dropdown = /*#__PURE__*/React.forwardRef((pProps, ref) => {\n  const {\n    bsPrefix,\n    drop,\n    show,\n    className,\n    align,\n    onSelect,\n    onToggle,\n    focusFirstItemOnShow,\n    // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n    as: Component = 'div',\n    navbar: _4,\n    autoClose,\n    ...props\n  } = useUncontrolled(pProps, {\n    show: 'onToggle'\n  });\n  const isInputGroup = useContext(InputGroupContext);\n  const prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  const isRTL = useIsRTL();\n  const isClosingPermitted = source => {\n    // autoClose=false only permits close on button click\n    if (autoClose === false) return source === 'click';\n\n    // autoClose=inside doesn't permit close on rootClose\n    if (autoClose === 'inside') return source !== 'rootClose';\n\n    // autoClose=outside doesn't permit close on select\n    if (autoClose === 'outside') return source !== 'select';\n    return true;\n  };\n  const handleToggle = useEventCallback((nextShow, meta) => {\n    if (meta.originalEvent.currentTarget === document && (meta.source !== 'keydown' || meta.originalEvent.key === 'Escape')) meta.source = 'rootClose';\n    if (isClosingPermitted(meta.source)) onToggle == null ? void 0 : onToggle(nextShow, meta);\n  });\n  const alignEnd = align === 'end';\n  const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n  const contextValue = useMemo(() => ({\n    align,\n    drop,\n    isRTL\n  }), [align, drop, isRTL]);\n  const directionClasses = {\n    down: prefix,\n    'down-centered': `${prefix}-center`,\n    up: 'dropup',\n    'up-centered': 'dropup-center dropup',\n    end: 'dropend',\n    start: 'dropstart'\n  };\n  return /*#__PURE__*/_jsx(DropdownContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(BaseDropdown, {\n      placement: placement,\n      show: show,\n      onSelect: onSelect,\n      onToggle: handleToggle,\n      focusFirstItemOnShow: focusFirstItemOnShow,\n      itemSelector: `.${prefix}-item:not(.disabled):not(:disabled)`,\n      children: isInputGroup ? props.children : /*#__PURE__*/_jsx(Component, {\n        ...props,\n        ref: ref,\n        className: classNames(className, show && 'show', directionClasses[drop])\n      })\n    })\n  });\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nexport default Object.assign(Dropdown, {\n  Toggle: DropdownToggle,\n  Menu: DropdownMenu,\n  Item: DropdownItem,\n  ItemText: DropdownItemText,\n  Divider: DropdownDivider,\n  Header: DropdownHeader\n});","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (var i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;","import lookup from 'void-elements'\nconst attrRE = /\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g\n\nexport default function stringify(tag) {\n  const res = {\n    type: 'tag',\n    name: '',\n    voidElement: false,\n    attrs: {},\n    children: [],\n  }\n\n  const tagMatch = tag.match(/<\\/?([^\\s]+?)[/\\s>]/)\n  if (tagMatch) {\n    res.name = tagMatch[1]\n    if (\n      lookup[tagMatch[1]] ||\n      tag.charAt(tag.length - 2) === '/'\n    ) {\n      res.voidElement = true\n    }\n\n    // handle comment tag\n    if (res.name.startsWith('!--')) {\n      const endIndex = tag.indexOf('-->')\n      return {\n        type: 'comment',\n        comment: endIndex !== -1 ? tag.slice(4, endIndex) : '',\n      }\n    }\n  }\n\n  const reg = new RegExp(attrRE)\n  let result = null\n  for (;;) {\n    result = reg.exec(tag)\n\n    if (result === null) {\n      break\n    }\n\n    if (!result[0].trim()) {\n      continue\n    }\n\n    if (result[1]) {\n      const attr = result[1].trim()\n      let arr = [attr, '']\n\n      if (attr.indexOf('=') > -1) {\n        arr = attr.split('=')\n      }\n\n      res.attrs[arr[0]] = arr[1]\n      reg.lastIndex--\n    } else if (result[2]) {\n      res.attrs[result[2]] = result[3].trim().substring(1, result[3].length - 1)\n    }\n  }\n\n  return res\n}\n","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n  options || (options = {})\n  options.components || (options.components = empty)\n  const result = []\n  const arr = []\n  let current\n  let level = -1\n  let inComponent = false\n\n  // handle text at top level\n  if (html.indexOf('<') !== 0) {\n    var end = html.indexOf('<')\n    result.push({\n      type: 'text',\n      content: end === -1 ? html : html.substring(0, end),\n    })\n  }\n\n  html.replace(tagRE, function (tag, index) {\n    if (inComponent) {\n      if (tag !== '</' + current.name + '>') {\n        return\n      } else {\n        inComponent = false\n      }\n    }\n    const isOpen = tag.charAt(1) !== '/'\n    const isComment = tag.startsWith('<!--')\n    const start = index + tag.length\n    const nextChar = html.charAt(start)\n    let parent\n\n    if (isComment) {\n      const comment = parseTag(tag)\n\n      // if we're at root, push new base node\n      if (level < 0) {\n        result.push(comment)\n        return result\n      }\n      parent = arr[level]\n      parent.children.push(comment)\n      return result\n    }\n\n    if (isOpen) {\n      level++\n\n      current = parseTag(tag)\n      if (current.type === 'tag' && options.components[current.name]) {\n        current.type = 'component'\n        inComponent = true\n      }\n\n      if (\n        !current.voidElement &&\n        !inComponent &&\n        nextChar &&\n        nextChar !== '<'\n      ) {\n        current.children.push({\n          type: 'text',\n          content: html.slice(start, html.indexOf('<', start)),\n        })\n      }\n\n      // if we're at root, push new base node\n      if (level === 0) {\n        result.push(current)\n      }\n\n      parent = arr[level - 1]\n\n      if (parent) {\n        parent.children.push(current)\n      }\n\n      arr[level] = current\n    }\n\n    if (!isOpen || current.voidElement) {\n      if (\n        level > -1 &&\n        (current.voidElement || current.name === tag.slice(2, -1))\n      ) {\n        level--\n        // move current up a level to match the end tag\n        current = level === -1 ? result : arr[level]\n      }\n      if (!inComponent && nextChar !== '<' && nextChar) {\n        // trailing text node\n        // if we're at the root, push a base text node. otherwise add as\n        // a child to the current node.\n        parent = level === -1 ? result : arr[level].children\n\n        // calculate correct end of the content slice in case there's\n        // no tag after the text node.\n        const end = html.indexOf('<', start)\n        let content = html.slice(start, end === -1 ? undefined : end)\n        // if a node is nothing but whitespace, collapse it as the spec states:\n        // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n        if (whitespaceRE.test(content)) {\n          content = ' '\n        }\n        // don't add whitespace-only text nodes if they would be trailing text nodes\n        // or if they would be leading whitespace-only text nodes:\n        //  * end > -1 indicates this is not a trailing text node\n        //  * leading node is when level is -1 and parent has length 0\n        if ((end > -1 && level + parent.length >= 0) || content !== ' ') {\n          parent.push({\n            type: 'text',\n            content: content,\n          })\n        }\n      }\n    }\n  })\n\n  return result\n}\n","function attrString(attrs) {\n  const buff = []\n  for (let key in attrs) {\n    buff.push(key + '=\"' + attrs[key] + '\"')\n  }\n  if (!buff.length) {\n    return ''\n  }\n  return ' ' + buff.join(' ')\n}\n\nfunction stringify(buff, doc) {\n  switch (doc.type) {\n    case 'text':\n      return buff + doc.content\n    case 'tag':\n      buff +=\n        '<' +\n        doc.name +\n        (doc.attrs ? attrString(doc.attrs) : '') +\n        (doc.voidElement ? '/>' : '>')\n      if (doc.voidElement) {\n        return buff\n      }\n      return buff + doc.children.reduce(stringify, '') + '</' + doc.name + '>'\n    case 'comment':\n      buff += '<!--' + doc.comment + '-->'\n      return buff\n  }\n}\n\nexport default function (doc) {\n  return doc.reduce(function (token, rootEl) {\n    return token + stringify('', rootEl)\n  }, '')\n}\n","import parse from './parse'\nimport stringify from './stringify'\n\nexport default {\n  parse,\n  stringify,\n}\n","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"format\"],\n    _excluded2 = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\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\nimport { useContext, isValidElement, cloneElement, createElement } from 'react';\nimport HTML from 'html-parse-stringify';\nimport { getI18n, I18nContext, getDefaults } from './context';\nimport { warn, warnOnce } from './utils';\n\nfunction hasChildren(node, checkLength) {\n  if (!node) return false;\n  var base = node.props ? node.props.children : node.children;\n  if (checkLength) return base.length > 0;\n  return !!base;\n}\n\nfunction getChildren(node) {\n  if (!node) return [];\n  return node.props ? node.props.children : node.children;\n}\n\nfunction hasValidReactChildren(children) {\n  if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n  return children.every(function (child) {\n    return isValidElement(child);\n  });\n}\n\nfunction getAsArray(data) {\n  return Array.isArray(data) ? data : [data];\n}\n\nfunction mergeProps(source, target) {\n  var newTarget = _objectSpread({}, target);\n\n  newTarget.props = Object.assign(source.props, target.props);\n  return newTarget;\n}\n\nexport function nodesToString(children, i18nOptions) {\n  if (!children) return '';\n  var stringNode = '';\n  var childrenArray = getAsArray(children);\n  var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n  childrenArray.forEach(function (child, childIndex) {\n    if (typeof child === 'string') {\n      stringNode += \"\".concat(child);\n    } else if (isValidElement(child)) {\n      var childPropsCount = Object.keys(child.props).length;\n      var shouldKeepChild = keepArray.indexOf(child.type) > -1;\n      var childChildren = child.props.children;\n\n      if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n        stringNode += \"<\".concat(child.type, \"/>\");\n      } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n        stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n      } else if (child.props.i18nIsDynamicList) {\n        stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n      } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n        stringNode += \"<\".concat(child.type, \">\").concat(childChildren, \"</\").concat(child.type, \">\");\n      } else {\n        var content = nodesToString(childChildren, i18nOptions);\n        stringNode += \"<\".concat(childIndex, \">\").concat(content, \"</\").concat(childIndex, \">\");\n      }\n    } else if (child === null) {\n      warn(\"Trans: the passed in value is invalid - seems you passed in a null child.\");\n    } else if (_typeof(child) === 'object') {\n      var format = child.format,\n          clone = _objectWithoutProperties(child, _excluded);\n\n      var keys = Object.keys(clone);\n\n      if (keys.length === 1) {\n        var value = format ? \"\".concat(keys[0], \", \").concat(format) : keys[0];\n        stringNode += \"{{\".concat(value, \"}}\");\n      } else {\n        warn(\"react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.\", child);\n      }\n    } else {\n      warn(\"Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.\", child);\n    }\n  });\n  return stringNode;\n}\n\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n  if (targetString === '') return [];\n  var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n  var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString);\n  if (!children && !emptyChildrenButNeedsHandling) return [targetString];\n  var data = {};\n\n  function getData(childs) {\n    var childrenArray = getAsArray(childs);\n    childrenArray.forEach(function (child) {\n      if (typeof child === 'string') return;\n      if (hasChildren(child)) getData(getChildren(child));else if (_typeof(child) === 'object' && !isValidElement(child)) Object.assign(data, child);\n    });\n  }\n\n  getData(children);\n  var ast = HTML.parse(\"<0>\".concat(targetString, \"</0>\"));\n\n  var opts = _objectSpread(_objectSpread({}, data), combinedTOpts);\n\n  function renderInner(child, node, rootReactNode) {\n    var childs = getChildren(child);\n    var mappedChildren = mapAST(childs, node.children, rootReactNode);\n    return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;\n  }\n\n  function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n    if (child.dummy) child.children = inner;\n    mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n      key: i\n    }), isVoid ? undefined : inner));\n  }\n\n  function mapAST(reactNode, astNode, rootReactNode) {\n    var reactNodes = getAsArray(reactNode);\n    var astNodes = getAsArray(astNode);\n    return astNodes.reduce(function (mem, node, i) {\n      var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n\n      if (node.type === 'tag') {\n        var tmp = reactNodes[parseInt(node.name, 10)];\n        if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];\n        if (!tmp) tmp = {};\n        var child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n          props: node.attrs\n        }, tmp) : tmp;\n        var isElement = isValidElement(child);\n        var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n        var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement;\n        var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n\n        if (typeof child === 'string') {\n          var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n          mem.push(value);\n        } else if (hasChildren(child) || isValidTranslationWithChildren) {\n            var inner = renderInner(child, node, rootReactNode);\n            pushTranslatedJSX(child, inner, mem, i);\n          } else if (isEmptyTransWithHTML) {\n          var _inner = mapAST(reactNodes, node.children, rootReactNode);\n\n          mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n            key: i\n          }), _inner));\n        } else if (Number.isNaN(parseFloat(node.name))) {\n          if (isKnownComponent) {\n            var _inner2 = renderInner(child, node, rootReactNode);\n\n            pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);\n          } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n            if (node.voidElement) {\n              mem.push(createElement(node.name, {\n                key: \"\".concat(node.name, \"-\").concat(i)\n              }));\n            } else {\n              var _inner3 = mapAST(reactNodes, node.children, rootReactNode);\n\n              mem.push(createElement(node.name, {\n                key: \"\".concat(node.name, \"-\").concat(i)\n              }, _inner3));\n            }\n          } else if (node.voidElement) {\n            mem.push(\"<\".concat(node.name, \" />\"));\n          } else {\n            var _inner4 = mapAST(reactNodes, node.children, rootReactNode);\n\n            mem.push(\"<\".concat(node.name, \">\").concat(_inner4, \"</\").concat(node.name, \">\"));\n          }\n        } else if (_typeof(child) === 'object' && !isElement) {\n          var content = node.children[0] ? translationContent : null;\n          if (content) mem.push(content);\n        } else if (node.children.length === 1 && translationContent) {\n          mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n            key: i\n          }), translationContent));\n        } else {\n          mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n            key: i\n          })));\n        }\n      } else if (node.type === 'text') {\n        var wrapTextNodes = i18nOptions.transWrapTextNodes;\n\n        var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n\n        if (wrapTextNodes) {\n          mem.push(createElement(wrapTextNodes, {\n            key: \"\".concat(node.name, \"-\").concat(i)\n          }, _content));\n        } else {\n          mem.push(_content);\n        }\n      }\n\n      return mem;\n    }, []);\n  }\n\n  var result = mapAST([{\n    dummy: true,\n    children: children || []\n  }], ast, getAsArray(children || []));\n  return getChildren(result[0]);\n}\n\nexport function Trans(_ref) {\n  var children = _ref.children,\n      count = _ref.count,\n      parent = _ref.parent,\n      i18nKey = _ref.i18nKey,\n      context = _ref.context,\n      _ref$tOptions = _ref.tOptions,\n      tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n      values = _ref.values,\n      defaults = _ref.defaults,\n      components = _ref.components,\n      ns = _ref.ns,\n      i18nFromProps = _ref.i18n,\n      tFromProps = _ref.t,\n      shouldUnescape = _ref.shouldUnescape,\n      additionalProps = _objectWithoutProperties(_ref, _excluded2);\n\n  var _ref2 = useContext(I18nContext) || {},\n      i18nFromContext = _ref2.i18n,\n      defaultNSFromContext = _ref2.defaultNS;\n\n  var i18n = i18nFromProps || i18nFromContext || getI18n();\n\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');\n    return children;\n  }\n\n  var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n    return k;\n  };\n\n  if (context) tOptions.context = context;\n\n  var reactI18nextOptions = _objectSpread(_objectSpread({}, getDefaults()), i18n.options && i18n.options.react);\n\n  var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n  var hashTransKey = reactI18nextOptions.hashTransKey;\n  var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);\n  var interpolationOverride = values ? tOptions.interpolation : {\n    interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, {\n      prefix: '#$?',\n      suffix: '?$#'\n    })\n  };\n\n  var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, {\n    count: count\n  }, values), interpolationOverride), {}, {\n    defaultValue: defaultValue,\n    ns: namespaces\n  });\n\n  var translation = key ? t(key, combinedTOpts) : defaultValue;\n  var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n  var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n  return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}"],"sourceRoot":""}