{"version":3,"file":"static/js/main.0bf4650f.js","mappings":"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","sources":["../node_modules/cookie/src/index.ts","../node_modules/invariant/browser.js","../node_modules/lodash/lodash.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-csv/index.js","../node_modules/react-csv/lib/components/Download.js","../node_modules/react-csv/lib/components/Link.js","../node_modules/react-csv/lib/core.js","../node_modules/react-csv/lib/index.js","../node_modules/react-csv/lib/metaProps.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/short-unique-id/src/index.ts","../node_modules/warning/warning.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-router/dist/development/chunk-K6AXKMTT.mjs","../node_modules/@aws-amplify/core/src/Logger/types.ts","../node_modules/@aws-amplify/core/src/Logger/ConsoleLogger.ts","../node_modules/@aws-amplify/core/src/constants.ts","../node_modules/@aws-amplify/core/src/errors/AmplifyError.ts","../node_modules/@aws-amplify/core/src/Hub/index.ts","../node_modules/@aws-amplify/core/src/utils/deepFreeze.ts","../node_modules/@aws-amplify/core/src/singleton/constants.ts","../node_modules/@aws-amplify/core/src/parseAWSExports.ts","../node_modules/@aws-amplify/core/src/parseAmplifyOutputs.ts","../node_modules/@aws-amplify/core/src/utils/parseAmplifyConfig.ts","../node_modules/tslib/tslib.es6.mjs","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@smithy/util-hex-encoding/dist-es/index.js","../node_modules/@aws-amplify/core/src/singleton/Auth/index.ts","../node_modules/@aws-amplify/core/src/singleton/Amplify.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/@aws-amplify/core/src/types/errors.ts","../node_modules/@aws-amplify/core/src/storage/CookieStorage.ts","../node_modules/@aws-amplify/core/src/errors/PlatformNotSupportedError.ts","../node_modules/@aws-amplify/core/src/storage/KeyValueStorage.ts","../node_modules/@aws-amplify/core/src/storage/InMemoryStorage.ts","../node_modules/@aws-amplify/core/src/storage/utils.ts","../node_modules/@aws-amplify/core/src/storage/SyncKeyValueStorage.ts","../node_modules/@aws-amplify/core/src/storage/index.ts","../node_modules/@aws-amplify/core/src/storage/DefaultStorage.ts","../node_modules/@aws-amplify/core/src/storage/SessionStorage.ts","../node_modules/@aws-amplify/core/src/storage/SyncSessionStorage.ts","../node_modules/@aws-amplify/core/src/utils/globalHelpers/index.ts","../node_modules/@aws-amplify/core/src/utils/convert/base64/base64Decoder.ts","../node_modules/@aws-amplify/core/src/errors/createAssertionFunction.ts","../node_modules/@aws-amplify/core/src/singleton/Auth/utils/errorHelpers.ts","../node_modules/@aws-amplify/core/src/singleton/Auth/utils/index.ts","../node_modules/@aws-amplify/auth/src/errors/AuthError.ts","../node_modules/@aws-amplify/auth/src/foundation/parsers/regionParsers.ts","../node_modules/@aws-amplify/auth/src/errors/constants.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/types.ts","../node_modules/@aws-amplify/core/src/clients/internal/composeServiceApi.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.ts","../node_modules/@aws-amplify/core/src/clients/serde/responseInfo.ts","../node_modules/@aws-amplify/core/src/clients/serde/json.ts","../node_modules/@aws-amplify/auth/src/errors/utils/assertServiceError.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolDeserializer.ts","../node_modules/@aws-amplify/core/src/clients/internal/composeTransferHandler.ts","../node_modules/@aws-amplify/core/src/clients/middleware/retry/middleware.ts","../node_modules/@aws-amplify/core/src/clients/middleware/userAgent/middleware.ts","../node_modules/@aws-amplify/core/src/clients/utils/memoization.ts","../node_modules/@aws-amplify/core/src/clients/handlers/fetch.ts","../node_modules/@aws-amplify/core/src/clients/handlers/unauthenticated.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/shared/handler/cognitoUserPoolTransferHandler.ts","../node_modules/@aws-amplify/core/src/clients/middleware/retry/isClockSkewError.ts","../node_modules/@aws-amplify/core/src/clients/middleware/retry/defaultRetryDecider.ts","../node_modules/@aws-amplify/core/src/clients/middleware/retry/jitteredBackoff.ts","../node_modules/@aws-amplify/core/src/utils/retry/jitteredBackoff.ts","../node_modules/@aws-amplify/core/src/utils/retry/constants.ts","../node_modules/@aws-amplify/core/src/Platform/types.ts","../node_modules/@aws-amplify/core/src/Platform/version.ts","../node_modules/@aws-amplify/core/src/Platform/detection/helpers.ts","../node_modules/@aws-amplify/core/src/Platform/detection/index.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Expo.ts","../node_modules/@aws-amplify/core/src/Platform/detection/ReactNative.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Next.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Nuxt.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Angular.ts","../node_modules/@aws-amplify/core/src/Platform/detection/React.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Vue.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Svelte.ts","../node_modules/@aws-amplify/core/src/Platform/detection/Web.ts","../node_modules/@aws-amplify/core/src/Platform/detectFramework.ts","../node_modules/@aws-amplify/core/src/Platform/customUserAgent.ts","../node_modules/@aws-amplify/core/src/Platform/index.ts","../node_modules/@aws-amplify/auth/src/foundation/constants.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/constants.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createInitiateAuthClient.ts","../node_modules/@aws-amplify/core/src/utils/amplifyUrl/index.ts","../node_modules/@aws-amplify/core/src/clients/endpoints/partitions.ts","../node_modules/@aws-amplify/core/src/clients/endpoints/getDnsSuffix.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/factories/createCognitoUserPoolEndpointResolver.ts","../node_modules/@aws-amplify/auth/src/foundation/cognitoUserPoolEndpointResolver.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/userContextData.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/refreshAuthTokens.ts","../node_modules/@aws-amplify/core/src/utils/deDupeAsyncFunction.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/types.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/errorHelpers.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/TokenStore.ts","../node_modules/@aws-amplify/core/src/utils/isBrowser.ts","../node_modules/@aws-amplify/core/src/utils/isTokenExpired.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/signInWithRedirectStore.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/oauth/oAuthStore.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/oauth/inflightPromise.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/TokenOrchestrator.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/tokenProvider.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/CognitoUserPoolsTokenProvider.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/credentialsProvider/types.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/credentialsProvider/IdentityIdStore.ts","../node_modules/@aws-amplify/core/src/awsClients/cognitoIdentity/base.ts","../node_modules/@aws-amplify/core/src/awsClients/cognitoIdentity/getCredentialsForIdentity.ts","../node_modules/@aws-amplify/core/src/awsClients/cognitoIdentity/getId.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/credentialsProvider/utils.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/credentialsProvider/IdentityIdProvider.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/credentialsProvider/credentialsProvider.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/credentialsProvider/index.ts","../node_modules/aws-amplify/src/initSingleton.ts","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@babel/runtime/helpers/esm/extends.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/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/hooks/esm/useMediaQuery.js","../node_modules/@restart/hooks/esm/useBreakpoint.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/useRTGTransitionProps.js","../node_modules/@restart/ui/esm/RTGTransition.js","../node_modules/@restart/ui/esm/ImperativeTransition.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/OffcanvasBody.js","../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/react-bootstrap/esm/Offcanvas.js","../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../node_modules/react-bootstrap/esm/NavbarText.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/getCurrentUser.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/internal/getCurrentUser.ts","../node_modules/@aws-amplify/core/src/singleton/apis/internal/fetchAuthSession.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/apiHelpers.ts","../node_modules/@aws-amplify/auth/src/utils/getAuthUserAgentValue.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/internal/fetchUserAttributes.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createGetUserClient.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/fetchUserAttributes.ts","../node_modules/@aws-amplify/core/src/singleton/apis/clearCredentials.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/oauth/completeOAuthSignOut.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/oauth/getRedirectUrl.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/oauth/oAuthSignOutRedirect.ts","../node_modules/@aws-amplify/auth/src/utils/openAuthSession.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signOut.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createGlobalSignOutClient.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createRevokeTokenClient.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/oauth/handleOAuthSignOut.ts","libs/contextLib.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/react-bootstrap/esm/ToastFade.js","../node_modules/react-bootstrap/esm/ToastContext.js","../node_modules/react-bootstrap/esm/ToastHeader.js","../node_modules/react-bootstrap/esm/ToastBody.js","../node_modules/react-bootstrap/esm/Toast.js","../node_modules/react-bootstrap/esm/AlertHeading.js","../node_modules/react-bootstrap/esm/AlertLink.js","../node_modules/react-bootstrap/esm/Alert.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/react-bootstrap/esm/Button.js","libs/notificationLib.js","../node_modules/react-bootstrap/esm/ListGroupItem.js","../node_modules/react-bootstrap/esm/ListGroup.js","libs/errorLib.js","../node_modules/@aws-amplify/core/src/errors/APIError.ts","../node_modules/@aws-amplify/api-rest/src/errors/RestApiError.ts","../node_modules/@aws-amplify/api-rest/src/errors/CanceledError.ts","../node_modules/@aws-amplify/api-rest/src/errors/validation.ts","../node_modules/@aws-amplify/api-rest/src/utils/serviceError.ts","../node_modules/@aws-amplify/api-rest/src/utils/logger.ts","../node_modules/@aws-amplify/api-rest/src/utils/constants.ts","../node_modules/@aws-amplify/api-rest/src/utils/parseSigningInfo.ts","../node_modules/@aws-amplify/api-rest/src/utils/resolveApiUrl.ts","../node_modules/@aws-amplify/api-rest/src/errors/assertValidatonError.ts","../node_modules/@aws-amplify/api-rest/src/utils/isIamAuthApplicable.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/constants.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getSignature.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/utils/getSkewCorrectedDate.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/utils/getUpdatedSystemClockOffset.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/utils/isClockSkewed.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/middleware.ts","../node_modules/@aws-amplify/core/src/clients/handlers/authenticated.ts","../node_modules/@aws-amplify/core/src/clients/middleware/signing/signer/signatureV4/signRequest.ts","../node_modules/@aws-amplify/api-rest/src/apis/common/handler.ts","../node_modules/@aws-amplify/api-rest/src/utils/resolveHeaders.ts","../node_modules/@aws-amplify/api-rest/src/apis/common/publicApis.ts","../node_modules/@aws-amplify/api-rest/src/utils/createCancellableOperation.ts","../node_modules/@aws-amplify/api-rest/src/apis/index.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.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/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/@babel/runtime/helpers/esm/OverloadYield.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","libs/databaseAccess.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","components/Table.js","../node_modules/luxon/src/errors.js","../node_modules/luxon/src/impl/formats.js","../node_modules/luxon/src/zone.js","../node_modules/luxon/src/zones/systemZone.js","../node_modules/luxon/src/zones/IANAZone.js","../node_modules/luxon/src/impl/locale.js","../node_modules/luxon/src/impl/english.js","../node_modules/luxon/src/zones/fixedOffsetZone.js","../node_modules/luxon/src/zones/invalidZone.js","../node_modules/luxon/src/impl/zoneUtil.js","../node_modules/luxon/src/impl/util.js","../node_modules/luxon/src/impl/digits.js","../node_modules/luxon/src/settings.js","../node_modules/luxon/src/impl/invalid.js","../node_modules/luxon/src/impl/conversions.js","../node_modules/luxon/src/impl/formatter.js","../node_modules/luxon/src/impl/regexParser.js","../node_modules/luxon/src/duration.js","../node_modules/luxon/src/interval.js","../node_modules/luxon/src/info.js","../node_modules/luxon/src/impl/diff.js","../node_modules/luxon/src/impl/tokenParser.js","../node_modules/luxon/src/datetime.js","containers/userAccount.js","containers/Home.js","../node_modules/@aws-amplify/core/src/utils/convert/base64/base64Encoder.ts","../node_modules/@aws-amplify/core/src/utils/convert/base64/bytesToString.ts","../node_modules/@aws-amplify/core/src/utils/deviceName/getDeviceName.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/types/errors.ts","../node_modules/@aws-amplify/auth/src/errors/types/validation.ts","../node_modules/@aws-amplify/auth/src/common/AuthErrorStrings.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createRespondToAuthChallengeClient.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/tokenProvider/cacheTokens.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/dispatchSignedInHubEvent.ts","../node_modules/@aws-amplify/auth/src/client/utils/store/signInStore.ts","../node_modules/@aws-amplify/auth/src/client/utils/passkey/errors.ts","../node_modules/@aws-amplify/auth/src/foundation/convert/base64url/convertArrayBufferToBase64Url.ts","../node_modules/@aws-amplify/auth/src/foundation/convert/base64url/convertBase64UrlToArrayBuffer.ts","../node_modules/@aws-amplify/auth/src/client/utils/passkey/getPasskey.ts","../node_modules/@aws-amplify/auth/src/client/utils/passkey/getIsPasskeySupported.ts","../node_modules/@aws-amplify/auth/src/client/utils/passkey/serde.ts","../node_modules/@aws-amplify/auth/src/client/utils/passkey/types/index.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/textEncoder/index.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/BigInteger/BigInteger.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/calculate/calculateS.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/constants.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getBytesFromHex.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getHexFromBytes.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getHashFromData.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getHashFromHex.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getPaddedHex.ts","../node_modules/@aws-amplify/core/src/utils/WordArray.ts","../node_modules/@aws-amplify/core/src/utils/cryptoSecureRandomInt.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getRandomBytes.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/AuthenticationHelper/AuthenticationHelper.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getRandomString.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/calculate/calculateU.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getHkdfKey.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/calculate/calculateA.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getAuthenticationHelper.ts","../node_modules/@aws-amplify/auth/src/client/flows/shared/handlePasswordSRP.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getNowString.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/srp/getSignatureString.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/signInHelpers.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createAssociateSoftwareTokenClient.ts","../node_modules/@aws-amplify/auth/src/client/flows/userAuth/handleWebAuthnSignInResult.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createConfirmDeviceClient.ts","../node_modules/@aws-amplify/auth/src/errors/utils/assertValidationError.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signInWithCustomSRPAuth.ts","../node_modules/@aws-amplify/auth/src/client/utils/store/autoSignInStore.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/autoSignIn.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signInWithSRP.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signInWithUserAuth.ts","../node_modules/@aws-amplify/auth/src/client/flows/userAuth/handleUserAuthFlow.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signIn.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signInWithUserPassword.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signInWithCustomAuth.ts","../node_modules/react-bootstrap/esm/Spinner.js","components/LoaderButton.js","libs/hooksLib.js","containers/Login.js","../node_modules/@aws-amplify/auth/src/providers/cognito/utils/signUpHelpers.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/signUp.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/resendSignUpCode.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createResendConfirmationCodeClient.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/confirmSignUp.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createConfirmSignUpClient.ts","containers/Signup.js","containers/NotFound.js","containers/NewPilot.js","../node_modules/react-bootstrap/esm/ButtonGroup.js","../node_modules/react-bootstrap/esm/helpers.js","../node_modules/react-bootstrap/esm/getInitialPopperStyles.js","../node_modules/react-bootstrap/esm/Tooltip.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/InputGroupText.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/react-bootstrap/esm/ToggleButton.js","../node_modules/react-bootstrap/esm/ToggleButtonGroup.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.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/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../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/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.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/@restart/ui/esm/popper.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/useRootClose.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/Overlay.js","../node_modules/react-bootstrap/esm/PopoverHeader.js","../node_modules/react-bootstrap/esm/PopoverBody.js","../node_modules/react-bootstrap/esm/Popover.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/useOverlayOffset.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","containers/Crew.js","../node_modules/@restart/ui/node_modules/uncontrollable/lib/esm/index.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/react-bootstrap/esm/DropdownDivider.js","../node_modules/react-bootstrap/esm/DropdownHeader.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/DropdownItemText.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-multi-select-component/dist/esm/index.js","libs/utils.js","components/EditGliderModal.js","components/EditBlockModal.js","components/EditLaunchModal.js","components/EditIntroLaunchModal.js","components/EditTugModal.js","../node_modules/react-bootstrap/esm/AccordionContext.js","../node_modules/react-bootstrap/esm/AccordionCollapse.js","../node_modules/react-bootstrap/esm/AccordionItemContext.js","../node_modules/react-bootstrap/esm/AccordionBody.js","../node_modules/react-bootstrap/esm/AccordionButton.js","../node_modules/react-bootstrap/esm/AccordionHeader.js","../node_modules/react-bootstrap/esm/AccordionItem.js","../node_modules/react-bootstrap/esm/Accordion.js","components/EditPilotModal.js","containers/Admin.js","components/ReleaseHeightModal.js","containers/Ground.js","components/SelectableTable.js","../node_modules/react-bootstrap/esm/Table.js","components/RevisionsTable.js","containers/Logs.js","../node_modules/@aws-amplify/core/src/singleton/apis/fetchAuthSession.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/updateUserAttributes.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createUpdateUserAttributesClient.ts","containers/Settings.js","components/AccountingSummaryTable.js","containers/Accounting.js","containers/Intro.js","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/updatePassword.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createChangePasswordClient.ts","containers/ChangePassword.js","components/AuthenticatedRoute.js","components/UnauthenticatedRoute.js","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/resetPassword.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createForgotPasswordClient.ts","../node_modules/@aws-amplify/auth/src/providers/cognito/apis/confirmResetPassword.ts","../node_modules/@aws-amplify/auth/src/foundation/factories/serviceClients/cognitoIdentityProvider/createConfirmForgotPasswordClient.ts","../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/react-fontawesome/index.es.js","containers/ResetPassword.js","containers/Emergency.js","containers/Profile.js","containers/Export.js","containers/Fuel.js","containers/Awaiting.js","components/AccountingAdjustments.js","components/ClubFeeAdmin.js","components/IntroExpirationAdmin.js","containers/AccountingAdmin.js","components/IntroSearch.js","containers/IntroRefund.js","containers/IntroCancel.js","Routes.js","App.js","serviceWorker.js","config.js","index.js"],"sourcesContent":["/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name = token\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n * \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n * \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n * ; US-ASCII characters excluding CTLs,\n * ; whitespace DQUOTE, comma, semicolon,\n * ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value = <subdomain>\n * ; defined in [RFC1034], Section 3.5, as\n * ; enhanced by [RFC1123], Section 2.1\n * <subdomain> = <label> | <subdomain> \".\" <label>\n * <label> = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n * Labels must be 63 characters or less.\n * 'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str> = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp> = <let-dig> | \"-\"\n * <let-dig> = <letter> | <digit>\n * <letter> = any one of the 52 alphabetic characters A through Z in\n * upper case and a through z in lower case\n * <digit> = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp =\n /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value = <any CHAR except CTLs or \";\">\n * CHAR = %x01-7F\n * ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n\nconst __toString = Object.prototype.toString;\n\nconst NullObject = /* @__PURE__ */ (() => {\n const C = function () {};\n C.prototype = Object.create(null);\n return C;\n})() as unknown as { new (): any };\n\n/**\n * Parse options.\n */\nexport interface ParseOptions {\n /**\n * Specifies a function that will be used to decode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).\n * Since the value of a cookie has a limited character set (and must be a simple string), this function can be used to decode\n * a previously-encoded cookie value into a JavaScript string.\n *\n * The default function is the global `decodeURIComponent`, wrapped in a `try..catch`. If an error\n * is thrown it will return the cookie's original value. If you provide your own encode/decode\n * scheme you must ensure errors are appropriately handled.\n *\n * @default decode\n */\n decode?: (str: string) => string | undefined;\n}\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nexport function parse(\n str: string,\n options?: ParseOptions,\n): Record<string, string | undefined> {\n const obj: Record<string, string | undefined> = new NullObject();\n const len = str.length;\n // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n if (len < 2) return obj;\n\n const dec = options?.decode || decode;\n let index = 0;\n\n do {\n const eqIdx = str.indexOf(\"=\", index);\n if (eqIdx === -1) break; // No more cookie pairs.\n\n const colonIdx = str.indexOf(\";\", index);\n const endIdx = colonIdx === -1 ? len : colonIdx;\n\n if (eqIdx > endIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n\n const keyStartIdx = startIndex(str, index, eqIdx);\n const keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n const key = str.slice(keyStartIdx, keyEndIdx);\n\n // only assign once\n if (obj[key] === undefined) {\n let valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n let valEndIdx = endIndex(str, endIdx, valStartIdx);\n\n const value = dec(str.slice(valStartIdx, valEndIdx));\n obj[key] = value;\n }\n\n index = endIdx + 1;\n } while (index < len);\n\n return obj;\n}\n\nfunction startIndex(str: string, index: number, max: number) {\n do {\n const code = str.charCodeAt(index);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */) return index;\n } while (++index < max);\n return max;\n}\n\nfunction endIndex(str: string, index: number, min: number) {\n while (index > min) {\n const code = str.charCodeAt(--index);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */) return index + 1;\n }\n return min;\n}\n\n/**\n * Serialize options.\n */\nexport interface SerializeOptions {\n /**\n * Specifies a function that will be used to encode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).\n * Since value of a cookie has a limited character set (and must be a simple string), this function can be used to encode\n * a value into a string suited for a cookie's value, and should mirror `decode` when parsing.\n *\n * @default encodeURIComponent\n */\n encode?: (str: string) => string;\n /**\n * Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.2).\n *\n * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and\n * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,\n * so if both are set, they should point to the same date and time.\n */\n maxAge?: number;\n /**\n * Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.1).\n * When no expiration is set clients consider this a \"non-persistent cookie\" and delete it the current session is over.\n *\n * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and\n * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,\n * so if both are set, they should point to the same date and time.\n */\n expires?: Date;\n /**\n * Specifies the value for the [`Domain` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.3).\n * When no domain is set clients consider the cookie to apply to the current domain only.\n */\n domain?: string;\n /**\n * Specifies the value for the [`Path` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.4).\n * When no path is set, the path is considered the [\"default path\"](https://tools.ietf.org/html/rfc6265#section-5.1.4).\n */\n path?: string;\n /**\n * Enables the [`HttpOnly` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.6).\n * When enabled, clients will not allow client-side JavaScript to see the cookie in `document.cookie`.\n */\n httpOnly?: boolean;\n /**\n * Enables the [`Secure` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.5).\n * When enabled, clients will only send the cookie back if the browser has a HTTPS connection.\n */\n secure?: boolean;\n /**\n * Enables the [`Partitioned` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/).\n * When enabled, clients will only send the cookie back when the current domain _and_ top-level domain matches.\n *\n * This is an attribute that has not yet been fully standardized, and may change in the future.\n * This also means clients may ignore this attribute until they understand it. More information\n * about can be found in [the proposal](https://github.com/privacycg/CHIPS).\n */\n partitioned?: boolean;\n /**\n * Specifies the value for the [`Priority` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).\n *\n * - `'low'` will set the `Priority` attribute to `Low`.\n * - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.\n * - `'high'` will set the `Priority` attribute to `High`.\n *\n * More information about priority levels can be found in [the specification](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).\n */\n priority?: \"low\" | \"medium\" | \"high\";\n /**\n * Specifies the value for the [`SameSite` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).\n *\n * - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.\n * - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.\n * - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie.\n * - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.\n *\n * More information about enforcement levels can be found in [the specification](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).\n */\n sameSite?: boolean | \"lax\" | \"strict\" | \"none\";\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n */\nexport function serialize(\n name: string,\n val: string,\n options?: SerializeOptions,\n): string {\n const enc = options?.encode || encodeURIComponent;\n\n if (!cookieNameRegExp.test(name)) {\n throw new TypeError(`argument name is invalid: ${name}`);\n }\n\n const value = enc(val);\n\n if (!cookieValueRegExp.test(value)) {\n throw new TypeError(`argument val is invalid: ${val}`);\n }\n\n let str = name + \"=\" + value;\n if (!options) return str;\n\n if (options.maxAge !== undefined) {\n if (!Number.isInteger(options.maxAge)) {\n throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);\n }\n\n str += \"; Max-Age=\" + options.maxAge;\n }\n\n if (options.domain) {\n if (!domainValueRegExp.test(options.domain)) {\n throw new TypeError(`option domain is invalid: ${options.domain}`);\n }\n\n str += \"; Domain=\" + options.domain;\n }\n\n if (options.path) {\n if (!pathValueRegExp.test(options.path)) {\n throw new TypeError(`option path is invalid: ${options.path}`);\n }\n\n str += \"; Path=\" + options.path;\n }\n\n if (options.expires) {\n if (\n !isDate(options.expires) ||\n !Number.isFinite(options.expires.valueOf())\n ) {\n throw new TypeError(`option expires is invalid: ${options.expires}`);\n }\n\n str += \"; Expires=\" + options.expires.toUTCString();\n }\n\n if (options.httpOnly) {\n str += \"; HttpOnly\";\n }\n\n if (options.secure) {\n str += \"; Secure\";\n }\n\n if (options.partitioned) {\n str += \"; Partitioned\";\n }\n\n if (options.priority) {\n const priority =\n typeof options.priority === \"string\"\n ? options.priority.toLowerCase()\n : undefined;\n switch (priority) {\n case \"low\":\n str += \"; Priority=Low\";\n break;\n case \"medium\":\n str += \"; Priority=Medium\";\n break;\n case \"high\":\n str += \"; Priority=High\";\n break;\n default:\n throw new TypeError(`option priority is invalid: ${options.priority}`);\n }\n }\n\n if (options.sameSite) {\n const sameSite =\n typeof options.sameSite === \"string\"\n ? options.sameSite.toLowerCase()\n : options.sameSite;\n switch (sameSite) {\n case true:\n case \"strict\":\n str += \"; SameSite=Strict\";\n break;\n case \"lax\":\n str += \"; SameSite=Lax\";\n break;\n case \"none\":\n str += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(`option sameSite is invalid: ${options.sameSite}`);\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str: string): string {\n if (str.indexOf(\"%\") === -1) return str;\n\n try {\n return decodeURIComponent(str);\n } catch (e) {\n return str;\n }\n}\n\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val: any): val is Date {\n return __toString.call(val) === \"[object Date]\";\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","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","/**\n * 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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = require('./lib/index.js');\n","'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;","\"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.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});\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'];","/**\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\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","'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-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","/**\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\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","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @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","'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","// @module ShortUniqueId\n\n// Copyright 2017-2021 the Short Unique ID authors. All rights reserved. Apache 2.0 license.\n\n// @ts-ignore\nimport {version} from '../package.json';\n\ninterface ShortUniqueIdRanges {\n [k: string]: [number, number];\n};\n\ntype defaultDictionaries = 'number' | 'alpha' | 'alpha_lower' | 'alpha_upper' | 'alphanum' | 'alphanum_lower' | 'alphanum_upper' | 'hex';\n\n/**\n * ```js\n * {\n * dictionary: ['z', 'a', 'p', 'h', 'o', 'd', ...],\n * shuffle: false,\n * debug: false,\n * length: 6,\n * }\n * ```\n */\nexport interface ShortUniqueIdOptions {\n /** User-defined character dictionary */\n dictionary: string[] | defaultDictionaries;\n\n /** If true, sequentialUUID use the dictionary in the given order */\n shuffle: boolean;\n\n /** If true the instance will console.log useful info */\n debug: boolean;\n\n /** From 1 to infinity, the length you wish your UUID to be */\n length: number;\n};\n\n/**\n * 6 was chosen as the default UUID length since for most cases\n * it will be more than aptly suitable to provide millions of UUIDs\n * with a very low probability of producing a duplicate UUID.\n *\n * For example, with a dictionary including digits from 0 to 9,\n * as well as the alphabet from a to z both in UPPER and lower case,\n * the probability of generating a duplicate in 1,000,000 rounds\n * is ~0.00000002, or about 1 in 50,000,000.\n */\nexport const DEFAULT_UUID_LENGTH: number = 6;\n\nconst DEFAULT_OPTIONS: ShortUniqueIdOptions = {\n dictionary: 'alphanum',\n shuffle: true,\n debug: false,\n length: DEFAULT_UUID_LENGTH,\n};\n\n/**\n * Generate random or sequential UUID of any length.\n *\n * ### Use as module\n *\n * ```js\n * // Deno (web module) Import\n * import ShortUniqueId from 'https://cdn.jsdelivr.net/npm/short-unique-id@latest/src/index.ts';\n *\n * // ES6 / TypeScript Import\n * import ShortUniqueId from 'short-unique-id';\n *\n * //or Node.js require\n * const ShortUniqueId = require('short-unique-id');\n *\n * //Instantiate\n * const uid = new ShortUniqueId();\n *\n * // Random UUID\n * console.log(uid());\n *\n * // Sequential UUID\n * console.log(uid.seq());\n * ```\n *\n * ### Use in browser\n *\n * ```html\n * <!-- Import -->\n * <script src=\"https://cdn.jsdelivr.net/npm/short-unique-id@latest/dist/short-unique-id.min.js\"></script>\n *\n * <!-- Usage -->\n * <script>\n * // Instantiate\n * var uid = new ShortUniqueId();\n *\n * // Random UUID\n * document.write(uid());\n *\n * // Sequential UUID\n * document.write(uid.seq());\n * </script>\n * ```\n *\n * ### Options\n *\n * Options can be passed when instantiating `uid`:\n *\n * ```js\n * const options = { ... };\n *\n * const uid = new ShortUniqueId(options);\n * ```\n *\n * For more information take a look at the [ShortUniqueIdOptions type definition](/interfaces/shortuniqueidoptions.html).\n */\nexport default class ShortUniqueId extends Function {\n static default: typeof ShortUniqueId = ShortUniqueId;\n\n public counter: number;\n public debug: boolean;\n public dict: string[];\n public version: string;\n public dictIndex: number = 0;\n public dictRange: number[] =[];\n public lowerBound: number = 0;\n public upperBound: number = 0;\n public dictLength: number = 0;\n public uuidLength: number;\n\n protected _digit_first_ascii: number = 48;\n protected _digit_last_ascii: number = 58;\n protected _alpha_lower_first_ascii: number = 97;\n protected _alpha_lower_last_ascii: number = 123;\n protected _hex_last_ascii: number = 103;\n protected _alpha_upper_first_ascii: number = 65;\n protected _alpha_upper_last_ascii: number = 91;\n\n protected _number_dict_ranges: ShortUniqueIdRanges = {\n digits: [this._digit_first_ascii, this._digit_last_ascii],\n };\n\n protected _alpha_dict_ranges: ShortUniqueIdRanges = {\n lowerCase: [this._alpha_lower_first_ascii, this._alpha_lower_last_ascii],\n upperCase: [this._alpha_upper_first_ascii, this._alpha_upper_last_ascii],\n };\n\n protected _alpha_lower_dict_ranges: ShortUniqueIdRanges = {\n lowerCase: [this._alpha_lower_first_ascii, this._alpha_lower_last_ascii],\n };\n\n protected _alpha_upper_dict_ranges: ShortUniqueIdRanges = {\n upperCase: [this._alpha_upper_first_ascii, this._alpha_upper_last_ascii],\n };\n\n protected _alphanum_dict_ranges: ShortUniqueIdRanges = {\n digits: [this._digit_first_ascii, this._digit_last_ascii],\n lowerCase: [this._alpha_lower_first_ascii, this._alpha_lower_last_ascii],\n upperCase: [this._alpha_upper_first_ascii, this._alpha_upper_last_ascii],\n };\n\n protected _alphanum_lower_dict_ranges: ShortUniqueIdRanges = {\n digits: [this._digit_first_ascii, this._digit_last_ascii],\n lowerCase: [this._alpha_lower_first_ascii, this._alpha_lower_last_ascii],\n };\n\n protected _alphanum_upper_dict_ranges: ShortUniqueIdRanges = {\n digits: [this._digit_first_ascii, this._digit_last_ascii],\n upperCase: [this._alpha_upper_first_ascii, this._alpha_upper_last_ascii],\n };\n\n protected _hex_dict_ranges: ShortUniqueIdRanges = {\n decDigits: [this._digit_first_ascii, this._digit_last_ascii],\n alphaDigits: [this._alpha_lower_first_ascii, this._hex_last_ascii],\n };\n\n /* tslint:disable consistent-return */\n protected log = (...args: any[]): void => {\n const finalArgs = [...args];\n finalArgs[0] = `[short-unique-id] ${args[0]}`;\n /* tslint:disable no-console */\n if (this.debug === true) {\n if (typeof console !== 'undefined' && console !== null) {\n return console.log(...finalArgs);\n }\n }\n /* tslint:enable no-console */\n };\n /* tslint:enable consistent-return */\n\n /** Change the dictionary after initialization. */\n setDictionary = (dictionary: string[] | defaultDictionaries, shuffle?: boolean): void => {\n let finalDict: string[];\n\n if (dictionary && Array.isArray(dictionary) && dictionary.length > 1) {\n finalDict = dictionary as string[];\n } else {\n finalDict = [];\n\n let i;\n\n this.dictIndex = i = 0;\n\n const rangesName = `_${dictionary as defaultDictionaries}_dict_ranges`;\n const ranges: ShortUniqueIdRanges = this[rangesName as keyof ShortUniqueId];\n\n Object.keys(ranges).forEach((rangeType) => {\n const rangeTypeKey = rangeType;\n\n this.dictRange = ranges[rangeTypeKey];\n\n this.lowerBound = this.dictRange[0];\n this.upperBound = this.dictRange[1];\n\n for (\n this.dictIndex = i = this.lowerBound;\n this.lowerBound <= this.upperBound ? i < this.upperBound : i > this.upperBound;\n this.dictIndex = this.lowerBound <= this.upperBound ? i += 1 : i -= 1\n ) {\n finalDict.push(String.fromCharCode(this.dictIndex));\n }\n });\n }\n\n if (shuffle) {\n // Shuffle Dictionary to remove selection bias.\n const PROBABILITY = 0.5;\n finalDict = finalDict.sort(() => Math.random() - PROBABILITY);\n }\n\n this.dict = finalDict;\n\n // Cache Dictionary Length for future usage.\n this.dictLength = this.dict.length;// Resets internal counter.\n this.counter = 0;\n };\n\n seq = (): string => {\n return this.sequentialUUID();\n };\n\n /**\n * Generates UUID based on internal counter that's incremented after each ID generation.\n * @alias `const uid = new ShortUniqueId(); uid.seq();`\n */\n sequentialUUID = (): string => {\n let counterDiv: number;\n let counterRem: number;\n let id: string = '';\n\n counterDiv = this.counter;\n\n do {\n counterRem = counterDiv % this.dictLength;\n counterDiv = Math.trunc(counterDiv / this.dictLength);\n id += this.dict[counterRem];\n } while (counterDiv !== 0);\n\n this.counter += 1;\n\n return id;\n };\n\n /**\n * Generates UUID by creating each part randomly.\n * @alias `const uid = new ShortUniqueId(); uid(uuidLength: number);`\n */\n randomUUID = (uuidLength: number = this.uuidLength || DEFAULT_UUID_LENGTH): string => {\n let id: string;\n let randomPartIdx: number;\n let j: number;\n\n if ((uuidLength === null || typeof uuidLength === 'undefined') || uuidLength < 1) {\n throw new Error('Invalid UUID Length Provided');\n }\n\n const isPositive = uuidLength >= 0;\n\n // Generate random ID parts from Dictionary.\n id = '';\n for (\n j = 0;\n j < uuidLength;\n j += 1\n ) {\n randomPartIdx = parseInt(\n (Math.random() * this.dictLength).toFixed(0),\n 10,\n ) % this.dictLength;\n id += this.dict[randomPartIdx];\n }\n\n // Return random generated ID.\n return id;\n };\n\n /**\n * Calculates total number of possible UUIDs.\n *\n * Given that:\n *\n * - `H` is the total number of possible UUIDs\n * - `n` is the number of unique characters in the dictionary\n * - `l` is the UUID length\n *\n * Then `H` is defined as `n` to the power of `l`:\n *\n * \n *\n * This function returns `H`.\n */\n availableUUIDs = (uuidLength: number = this.uuidLength): number => {\n return parseFloat(\n Math.pow([...new Set(this.dict)].length, uuidLength).toFixed(0),\n );\n };\n\n /**\n * Calculates approximate number of hashes before first collision.\n *\n * Given that:\n *\n * - `H` is the total number of possible UUIDs, or in terms of this library,\n * the result of running `availableUUIDs()`\n * - the expected number of values we have to choose before finding the\n * first collision can be expressed as the quantity `Q(H)`\n *\n * Then `Q(H)` can be approximated as the square root of the product of half\n * of pi times `H`:\n *\n * %5Capprox%5Csqrt%7B%5Cfrac%7B%5Cpi%7D%7B2%7DH%7D)\n *\n * This function returns `Q(H)`.\n * \n * (see [Poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution))\n */\n approxMaxBeforeCollision = (rounds: number = this.availableUUIDs(this.uuidLength)): number => {\n return parseFloat(\n Math.sqrt((Math.PI / 2) * rounds).toFixed(20),\n );\n };\n\n /**\n * Calculates probability of generating duplicate UUIDs (a collision) in a\n * given number of UUID generation rounds.\n *\n * Given that:\n *\n * - `r` is the maximum number of times that `randomUUID()` will be called,\n * or better said the number of _rounds_\n * - `H` is the total number of possible UUIDs, or in terms of this library,\n * the result of running `availableUUIDs()`\n *\n * Then the probability of collision `p(r; H)` can be approximated as the result\n * of dividing the square root of the product of half of pi times `r` by `H`:\n *\n * %5Capprox%5Cfrac%7B%5Csqrt%7B%5Cfrac%7B%5Cpi%7D%7B2%7Dr%7D%7D%7BH%7D)\n *\n * This function returns `p(r; H)`.\n * \n * (see [Poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution))\n *\n * (Useful if you are wondering _\"If I use this lib and expect to perform at most\n * `r` rounds of UUID generations, what is the probability that I will hit a duplicate UUID?\"_.)\n */\n collisionProbability = (\n rounds: number = this.availableUUIDs(this.uuidLength),\n uuidLength: number = this.uuidLength,\n ): number => {\n return parseFloat(\n (\n this.approxMaxBeforeCollision(rounds) / this.availableUUIDs(uuidLength)\n ).toFixed(20),\n );\n };\n\n /**\n * Calculate a \"uniqueness\" score (from 0 to 1) of UUIDs based on size of\n * dictionary and chosen UUID length.\n *\n * Given that:\n *\n * - `H` is the total number of possible UUIDs, or in terms of this library,\n * the result of running `availableUUIDs()`\n * - `Q(H)` is the approximate number of hashes before first collision,\n * or in terms of this library, the result of running `approxMaxBeforeCollision()`\n *\n * Then `uniqueness` can be expressed as the additive inverse of the probability of\n * generating a \"word\" I had previously generated (a duplicate) at any given iteration\n * up to the the total number of possible UUIDs expressed as the quotiend of `Q(H)` and `H`:\n *\n * %7D%7BH%7D)\n *\n * (Useful if you need a value to rate the \"quality\" of the combination of given dictionary\n * and UUID length. The closer to 1, higher the uniqueness and thus better the quality.)\n */\n uniqueness = (rounds: number = this.availableUUIDs(this.uuidLength)): number => {\n const score = parseFloat(\n (1 - (\n this.approxMaxBeforeCollision(rounds) / rounds\n )).toFixed(20),\n );\n return (\n score > 1\n ) ? (\n 1\n ) : (\n (score < 0) ? 0 : score\n );\n };\n\n /**\n * Return the version of this module.\n */\n getVersion = (): string => {\n return this.version;\n };\n\n /**\n * Generates a UUID with a timestamp that can be extracted using `uid.parseStamp(stampString);`.\n * \n * ```js\n * const uidWithTimestamp = uid.stamp(32);\n * console.log(uidWithTimestamp);\n * // GDa608f973aRCHLXQYPTbKDbjDeVsSb3\n * \n * console.log(uid.parseStamp(uidWithTimestamp));\n * // 2021-05-03T06:24:58.000Z\n * ```\n */\n stamp = (finalLength: number): string => {\n if (typeof finalLength !== 'number' || finalLength < 10) {\n throw new Error('Param finalLength must be number greater than 10');\n }\n\n const hexStamp = Math.floor(+new Date() / 1000).toString(16);\n\n const idLength = finalLength - 9;\n\n const rndIdx = Math.round(Math.random() * ((idLength > 15) ? 15 : idLength));\n\n const id = this.randomUUID(idLength);\n\n return `${id.substr(0, rndIdx)}${hexStamp}${id.substr(rndIdx)}${rndIdx.toString(16)}`;\n };\n\n /**\n * Extracts the date embeded in a UUID generated using the `uid.stamp(finalLength);` method.\n * \n * ```js\n * const uidWithTimestamp = uid.stamp(32);\n * console.log(uidWithTimestamp);\n * // GDa608f973aRCHLXQYPTbKDbjDeVsSb3\n * \n * console.log(uid.parseStamp(uidWithTimestamp));\n * // 2021-05-03T06:24:58.000Z\n * ```\n */\n parseStamp = (stamp: string): Date => {\n if (stamp.length < 10) {\n throw new Error('Stamp length invalid');\n }\n\n const rndIdx = parseInt(stamp.substr(stamp.length - 1, 1), 16);\n\n return new Date(parseInt(stamp.substr(rndIdx, 8), 16) * 1000);\n };\n\n constructor(argOptions: Partial<ShortUniqueIdOptions> = {}) {\n super();\n\n const options: ShortUniqueIdOptions = {\n ...DEFAULT_OPTIONS,\n ...argOptions as Partial<ShortUniqueIdOptions>,\n };\n\n this.counter = 0;\n this.debug = false;\n this.dict = [];\n this.version = version;\n\n const {\n dictionary,\n shuffle,\n length,\n } = options;\n\n this.uuidLength = length;\n\n this.setDictionary(dictionary, shuffle);\n\n this.debug = options.debug;\n this.log(this.dict);\n this.log((`Generator instantiated with Dictionary Size ${this.dictLength}`));\n\n return new Proxy(this, {\n apply: (target, that, args) => this.randomUUID(...args),\n });\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","/**\n * react-router v7.1.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n\n// lib/router/history.ts\nvar Action = /* @__PURE__ */ ((Action2) => {\n Action2[\"Pop\"] = \"POP\";\n Action2[\"Push\"] = \"PUSH\";\n Action2[\"Replace\"] = \"REPLACE\";\n return Action2;\n})(Action || {});\nvar PopStateEventType = \"popstate\";\nfunction createMemoryHistory(options = {}) {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries;\n entries = initialEntries.map(\n (entry, index2) => createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index2 === 0 ? \"default\" : void 0\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = \"POP\" /* Pop */;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state = null, key) {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n function createHref2(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref: createHref2,\n createURL(to) {\n return new URL(createHref2(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = \"PUSH\" /* Push */;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = \"REPLACE\" /* Replace */;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = \"POP\" /* Pop */;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\nfunction createBrowserHistory(options = {}) {\n function createBrowserLocation(window2, globalHistory) {\n let { pathname, search, hash } = window2.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null,\n globalHistory.state && globalHistory.state.key || \"default\"\n );\n }\n function createBrowserHref(window2, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\nfunction createHashHistory(options = {}) {\n function createHashLocation(window2, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window2.location.hash.substring(1));\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null,\n globalHistory.state && globalHistory.state.key || \"default\"\n );\n }\n function createHashHref(window2, to) {\n let base = window2.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window2.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n throw new Error(message);\n } catch (e) {\n }\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substring(2, 10);\n}\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\nfunction createLocation(current, to, state = null, key) {\n let location = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...typeof to === \"string\" ? parsePath(to) : to,\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n };\n return location;\n}\nfunction createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n}) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substring(hashIndex);\n path = path.substring(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substring(searchIndex);\n path = path.substring(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref2, validateLocation, options = {}) {\n let { window: window2 = document.defaultView, v5Compat = false } = options;\n let globalHistory = window2.history;\n let action = \"POP\" /* Pop */;\n let listener = null;\n let index = getIndex();\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n function getIndex() {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n function handlePop() {\n action = \"POP\" /* Pop */;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n function push(to, state) {\n action = \"PUSH\" /* Push */;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n window2.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n function replace2(to, state) {\n action = \"REPLACE\" /* Replace */;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n function createURL(to) {\n let base = window2.location.origin !== \"null\" ? window2.location.origin : window2.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window2, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window2.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window2.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref2(window2, to);\n },\n createURL,\n encodeLocation(to) {\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace: replace2,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n\n// lib/router/utils.ts\nvar immutableRouteKeys = /* @__PURE__ */ new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\"\n]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath = [], manifest = {}) {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route id's must be globally unique within Data Router usages`\n );\n if (isIndexRoute(route)) {\n let indexRoute = {\n ...route,\n ...mapRouteProperties2(route),\n id\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = {\n ...route,\n ...mapRouteProperties2(route),\n id,\n children: void 0\n };\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties2,\n treePath,\n manifest\n );\n }\n return pathOrLayoutRoute;\n }\n });\n}\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\") {\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path \"${parentPath}\" is not valid. An absolute child route path must start with the combined path of all its parent routes.`\n );\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n let isOptional = first.endsWith(\"?\");\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n result.push(\n ...restExploded.map(\n (subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n if (isOptional) {\n result.push(...restExploded);\n }\n return result.map(\n (exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\nfunction rankRouteBranches(branches) {\n branches.sort(\n (a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter((s) => !isSplat(s)).reduce(\n (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue),\n initialScore\n );\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ? (\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n ) : (\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0\n );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n let { routesMeta } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n let route = meta.route;\n if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false\n },\n remainingPathname\n );\n }\n if (!match) {\n return null;\n }\n Object.assign(matchedParams, match.params);\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\nfunction generatePath(originalPath, params = {}) {\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\");\n }\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n return segment.replace(/\\?$/g, \"\");\n }).filter((segment) => !!segment);\n return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce(\n (memo2, { paramName, isOptional }, index) => {\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo2[paramName] = void 0;\n } else {\n memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo2;\n },\n {}\n );\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_, paramName, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n } else if (end) {\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n }\n let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`\n );\n return value;\n }\n}\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\nfunction resolvePath(to, fromPathname = \"/\") {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return `Cannot include a '${char}' character in a manually specified \\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n return matches.filter(\n (match, index) => index === 0 || match.route.path && match.route.path.length > 0\n );\n}\nfunction getResolveToMatches(matches) {\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches.map(\n (match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\nvar joinPaths = (paths) => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\nvar normalizePathname = (pathname) => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n constructor(data2, init) {\n this.type = \"DataWithResponseInit\";\n this.data = data2;\n this.init = init || null;\n }\n};\nfunction data(data2, init) {\n return new DataWithResponseInit(\n data2,\n typeof init === \"number\" ? { status: init } : init\n );\n}\nvar redirect = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, {\n ...responseInit,\n headers\n });\n};\nvar redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\nvar replace = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\nvar ErrorResponseImpl = class {\n constructor(status, statusText, data2, internal = false) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data2 instanceof Error) {\n this.data = data2.toString();\n this.error = data2;\n } else {\n this.data = data2;\n }\n }\n};\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\n// lib/router/router.ts\nvar validMutationMethodsArr = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n];\nvar validMutationMethods = new Set(\n validMutationMethodsArr\n);\nvar validRequestMethodsArr = [\n \"GET\",\n ...validMutationMethodsArr\n];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n state: \"idle\",\n location: void 0,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n};\nvar IDLE_FETCHER = {\n state: \"idle\",\n data: void 0,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n};\nvar IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: void 0,\n reset: void 0,\n location: void 0\n};\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar defaultMapRouteProperties = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nvar ResetLoaderDataSymbol = Symbol(\"ResetLoaderData\");\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n const isBrowser2 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n let mapRouteProperties2 = init.mapRouteProperties || defaultMapRouteProperties;\n let manifest = {};\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n let future = {\n ...init.future\n };\n let unlistenHistory = null;\n let subscribers = /* @__PURE__ */ new Set();\n let savedScrollPositions2 = null;\n let getScrollRestorationKey2 = null;\n let getScrollPosition = null;\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n let initialized;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n initialized = true;\n } else {\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors[m.route.id] !== void 0\n );\n initialized = initialMatches.slice(0, idx + 1).every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: /* @__PURE__ */ new Map(),\n blockers: /* @__PURE__ */ new Map()\n };\n let pendingAction = \"POP\" /* Pop */;\n let pendingPreventScrollReset = false;\n let pendingNavigationController;\n let pendingViewTransitionEnabled = false;\n let appliedViewTransitions = /* @__PURE__ */ new Map();\n let removePageHideEventListener = null;\n let isUninterruptedRevalidation = false;\n let isRevalidationRequired = false;\n let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n let fetchControllers = /* @__PURE__ */ new Map();\n let incrementingLoadId = 0;\n let pendingNavigationLoadId = -1;\n let fetchReloadIds = /* @__PURE__ */ new Map();\n let fetchRedirectIds = /* @__PURE__ */ new Set();\n let fetchLoadMatches = /* @__PURE__ */ new Map();\n let activeFetchers = /* @__PURE__ */ new Map();\n let fetchersQueuedForDeletion = /* @__PURE__ */ new Set();\n let blockerFunctions = /* @__PURE__ */ new Map();\n let unblockBlockerHistoryUpdate = void 0;\n let pendingRevalidationDfd = null;\n function initialize() {\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = void 0;\n return;\n }\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.\"\n );\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: void 0,\n reset: void 0,\n location\n });\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({ blockers });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n }\n );\n if (isBrowser2) {\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n if (!state.initialized) {\n startNavigation(\"POP\" /* Pop */, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n function updateState(newState, opts = {}) {\n state = {\n ...state,\n ...newState\n };\n let unmountedFetchers = [];\n let mountedFetchers = [];\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (fetchersQueuedForDeletion.has(key)) {\n unmountedFetchers.push(key);\n } else {\n mountedFetchers.push(key);\n }\n }\n });\n [...subscribers].forEach(\n (subscriber) => subscriber(state, {\n deletedFetchers: unmountedFetchers,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true\n })\n );\n unmountedFetchers.forEach((key) => deleteFetcher(key));\n mountedFetchers.forEach((key) => state.fetchers.delete(key));\n }\n function completeNavigation(location, newState, { flushSync } = {}) {\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && location.state?._isRedirect !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n actionData = null;\n }\n } else if (isActionReload) {\n actionData = state.actionData;\n } else {\n actionData = null;\n }\n let loaderData = newState.loaderData ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n ) : state.loaderData;\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && location.state?._isRedirect !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = void 0;\n }\n if (isUninterruptedRevalidation) {\n } else if (pendingAction === \"POP\" /* Pop */) {\n } else if (pendingAction === \"PUSH\" /* Push */) {\n init.history.push(location, location.state);\n } else if (pendingAction === \"REPLACE\" /* Replace */) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n if (pendingAction === \"POP\" /* Pop */) {\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = /* @__PURE__ */ new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(\n {\n ...newState,\n // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true\n }\n );\n pendingAction = \"POP\" /* Pop */;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n pendingRevalidationDfd?.resolve();\n pendingRevalidationDfd = null;\n }\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n false,\n normalizedPath,\n opts\n );\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation)\n };\n let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n let historyAction = \"PUSH\" /* Push */;\n if (userReplace === true) {\n historyAction = \"REPLACE\" /* Replace */;\n } else if (userReplace === false) {\n } else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n historyAction = \"REPLACE\" /* Replace */;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n let flushSync = (opts && opts.flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: void 0,\n reset: void 0,\n location: nextLocation\n });\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({ blockers });\n }\n });\n return;\n }\n await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync\n });\n }\n function revalidate() {\n if (!pendingRevalidationDfd) {\n pendingRevalidationDfd = createDeferred();\n }\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n let promise = pendingRevalidationDfd.promise;\n if (state.navigation.state === \"submitting\") {\n return promise;\n }\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return promise;\n }\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true\n }\n );\n return promise;\n }\n async function startNavigation(historyAction, location, opts) {\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n },\n { flushSync }\n );\n return;\n }\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult;\n if (opts && opts.pendingError) {\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: \"error\" /* error */, error: opts.pendingError }\n ];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n if (actionResult.shortCircuited) {\n return;\n }\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error\n }\n });\n return;\n }\n }\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n fogOfWar.active = false;\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n if (shortCircuited) {\n return;\n }\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors\n });\n }\n async function handleAction(request, location, submission, matches, isFogOfWar, opts = {}) {\n interruptActiveLoads();\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: \"error\" /* error */,\n error: discoverResult.error\n }\n ]\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: \"error\" /* error */,\n error\n }\n ]\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: \"error\" /* error */,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n if (isRedirectResult(result)) {\n let replace2;\n if (opts && opts.replace != null) {\n replace2 = opts.replace;\n } else {\n let location2 = normalizeRedirectLocation(\n result.response.headers.get(\"Location\"),\n new URL(request.url),\n basename\n );\n replace2 = location2 === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace: replace2\n });\n return { shortCircuited: true };\n }\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n if ((opts && opts.replace) !== true) {\n pendingAction = \"PUSH\" /* Push */;\n }\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result]\n };\n }\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult) {\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let shouldUpdateNavigationState = !isUninterruptedRevalidation && !initialHydration;\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...actionData !== void 0 ? { actionData } : {}\n },\n {\n flushSync\n }\n );\n }\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error\n }\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n initialHydration === true,\n isRevalidationRequired,\n cancelledFetcherLoads,\n fetchersQueuedForDeletion,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n pendingNavigationLoadId = ++incrementingLoadId;\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers2 = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? { [pendingActionResult[0]]: pendingActionResult[1].error } : null,\n ...getActionDataForCommit(pendingActionResult),\n ...updatedFetchers2 ? { fetchers: new Map(state.fetchers) } : {}\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n if (shouldUpdateNavigationState) {\n let updates = {};\n if (!isFogOfWar) {\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== void 0) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n let redirect2 = findRedirect(loaderResults);\n if (redirect2) {\n await startRedirectNavigation(request, redirect2.result, true, {\n replace: replace2\n });\n return { shortCircuited: true };\n }\n redirect2 = findRedirect(fetcherResults);\n if (redirect2) {\n fetchRedirectIds.add(redirect2.key);\n await startRedirectNavigation(request, redirect2.result, true, {\n replace: replace2\n });\n return { shortCircuited: true };\n }\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults\n );\n if (initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return {\n matches,\n loaderData,\n errors,\n ...shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}\n };\n }\n function getUpdatedActionData(pendingActionResult) {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n void 0,\n fetcher ? fetcher.data : void 0\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n async function fetch2(key, routeId, href, opts) {\n abortFetcher(key);\n let flushSync = (opts && opts.flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n let { path, submission, error } = normalizeNavigateOptions(\n true,\n normalizedPath,\n opts\n );\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n let match = getTargetMatch(matches, path);\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n await handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n fetchLoadMatches.set(key, { routeId, path });\n await handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n function detectAndHandle405Error(m) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n if (fetchRequest.signal.aborted) {\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n if (fetchersQueuedForDeletion.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n }\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset\n });\n }\n }\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledFetcherLoads,\n fetchersQueuedForDeletion,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher2 = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n void 0,\n existingFetcher2 ? existingFetcher2.data : void 0\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({ fetchers: new Map(state.fetchers) });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n let redirect2 = findRedirect(loaderResults);\n if (redirect2) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect2.result,\n false,\n { preventScrollReset }\n );\n }\n redirect2 = findRedirect(fetcherResults);\n if (redirect2) {\n fetchRedirectIds.add(redirect2.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect2.result,\n false,\n { preventScrollReset }\n );\n }\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n void 0,\n revalidatingFetchers,\n fetcherResults\n );\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : void 0\n ),\n { flushSync }\n );\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n if (fetchersQueuedForDeletion.has(key)) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n }\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset\n });\n return;\n }\n }\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n async function startRedirectNavigation(request, redirect2, isNavigation, {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace: replace2\n } = {}) {\n if (redirect2.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect2.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser2) {\n let isDocumentReload = false;\n if (redirect2.response.headers.has(\"X-Remix-Reload-Document\")) {\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin || // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace2) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n pendingNavigationController = null;\n let redirectNavigationType = replace2 === true || redirect2.response.headers.has(\"X-Remix-Replace\") ? \"REPLACE\" /* Replace */ : \"PUSH\" /* Push */;\n let { formMethod, formAction, formEncType } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect2.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectNavigationType, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n });\n } else {\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectNavigationType, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n });\n }\n }\n async function callDataStrategy(type, state2, request, matchesToLoad, matches, fetcherKey) {\n let results;\n let dataResults = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state2,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties2\n );\n } catch (e) {\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: \"error\" /* error */,\n error: e\n };\n });\n return dataResults;\n }\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResult(result)) {\n let response = result.result;\n dataResults[routeId] = {\n type: \"redirect\" /* redirect */,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename\n )\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n return dataResults;\n }\n async function callLoadersAndMaybeResolveData(state2, matches, matchesToLoad, fetchersToLoad, request) {\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state2,\n request,\n matchesToLoad,\n matches,\n null\n );\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state2,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: \"error\" /* error */,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n }\n });\n }\n })\n );\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n isRevalidationRequired = true;\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n function updateFetcherState(key, fetcher, opts = {}) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n function setFetcherError(key, routeId, error, opts = {}) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n function getFetcher(key) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n if (fetchersQueuedForDeletion.has(key)) {\n fetchersQueuedForDeletion.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n fetchersQueuedForDeletion.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n function queueFetcherForDeletion(key) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n fetchersQueuedForDeletion.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n invariant(\n blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\",\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n }) {\n if (blockerFunctions.size === 0) {\n return;\n }\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n return;\n }\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n function handleNavigational404(pathname) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n return { notFoundMatches: matches, route, error };\n }\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions2 = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey2 = getKey || null;\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n return () => {\n savedScrollPositions2 = null;\n getScrollPosition = null;\n getScrollRestorationKey2 = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey2) {\n let key = getScrollRestorationKey2(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions2 && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions2[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions2) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions2[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function checkFogOfWar(matches, routesToUse, pathname) {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n return { active: false, matches: null };\n }\n async function discoverRoutes(matches, pathname, signal) {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n let partialMatches = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties2\n );\n }\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every(\n (m, i) => m.route.id === newPartialMatches[i].route.id\n )) {\n return { type: \"success\", matches: null };\n }\n partialMatches = newPartialMatches;\n }\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n }\n function patchRoutes(routeId, children) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties2\n );\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch: fetch2,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to) => init.history.createHref(to),\n encodeLocation: (to) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: queueFetcherForDeletion,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\nfunction createStaticHandler(routes, opts) {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties2 = opts?.mapRouteProperties || defaultMapRouteProperties;\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n async function query(request, {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy\n } = {}) {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {}\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {}\n };\n }\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n return { location, basename, ...result };\n }\n async function queryRoute(request, {\n routeId,\n requestContext,\n dataStrategy\n } = {}) {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n let match = routeId ? matches.find((m) => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : void 0;\n if (error !== void 0) {\n throw error;\n }\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n return Object.values(result.loaderData)[0];\n }\n return void 0;\n }\n async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n try {\n if (isMutationMethod(request.method)) {\n let result2 = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result2;\n }\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result) ? result : {\n ...result,\n actionData: null,\n actionHeaders: {}\n };\n } catch (e) {\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === \"error\" /* error */) {\n throw e.result;\n }\n return e.result;\n }\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: \"error\" /* error */,\n error\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest);\n }\n }\n if (isRedirectResult(result)) {\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isRouteRequest) {\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {}\n };\n }\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let context2 = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n return {\n ...context2,\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: {\n ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n }\n };\n }\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data\n },\n // action status codes take precedence over loader status codes\n ...result.statusCode ? { statusCode: result.statusCode } : {},\n actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {}\n };\n }\n async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n if (isRouteRequest && !routeMatch?.route.loader && !routeMatch?.route.lazy) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {}\n };\n }\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest);\n }\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n true,\n skipLoaderErrorBubbling\n );\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return {\n ...context,\n matches\n };\n }\n async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy) {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties2,\n requestContext\n );\n let dataResults = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResult(result)) {\n let response = result.result;\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n throw result;\n }\n dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n };\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest) {\n if (request.signal.reason !== void 0) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted without an \\`AbortSignal.reason\\`: ${request.method} ${request.url}`\n );\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction normalizeTo(location, matches, basename, to, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\nfunction normalizeNavigateOptions(isFetcher, path, opts) {\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" })\n });\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = rawFormMethod.toUpperCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== void 0) {\n if (opts.formEncType === \"text/plain\") {\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ? (\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\n`,\n \"\"\n )\n ) : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: void 0,\n json: void 0,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: void 0,\n json,\n text: void 0\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: void 0,\n text: void 0\n };\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n let parsedPath = parsePath(path);\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n return { path: createPath(parsedPath), submission };\n}\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary = false) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, initialHydration, isRevalidationRequired, cancelledFetcherLoads, fetchersQueuedForDeletion, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n let shouldSkipRevalidation = actionStatus && actionStatus >= 400;\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n if (isNewLoader(state.loaderData, state.matches[index], match)) {\n return true;\n }\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : (\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search || // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n )\n });\n });\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || fetchersQueuedForDeletion.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0) {\n shouldRevalidate = isRevalidationRequired;\n } else {\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n });\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction shouldLoadRouteOnHydration(route, loaderData, errors) {\n if (route.lazy) {\n return true;\n }\n if (!route.loader) {\n return false;\n }\n let hasData = loaderData != null && loaderData[route.id] !== void 0;\n let hasError = errors != null && errors[route.id] !== void 0;\n if (!hasData && hasError) {\n return false;\n }\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n return !hasData && !hasError;\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew = (\n // [a] -> [a, b]\n !currentMatch || // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id\n );\n let isMissingData = !currentLoaderData.hasOwnProperty(match.route.id);\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties2) {\n let childrenToPatch;\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n let uniqueChildren = children.filter(\n (newRoute) => !childrenToPatch.some(\n (existingRoute) => isSameRoute(newRoute, existingRoute)\n )\n );\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties2,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n childrenToPatch.push(...newRoutes);\n}\nfunction isSameRoute(newRoute, existingRoute) {\n if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n return true;\n }\n if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n return false;\n }\n if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n return true;\n }\n return newRoute.children.every(\n (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\nasync function loadLazyRouteModule(route, mapRouteProperties2, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" defined but its lazy function is also returning a value for this property. The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n Object.assign(routeToUpdate, routeUpdates);\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided `mapRouteProperties`\n // function to set the framework-aware properties (`element`/`hasErrorBoundary`)\n // since the logic will differ between frameworks.\n ...mapRouteProperties2(routeToUpdate),\n lazy: void 0\n });\n}\nasync function defaultDataStrategy({\n matches\n}) {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) => Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2, requestContext) {\n let loadRouteDefinitionsPromises = matches.map(\n (m) => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties2, manifest) : void 0\n );\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n let resolve = async (handlerOverride) => {\n if (handlerOverride && request.method === \"GET\" && (match.route.lazy || match.route.loader)) {\n shouldLoad = true;\n }\n return shouldLoad ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n ) : Promise.resolve({ type: \"data\" /* data */, result: void 0 });\n };\n return {\n ...match,\n shouldLoad,\n resolve\n };\n });\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext\n });\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n }\n return results;\n}\nasync function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {\n let result;\n let onReject;\n let runHandler = (handler) => {\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = (ctx) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean \"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext\n },\n ...ctx !== void 0 ? [ctx] : []\n );\n };\n let handlerPromise = (async () => {\n try {\n let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (loadRoutePromise) {\n if (handler) {\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise\n ]);\n if (handlerError !== void 0) {\n throw handlerError;\n }\n result = value;\n } else {\n await loadRoutePromise;\n handler = match.route[type];\n if (handler) {\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n return { type: \"data\" /* data */, result: void 0 };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n } catch (e) {\n return { type: \"error\" /* error */, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n let { result, type } = dataStrategyResult;\n if (isResponse(result)) {\n let data2;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data2 = null;\n } else {\n data2 = await result.json();\n }\n } else {\n data2 = await result.text();\n }\n } catch (e) {\n return { type: \"error\" /* error */, error: e };\n }\n if (type === \"error\" /* error */) {\n return {\n type: \"error\" /* error */,\n error: new ErrorResponseImpl(result.status, result.statusText, data2),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: \"data\" /* data */,\n data: data2,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === \"error\" /* error */) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: \"error\" /* error */,\n error: result.data,\n statusCode: result.init?.status\n };\n }\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n void 0,\n result.data\n );\n }\n return {\n type: \"error\" /* error */,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : void 0\n };\n }\n if (isDataWithResponseInit(result)) {\n return {\n type: \"data\" /* data */,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return { type: \"data\" /* data */, data: result };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n location\n );\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = { signal };\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, isStaticHandler = false, skipLoaderErrorBubbling = false) {\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n if (pendingError !== void 0) {\n error = pendingError;\n pendingError = void 0;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n if (!isStaticHandler) {\n loaderData[id] = ResetLoaderDataSymbol;\n }\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n if (pendingError !== void 0 && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = void 0;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults) {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult\n );\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n if (controller && controller.signal.aborted) {\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n return { loaderData, errors };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = Object.entries(newLoaderData).filter(([, v]) => v !== ResetLoaderDataSymbol).reduce((merged, [k, v]) => {\n merged[k] = v;\n return merged;\n }, {});\n for (let match of matches) {\n let id = match.route.id;\n if (!newLoaderData.hasOwnProperty(id) && loaderData.hasOwnProperty(id) && match.route.loader) {\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n let route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`\n };\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }\n ],\n route\n };\n}\nfunction getInternalRouterError(status, {\n pathname,\n routeId,\n method,\n type,\n message\n} = {}) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = `You made a ${method} request to \"${pathname}\" but did not provide a \\`loader\\` for route \"${routeId}\", so there is no way to handle the request.`;\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = `You made a ${method.toUpperCase()} request to \"${pathname}\" but did not provide an \\`action\\` for route \"${routeId}\", so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\nfunction findRedirect(results) {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n return true;\n } else if (b.hash !== \"\") {\n return true;\n }\n return false;\n}\nfunction isDataStrategyResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === \"data\" /* data */ || result.type === \"error\" /* error */);\n}\nfunction isRedirectDataStrategyResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isErrorResult(result) {\n return result.type === \"error\" /* error */;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === \"redirect\" /* redirect */;\n}\nfunction isDataWithResponseInit(value) {\n return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectStatusCode(statusCode) {\n return redirectStatusCodes.has(statusCode);\n}\nfunction isRedirectResponse(result) {\n return isResponse(result) && isRedirectStatusCode(result.status) && result.headers.has(\"Location\");\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toUpperCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toUpperCase());\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n return matches[matches.length - 1];\n }\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let { formMethod, formAction, formEncType, text, formData, json } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: void 0,\n json: void 0,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: void 0,\n text: void 0\n };\n } else if (json !== void 0) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: void 0,\n json,\n text: void 0\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data2) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: data2\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0,\n data: data2\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : void 0\n };\n return fetcher;\n}\nfunction getDoneFetcher(data2) {\n let fetcher = {\n state: \"idle\",\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0,\n data: data2\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\nfunction createDeferred() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async (val) => {\n res(val);\n try {\n await promise;\n } catch (e) {\n }\n };\n reject = async (error) => {\n rej(error);\n try {\n await promise;\n } catch (e) {\n }\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\n// lib/components.tsx\nimport * as React3 from \"react\";\n\n// lib/context.ts\nimport * as React from \"react\";\nvar DataRouterContext = React.createContext(null);\nDataRouterContext.displayName = \"DataRouter\";\nvar DataRouterStateContext = React.createContext(null);\nDataRouterStateContext.displayName = \"DataRouterState\";\nvar ViewTransitionContext = React.createContext({\n isTransitioning: false\n});\nViewTransitionContext.displayName = \"ViewTransition\";\nvar FetchersContext = React.createContext(\n /* @__PURE__ */ new Map()\n);\nFetchersContext.displayName = \"Fetchers\";\nvar AwaitContext = React.createContext(null);\nAwaitContext.displayName = \"Await\";\nvar NavigationContext = React.createContext(\n null\n);\nNavigationContext.displayName = \"Navigation\";\nvar LocationContext = React.createContext(\n null\n);\nLocationContext.displayName = \"Location\";\nvar RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nRouteContext.displayName = \"Route\";\nvar RouteErrorContext = React.createContext(null);\nRouteErrorContext.displayName = \"RouteError\";\n\n// lib/hooks.tsx\nimport * as React2 from \"react\";\nvar ENABLE_DEV_WARNINGS = true;\nfunction useHref(to, { relative } = {}) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n let { basename, navigator: navigator2 } = React2.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator2.createHref({ pathname: joinedPathname, search, hash });\n}\nfunction useInRouterContext() {\n return React2.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n return React2.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n return React2.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n let { pathname } = useLocation();\n return React2.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\nvar navigateEffectWarning = `You should call navigate() in a React.useEffect(), not when your component is first rendered.`;\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React2.useContext(NavigationContext).static;\n if (!isStatic) {\n React2.useLayoutEffect(cb);\n }\n}\nfunction useNavigate() {\n let { isDataRoute } = React2.useContext(RouteContext);\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n let dataRouterContext = React2.useContext(DataRouterContext);\n let { basename, navigator: navigator2 } = React2.useContext(NavigationContext);\n let { matches } = React2.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n let activeRef = React2.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React2.useCallback(\n (to, options = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator2.go(to);\n return;\n }\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator2.replace : navigator2.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator2,\n routePathnamesJson,\n locationPathname,\n dataRouterContext\n ]\n );\n return navigate;\n}\nvar OutletContext = React2.createContext(null);\nfunction useOutletContext() {\n return React2.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n let outlet = React2.useContext(RouteContext).outlet;\n if (outlet) {\n return /* @__PURE__ */ React2.createElement(OutletContext.Provider, { value: context }, outlet);\n }\n return outlet;\n}\nfunction useParams() {\n let { matches } = React2.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\nfunction useResolvedPath(to, { relative } = {}) {\n let { matches } = React2.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n return React2.useMemo(\n () => resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n let { navigator: navigator2 } = React2.useContext(NavigationContext);\n let { matches: parentMatches } = React2.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n if (ENABLE_DEV_WARNINGS) {\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\") || parentPath.endsWith(\"*?\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at \"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the parent route path has no trailing \"*\". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.\n\nPlease change the parent <Route path=\"${parentPath}\"> to <Route path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n invariant(\n parentPathnameBase === \"/\" || parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n if (ENABLE_DEV_WARNINGS) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n warning(\n matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n let renderedMatches = _renderMatches(\n matches && matches.map(\n (match) => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator2.encodeLocation ? navigator2.encodeLocation(match.pathname).pathname : match.pathname\n ]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator2.encodeLocation ? navigator2.encodeLocation(match.pathnameBase).pathname : match.pathnameBase\n ])\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n if (locationArg && renderedMatches) {\n return /* @__PURE__ */ React2.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location\n },\n navigationType: \"POP\" /* Pop */\n }\n },\n renderedMatches\n );\n }\n return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error) ? `${error.status} ${error.statusText}` : error instanceof Error ? error.message : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n let devInfo = null;\n if (ENABLE_DEV_WARNINGS) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n devInfo = /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"p\", null, \"\\u{1F4BF} Hey developer \\u{1F44B}\"), /* @__PURE__ */ React2.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"ErrorBoundary\"), \" or\", \" \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"errorElement\"), \" prop on your route.\"));\n }\n return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"h2\", null, \"Unexpected Application Error!\"), /* @__PURE__ */ React2.createElement(\"h3\", { style: { fontStyle: \"italic\" } }, message), stack ? /* @__PURE__ */ React2.createElement(\"pre\", { style: preStyles }, stack) : null, devInfo);\n}\nvar defaultErrorElement = /* @__PURE__ */ React2.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React2.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error\n };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation\n };\n }\n return {\n error: props.error !== void 0 ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n render() {\n return this.state.error !== void 0 ? /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: this.props.routeContext }, /* @__PURE__ */ React2.createElement(\n RouteErrorContext.Provider,\n {\n value: this.state.error,\n children: this.props.component\n }\n )) : this.props.children;\n }\n};\nfunction RenderedRoute({ routeContext, match, children }) {\n let dataRouterContext = React2.useContext(DataRouterContext);\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: routeContext }, children);\n}\nfunction _renderMatches(matches, parentMatches = [], dataRouterState = null, future = null) {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n if (dataRouterState.errors) {\n matches = dataRouterState.matches;\n } else if (parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== void 0\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let { loaderData, errors: errors2 } = dataRouterState;\n let needsToRunLoader = match.route.loader && !loaderData.hasOwnProperty(match.route.id) && (!errors2 || errors2[match.route.id] === void 0);\n if (match.route.lazy || needsToRunLoader) {\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error;\n let shouldRenderHydrateFallback = false;\n let errorElement = null;\n let hydrateFallbackElement = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : void 0;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n let matches2 = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n children = /* @__PURE__ */ React2.createElement(match.route.Component, null);\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return /* @__PURE__ */ React2.createElement(\n RenderedRoute,\n {\n match,\n routeContext: {\n outlet,\n matches: matches2,\n isDataRoute: dataRouterState != null\n },\n children\n }\n );\n };\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /* @__PURE__ */ React2.createElement(\n RenderErrorBoundary,\n {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error,\n children: getChildren(),\n routeContext: { outlet: null, matches: matches2, isDataRoute: true }\n }\n ) : getChildren();\n }, null);\n}\nfunction getDataRouterConsoleError(hookName) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React2.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React2.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React2.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\nfunction useRouteId() {\n return useCurrentRouteId(\"useRouteId\" /* UseRouteId */);\n}\nfunction useNavigation() {\n let state = useDataRouterState(\"useNavigation\" /* UseNavigation */);\n return state.navigation;\n}\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(\"useRevalidator\" /* UseRevalidator */);\n let state = useDataRouterState(\"useRevalidator\" /* UseRevalidator */);\n return React2.useMemo(\n () => ({\n async revalidate() {\n await dataRouterContext.router.revalidate();\n },\n state: state.revalidation\n }),\n [dataRouterContext.router, state.revalidation]\n );\n}\nfunction useMatches() {\n let { matches, loaderData } = useDataRouterState(\n \"useMatches\" /* UseMatches */\n );\n return React2.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\nfunction useLoaderData() {\n let state = useDataRouterState(\"useLoaderData\" /* UseLoaderData */);\n let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(\"useRouteLoaderData\" /* UseRouteLoaderData */);\n return state.loaderData[routeId];\n}\nfunction useActionData() {\n let state = useDataRouterState(\"useActionData\" /* UseActionData */);\n let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n let error = React2.useContext(RouteErrorContext);\n let state = useDataRouterState(\"useRouteError\" /* UseRouteError */);\n let routeId = useCurrentRouteId(\"useRouteError\" /* UseRouteError */);\n if (error !== void 0) {\n return error;\n }\n return state.errors?.[routeId];\n}\nfunction useAsyncValue() {\n let value = React2.useContext(AwaitContext);\n return value?._data;\n}\nfunction useAsyncError() {\n let value = React2.useContext(AwaitContext);\n return value?._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n let { router, basename } = useDataRouterContext(\"useBlocker\" /* UseBlocker */);\n let state = useDataRouterState(\"useBlocker\" /* UseBlocker */);\n let [blockerKey, setBlockerKey] = React2.useState(\"\");\n let blockerFunction = React2.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n },\n nextLocation: {\n ...nextLocation,\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n },\n historyAction\n });\n },\n [basename, shouldBlock]\n );\n React2.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n React2.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n let { router } = useDataRouterContext(\"useNavigate\" /* UseNavigateStable */);\n let id = useCurrentRouteId(\"useNavigate\" /* UseNavigateStable */);\n let activeRef = React2.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React2.useCallback(\n async (to, options = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n await router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n return navigate;\n}\nvar alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\n// lib/server-runtime/warnings.ts\nvar alreadyWarned2 = {};\nfunction warnOnce(condition, message) {\n if (!condition && !alreadyWarned2[message]) {\n alreadyWarned2[message] = true;\n console.warn(message);\n }\n}\n\n// lib/components.tsx\nvar ENABLE_DEV_WARNINGS2 = true;\nfunction mapRouteProperties(route) {\n let updates = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.hasErrorBoundary || route.ErrorBoundary != null || route.errorElement != null\n };\n if (route.Component) {\n if (ENABLE_DEV_WARNINGS2) {\n if (route.element) {\n warning(\n false,\n \"You should not include both `Component` and `element` on your route - `Component` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n element: React3.createElement(route.Component),\n Component: void 0\n });\n }\n if (route.HydrateFallback) {\n if (ENABLE_DEV_WARNINGS2) {\n if (route.hydrateFallbackElement) {\n warning(\n false,\n \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n hydrateFallbackElement: React3.createElement(route.HydrateFallback),\n HydrateFallback: void 0\n });\n }\n if (route.ErrorBoundary) {\n if (ENABLE_DEV_WARNINGS2) {\n if (route.errorElement) {\n warning(\n false,\n \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n errorElement: React3.createElement(route.ErrorBoundary),\n ErrorBoundary: void 0\n });\n }\n return updates;\n}\nfunction createMemoryRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n future: opts?.future,\n history: createMemoryHistory({\n initialEntries: opts?.initialEntries,\n initialIndex: opts?.initialIndex\n }),\n hydrationData: opts?.hydrationData,\n routes,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation\n }).initialize();\n}\nvar Deferred = class {\n constructor() {\n this.status = \"pending\";\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (value) => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = (reason) => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n};\nfunction RouterProvider({\n router,\n flushSync: reactDomFlushSyncImpl\n}) {\n let [state, setStateImpl] = React3.useState(router.state);\n let [pendingState, setPendingState] = React3.useState();\n let [vtContext, setVtContext] = React3.useState({\n isTransitioning: false\n });\n let [renderDfd, setRenderDfd] = React3.useState();\n let [transition, setTransition] = React3.useState();\n let [interruption, setInterruption] = React3.useState();\n let fetcherData = React3.useRef(/* @__PURE__ */ new Map());\n let setState = React3.useCallback(\n (newState, { deletedFetchers, flushSync, viewTransitionOpts }) => {\n deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== void 0) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n warnOnce(\n flushSync === false || reactDomFlushSyncImpl != null,\n 'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from \"react-router/dom\"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'\n );\n let isViewTransitionAvailable = router.window != null && router.window.document != null && typeof router.window.document.startViewTransition === \"function\";\n warnOnce(\n viewTransitionOpts == null || isViewTransitionAvailable,\n \"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available.\"\n );\n if (!viewTransitionOpts || !isViewTransitionAvailable) {\n if (reactDomFlushSyncImpl && flushSync) {\n reactDomFlushSyncImpl(() => setStateImpl(newState));\n } else {\n React3.startTransition(() => setStateImpl(newState));\n }\n return;\n }\n if (reactDomFlushSyncImpl && flushSync) {\n reactDomFlushSyncImpl(() => {\n if (transition) {\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n });\n let t = router.window.document.startViewTransition(() => {\n reactDomFlushSyncImpl(() => setStateImpl(newState));\n });\n t.finished.finally(() => {\n reactDomFlushSyncImpl(() => {\n setRenderDfd(void 0);\n setTransition(void 0);\n setPendingState(void 0);\n setVtContext({ isTransitioning: false });\n });\n });\n reactDomFlushSyncImpl(() => setTransition(t));\n return;\n }\n if (transition) {\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n } else {\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n }\n },\n [router.window, reactDomFlushSyncImpl, transition, renderDfd]\n );\n React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React3.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred());\n }\n }, [vtContext]);\n React3.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition2 = router.window.document.startViewTransition(async () => {\n React3.startTransition(() => setStateImpl(newState));\n await renderPromise;\n });\n transition2.finished.finally(() => {\n setRenderDfd(void 0);\n setTransition(void 0);\n setPendingState(void 0);\n setVtContext({ isTransitioning: false });\n });\n setTransition(transition2);\n }\n }, [pendingState, renderDfd, router.window]);\n React3.useEffect(() => {\n if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n React3.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation\n });\n setInterruption(void 0);\n }\n }, [vtContext.isTransitioning, interruption]);\n let navigator2 = React3.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state2, opts) => router.navigate(to, {\n state: state2,\n preventScrollReset: opts?.preventScrollReset\n }),\n replace: (to, state2, opts) => router.navigate(to, {\n replace: true,\n state: state2,\n preventScrollReset: opts?.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React3.useMemo(\n () => ({\n router,\n navigator: navigator2,\n static: false,\n basename\n }),\n [router, navigator2, basename]\n );\n return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(\n Router,\n {\n basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: navigator2\n },\n /* @__PURE__ */ React3.createElement(\n MemoizedDataRoutes,\n {\n routes: router.routes,\n future: router.future,\n state\n }\n )\n ))))), null);\n}\nvar MemoizedDataRoutes = React3.memo(DataRoutes);\nfunction DataRoutes({\n routes,\n future,\n state\n}) {\n return useRoutesImpl(routes, void 0, state, future);\n}\nfunction MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex\n}) {\n let historyRef = React3.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React3.useState({\n action: history.action,\n location: history.location\n });\n let setState = React3.useCallback(\n (newState) => {\n React3.startTransition(() => setStateImpl(newState));\n },\n [setStateImpl]\n );\n React3.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React3.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n }\n );\n}\nfunction Navigate({\n to,\n replace: replace2,\n state,\n relative\n}) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n let { static: isStatic } = React3.useContext(NavigationContext);\n warning(\n !isStatic,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`\n );\n let { matches } = React3.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let navigate = useNavigate();\n let path = resolveTo(\n to,\n getResolveToMatches(matches),\n locationPathname,\n relative === \"path\"\n );\n let jsonPath = JSON.stringify(path);\n React3.useEffect(() => {\n navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });\n }, [navigate, jsonPath, relative, replace2, state]);\n return null;\n}\nfunction Outlet(props) {\n return useOutlet(props.context);\n}\nfunction Route(_props) {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\nfunction Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = \"POP\" /* Pop */,\n navigator: navigator2,\n static: staticProp = false\n}) {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`\n );\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React3.useMemo(\n () => ({\n basename,\n navigator: navigator2,\n static: staticProp,\n future: {}\n }),\n [basename, navigator2, staticProp]\n );\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n let locationContext = React3.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n if (trailingPathname == null) {\n return null;\n }\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n },\n navigationType\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL \"${pathname}${search}${hash}\" because it does not start with the basename, so the <Router> won't render anything.`\n );\n if (locationContext == null) {\n return null;\n }\n return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));\n}\nfunction Routes({\n children,\n location\n}) {\n return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await({\n children,\n errorElement,\n resolve\n}) {\n return /* @__PURE__ */ React3.createElement(AwaitErrorBoundary, { resolve, errorElement }, /* @__PURE__ */ React3.createElement(ResolveAwait, null, children));\n}\nvar AwaitErrorBoundary = class extends React3.Component {\n constructor(props) {\n super(props);\n this.state = { error: null };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n render() {\n let { children, errorElement, resolve } = this.props;\n let promise = null;\n let status = 0 /* pending */;\n if (!(resolve instanceof Promise)) {\n status = 1 /* success */;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n status = 2 /* error */;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {\n });\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if (resolve._tracked) {\n promise = resolve;\n status = \"_error\" in promise ? 2 /* error */ : \"_data\" in promise ? 1 /* success */ : 0 /* pending */;\n } else {\n status = 0 /* pending */;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data2) => Object.defineProperty(resolve, \"_data\", { get: () => data2 }),\n (error) => Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n if (status === 2 /* error */ && !errorElement) {\n throw promise._error;\n }\n if (status === 2 /* error */) {\n return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });\n }\n if (status === 1 /* success */) {\n return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });\n }\n throw promise;\n }\n};\nfunction ResolveAwait({\n children\n}) {\n let data2 = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data2) : children;\n return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath = []) {\n let routes = [];\n React3.Children.forEach(children, (element, index) => {\n if (!React3.isValidElement(element)) {\n return;\n }\n let treePath = [...parentPath, index];\n if (element.type === React3.Fragment) {\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, treePath)\n );\n return;\n }\n invariant(\n element.type === Route,\n `[${typeof element.type === \"string\" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n let route = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n hydrateFallbackElement: element.props.hydrateFallbackElement,\n HydrateFallback: element.props.HydrateFallback,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary: element.props.hasErrorBoundary === true || element.props.ErrorBoundary != null || element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy\n };\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n routes.push(route);\n });\n return routes;\n}\nvar createRoutesFromElements = createRoutesFromChildren;\nfunction renderMatches(matches) {\n return _renderMatches(matches);\n}\n\n// lib/dom/lib.tsx\nimport * as React10 from \"react\";\n\n// lib/dom/dom.ts\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event);\n}\nfunction createSearchParams(init = \"\") {\n return new URLSearchParams(\n typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n let value = init[key];\n return memo2.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [])\n );\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\"\n]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` and will default to \"${defaultEncType}\"`\n );\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(form, target);\n if (!isFormDataSubmitterSupported()) {\n let { name, type, value } = target;\n if (type === \"image\") {\n let prefix = name ? `${name}.` : \"\";\n formData.append(`${prefix}x`, \"0\");\n formData.append(`${prefix}y`, \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">`\n );\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = void 0;\n }\n return { action, method: method.toLowerCase(), encType, formData, body };\n}\n\n// lib/dom/ssr/components.tsx\nimport * as React9 from \"react\";\n\n// lib/dom/ssr/invariant.ts\nfunction invariant2(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\n// lib/dom/ssr/routeModules.ts\nasync function loadRouteModule(route, routeModulesCache) {\n if (route.id in routeModulesCache) {\n return routeModulesCache[route.id];\n }\n try {\n let routeModule = await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.module\n );\n routeModulesCache[route.id] = routeModule;\n return routeModule;\n } catch (error) {\n console.error(\n `Error loading route module \\`${route.module}\\`, reloading page...`\n );\n console.error(error);\n if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error\n import.meta.hot) {\n throw error;\n }\n window.location.reload();\n return new Promise(() => {\n });\n }\n}\n\n// lib/dom/ssr/links.ts\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n let descriptors = matches.map((match) => {\n let module = routeModules[match.route.id];\n let route = manifest.routes[match.route.id];\n return [\n route && route.css ? route.css.map((href) => ({ rel: \"stylesheet\", href })) : [],\n module?.links?.() || []\n ];\n }).flat(2);\n let preloads = getCurrentPageModulePreloadHrefs(matches, manifest);\n return dedupeLinkDescriptors(descriptors, preloads);\n}\nasync function prefetchStyleLinks(route, routeModule) {\n if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n let descriptors = [];\n if (route.css) {\n descriptors.push(...route.css.map((href) => ({ rel: \"stylesheet\", href })));\n }\n if (routeModule.links) {\n descriptors.push(...routeModule.links());\n }\n if (descriptors.length === 0) return;\n let styleLinks = [];\n for (let descriptor of descriptors) {\n if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n styleLinks.push({\n ...descriptor,\n rel: \"preload\",\n as: \"style\"\n });\n }\n }\n let matchingLinks = styleLinks.filter(\n (link) => (!link.media || window.matchMedia(link.media).matches) && !document.querySelector(`link[rel=\"stylesheet\"][href=\"${link.href}\"]`)\n );\n await Promise.all(matchingLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n return new Promise((resolve) => {\n let link = document.createElement(\"link\");\n Object.assign(link, descriptor);\n function removeLink() {\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n }\n link.onload = () => {\n removeLink();\n resolve();\n };\n link.onerror = () => {\n removeLink();\n resolve();\n };\n document.head.appendChild(link);\n });\n}\nfunction isPageLinkDescriptor(object) {\n return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n if (object == null) {\n return false;\n }\n if (object.href == null) {\n return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n }\n return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n let links = await Promise.all(\n matches.map(async (match) => {\n let route = manifest.routes[match.route.id];\n if (route) {\n let mod = await loadRouteModule(route, routeModules);\n return mod.links ? mod.links() : [];\n }\n return [];\n })\n );\n return dedupeLinkDescriptors(\n links.flat(1).filter(isHtmlLinkDescriptor).filter((link) => link.rel === \"stylesheet\" || link.rel === \"preload\").map(\n (link) => link.rel === \"stylesheet\" ? { ...link, rel: \"prefetch\", as: \"style\" } : { ...link, rel: \"prefetch\" }\n )\n );\n}\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n let isNew = (match, index) => {\n if (!currentMatches[index]) return true;\n return match.route.id !== currentMatches[index].route.id;\n };\n let matchPathChanged = (match, index) => {\n return (\n // param change, /users/123 -> /users/456\n currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentMatches[index].route.path?.endsWith(\"*\") && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n );\n };\n if (mode === \"assets\") {\n return nextMatches.filter(\n (match, index) => isNew(match, index) || matchPathChanged(match, index)\n );\n }\n if (mode === \"data\") {\n return nextMatches.filter((match, index) => {\n let manifestRoute = manifest.routes[match.route.id];\n if (!manifestRoute || !manifestRoute.hasLoader) {\n return false;\n }\n if (isNew(match, index) || matchPathChanged(match, index)) {\n return true;\n }\n if (match.route.shouldRevalidate) {\n let routeChoice = match.route.shouldRevalidate({\n currentUrl: new URL(\n location.pathname + location.search + location.hash,\n window.origin\n ),\n currentParams: currentMatches[0]?.params || {},\n nextUrl: new URL(page, window.origin),\n nextParams: match.params,\n defaultShouldRevalidate: true\n });\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return true;\n });\n }\n return [];\n}\nfunction getModuleLinkHrefs(matches, manifestPatch) {\n return dedupeHrefs(\n matches.map((match) => {\n let route = manifestPatch.routes[match.route.id];\n if (!route) return [];\n let hrefs = [route.module];\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n return hrefs;\n }).flat(1)\n );\n}\nfunction getCurrentPageModulePreloadHrefs(matches, manifest) {\n return dedupeHrefs(\n matches.map((match) => {\n let route = manifest.routes[match.route.id];\n if (!route) return [];\n let hrefs = [route.module];\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n return hrefs;\n }).flat(1)\n );\n}\nfunction dedupeHrefs(hrefs) {\n return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n let sorted = {};\n let keys = Object.keys(obj).sort();\n for (let key of keys) {\n sorted[key] = obj[key];\n }\n return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n let set = /* @__PURE__ */ new Set();\n let preloadsSet = new Set(preloads);\n return descriptors.reduce((deduped, descriptor) => {\n let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n if (alreadyModulePreload) {\n return deduped;\n }\n let key = JSON.stringify(sortKeys(descriptor));\n if (!set.has(key)) {\n set.add(key);\n deduped.push({ key, link: descriptor });\n }\n return deduped;\n }, []);\n}\nvar _isPreloadSupported;\nfunction isPreloadSupported() {\n if (_isPreloadSupported !== void 0) {\n return _isPreloadSupported;\n }\n let el = document.createElement(\"link\");\n _isPreloadSupported = el.relList.supports(\"preload\");\n el = null;\n return _isPreloadSupported;\n}\n\n// lib/dom/ssr/markup.ts\nvar ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n return html.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\nfunction createHtml(html) {\n return { __html: html };\n}\n\n// lib/dom/ssr/single-fetch.tsx\nimport * as React4 from \"react\";\nimport { decode } from \"turbo-stream\";\n\n// lib/dom/ssr/data.ts\nasync function createRequestInit(request) {\n let init = { signal: request.signal };\n if (request.method !== \"GET\") {\n init.method = request.method;\n let contentType = request.headers.get(\"Content-Type\");\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n init.headers = { \"Content-Type\": contentType };\n init.body = JSON.stringify(await request.json());\n } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n init.headers = { \"Content-Type\": contentType };\n init.body = await request.text();\n } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n init.body = new URLSearchParams(await request.text());\n } else {\n init.body = await request.formData();\n }\n }\n return init;\n}\n\n// lib/dom/ssr/single-fetch.tsx\nvar SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\nfunction StreamTransfer({\n context,\n identifier,\n reader,\n textDecoder,\n nonce\n}) {\n if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n return null;\n }\n if (!context.renderMeta.streamCache) {\n context.renderMeta.streamCache = {};\n }\n let { streamCache } = context.renderMeta;\n let promise = streamCache[identifier];\n if (!promise) {\n promise = streamCache[identifier] = reader.read().then((result) => {\n streamCache[identifier].result = {\n done: result.done,\n value: textDecoder.decode(result.value, { stream: true })\n };\n }).catch((e) => {\n streamCache[identifier].error = e;\n });\n }\n if (promise.error) {\n throw promise.error;\n }\n if (promise.result === void 0) {\n throw promise;\n }\n let { done, value } = promise.result;\n let scriptTag = value ? /* @__PURE__ */ React4.createElement(\n \"script\",\n {\n nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(\n JSON.stringify(value)\n )});`\n }\n }\n ) : null;\n if (done) {\n return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(\n \"script\",\n {\n nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__reactRouterContext.streamController.close();`\n }\n }\n ));\n } else {\n return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(\n StreamTransfer,\n {\n context,\n identifier: identifier + 1,\n reader,\n textDecoder,\n nonce\n }\n )));\n }\n}\nfunction getSingleFetchDataStrategy(manifest, routeModules, getRouter) {\n return async ({ request, matches, fetcherKey }) => {\n if (request.method !== \"GET\") {\n return singleFetchActionStrategy(request, matches);\n }\n if (fetcherKey) {\n return singleFetchLoaderFetcherStrategy(request, matches);\n }\n return singleFetchLoaderNavigationStrategy(\n manifest,\n routeModules,\n getRouter(),\n request,\n matches\n );\n };\n}\nasync function singleFetchActionStrategy(request, matches) {\n let actionMatch = matches.find((m) => m.shouldLoad);\n invariant2(actionMatch, \"No action match found\");\n let actionStatus = void 0;\n let result = await actionMatch.resolve(async (handler) => {\n let result2 = await handler(async () => {\n let url = singleFetchUrl(request.url);\n let init = await createRequestInit(request);\n let { data: data2, status } = await fetchAndDecode(url, init);\n actionStatus = status;\n return unwrapSingleFetchResult(\n data2,\n actionMatch.route.id\n );\n });\n return result2;\n });\n if (isResponse(result.result) || isRouteErrorResponse(result.result)) {\n return { [actionMatch.route.id]: result };\n }\n return {\n [actionMatch.route.id]: {\n type: result.type,\n result: data(result.result, actionStatus)\n }\n };\n}\nasync function singleFetchLoaderNavigationStrategy(manifest, routeModules, router, request, matches) {\n let routesParams = /* @__PURE__ */ new Set();\n let foundOptOutRoute = false;\n let routeDfds = matches.map(() => createDeferred2());\n let routesLoadedPromise = Promise.all(routeDfds.map((d) => d.promise));\n let singleFetchDfd = createDeferred2();\n let url = stripIndexParam(singleFetchUrl(request.url));\n let init = await createRequestInit(request);\n let results = {};\n let resolvePromise = Promise.all(\n matches.map(\n async (m, i) => m.resolve(async (handler) => {\n routeDfds[i].resolve();\n let manifestRoute = manifest.routes[m.route.id];\n if (!m.shouldLoad) {\n if (!router.state.initialized) {\n return;\n }\n if (m.route.id in router.state.loaderData && manifestRoute && manifestRoute.hasLoader && routeModules[m.route.id]?.shouldRevalidate) {\n foundOptOutRoute = true;\n return;\n }\n }\n if (manifestRoute && manifestRoute.hasClientLoader) {\n if (manifestRoute.hasLoader) {\n foundOptOutRoute = true;\n }\n try {\n let result = await fetchSingleLoader(\n handler,\n url,\n init,\n m.route.id\n );\n results[m.route.id] = { type: \"data\", result };\n } catch (e) {\n results[m.route.id] = { type: \"error\", result: e };\n }\n return;\n }\n if (manifestRoute && manifestRoute.hasLoader) {\n routesParams.add(m.route.id);\n }\n try {\n let result = await handler(async () => {\n let data2 = await singleFetchDfd.promise;\n return unwrapSingleFetchResults(data2, m.route.id);\n });\n results[m.route.id] = {\n type: \"data\",\n result\n };\n } catch (e) {\n results[m.route.id] = {\n type: \"error\",\n result: e\n };\n }\n })\n )\n );\n await routesLoadedPromise;\n if ((!router.state.initialized || routesParams.size === 0) && !window.__reactRouterHdrActive) {\n singleFetchDfd.resolve({});\n } else {\n try {\n if (foundOptOutRoute && routesParams.size > 0) {\n url.searchParams.set(\n \"_routes\",\n matches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n );\n }\n let data2 = await fetchAndDecode(url, init);\n singleFetchDfd.resolve(data2.data);\n } catch (e) {\n singleFetchDfd.reject(e);\n }\n }\n await resolvePromise;\n return results;\n}\nasync function singleFetchLoaderFetcherStrategy(request, matches) {\n let fetcherMatch = matches.find((m) => m.shouldLoad);\n invariant2(fetcherMatch, \"No fetcher match found\");\n let result = await fetcherMatch.resolve(async (handler) => {\n let url = stripIndexParam(singleFetchUrl(request.url));\n let init = await createRequestInit(request);\n return fetchSingleLoader(handler, url, init, fetcherMatch.route.id);\n });\n return { [fetcherMatch.route.id]: result };\n}\nfunction fetchSingleLoader(handler, url, init, routeId) {\n return handler(async () => {\n let singleLoaderUrl = new URL(url);\n singleLoaderUrl.searchParams.set(\"_routes\", routeId);\n let { data: data2 } = await fetchAndDecode(singleLoaderUrl, init);\n return unwrapSingleFetchResults(data2, routeId);\n });\n}\nfunction stripIndexParam(url) {\n let indexValues = url.searchParams.getAll(\"index\");\n url.searchParams.delete(\"index\");\n let indexValuesToKeep = [];\n for (let indexValue of indexValues) {\n if (indexValue) {\n indexValuesToKeep.push(indexValue);\n }\n }\n for (let toKeep of indexValuesToKeep) {\n url.searchParams.append(\"index\", toKeep);\n }\n return url;\n}\nfunction singleFetchUrl(reqUrl) {\n let url = typeof reqUrl === \"string\" ? new URL(\n reqUrl,\n // This can be called during the SSR flow via PrefetchPageLinksImpl so\n // don't assume window is available\n typeof window === \"undefined\" ? \"server://singlefetch/\" : window.location.origin\n ) : reqUrl;\n if (url.pathname === \"/\") {\n url.pathname = \"_root.data\";\n } else {\n url.pathname = `${url.pathname.replace(/\\/$/, \"\")}.data`;\n }\n return url;\n}\nasync function fetchAndDecode(url, init) {\n let res = await fetch(url, init);\n if (res.status === 404 && !res.headers.has(\"X-Remix-Response\")) {\n throw new ErrorResponseImpl(404, \"Not Found\", true);\n }\n invariant2(res.body, \"No response body to decode\");\n try {\n let decoded = await decodeViaTurboStream(res.body, window);\n return { status: res.status, data: decoded.value };\n } catch (e) {\n throw new Error(\"Unable to decode turbo-stream response\");\n }\n}\nfunction decodeViaTurboStream(body, global2) {\n return decode(body, {\n plugins: [\n (type, ...rest) => {\n if (type === \"SanitizedError\") {\n let [name, message, stack] = rest;\n let Constructor = Error;\n if (name && name in global2 && typeof global2[name] === \"function\") {\n Constructor = global2[name];\n }\n let error = new Constructor(message);\n error.stack = stack;\n return { value: error };\n }\n if (type === \"ErrorResponse\") {\n let [data2, status, statusText] = rest;\n return {\n value: new ErrorResponseImpl(status, statusText, data2)\n };\n }\n if (type === \"SingleFetchRedirect\") {\n return { value: { [SingleFetchRedirectSymbol]: rest[0] } };\n }\n if (type === \"SingleFetchClassInstance\") {\n return { value: rest[0] };\n }\n if (type === \"SingleFetchFallback\") {\n return { value: void 0 };\n }\n }\n ]\n });\n}\nfunction unwrapSingleFetchResults(results, routeId) {\n let redirect2 = results[SingleFetchRedirectSymbol];\n if (redirect2) {\n return unwrapSingleFetchResult(redirect2, routeId);\n }\n return results[routeId] !== void 0 ? unwrapSingleFetchResult(results[routeId], routeId) : null;\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n if (\"error\" in result) {\n throw result.error;\n } else if (\"redirect\" in result) {\n let headers = {};\n if (result.revalidate) {\n headers[\"X-Remix-Revalidate\"] = \"yes\";\n }\n if (result.reload) {\n headers[\"X-Remix-Reload-Document\"] = \"yes\";\n }\n if (result.replace) {\n headers[\"X-Remix-Replace\"] = \"yes\";\n }\n throw redirect(result.redirect, { status: result.status, headers });\n } else if (\"data\" in result) {\n return result.data;\n } else {\n throw new Error(`No response found for routeId \"${routeId}\"`);\n }\n}\nfunction createDeferred2() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async (val) => {\n res(val);\n try {\n await promise;\n } catch (e) {\n }\n };\n reject = async (error) => {\n rej(error);\n try {\n await promise;\n } catch (e) {\n }\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\n// lib/dom/ssr/fog-of-war.ts\nimport * as React8 from \"react\";\n\n// lib/dom/ssr/routes.tsx\nimport * as React7 from \"react\";\n\n// lib/dom/ssr/errorBoundaries.tsx\nimport * as React5 from \"react\";\nvar RemixErrorBoundary = class extends React5.Component {\n constructor(props) {\n super(props);\n this.state = { error: props.error || null, location: props.location };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.location !== props.location) {\n return { error: props.error || null, location: props.location };\n }\n return { error: props.error || state.error, location: state.location };\n }\n render() {\n if (this.state.error) {\n return /* @__PURE__ */ React5.createElement(\n RemixRootDefaultErrorBoundary,\n {\n error: this.state.error,\n isOutsideRemixApp: true\n }\n );\n } else {\n return this.props.children;\n }\n }\n};\nfunction RemixRootDefaultErrorBoundary({\n error,\n isOutsideRemixApp\n}) {\n console.error(error);\n let heyDeveloper = /* @__PURE__ */ React5.createElement(\n \"script\",\n {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://remix.run/guides/errors for more information.\"\n );\n `\n }\n }\n );\n if (isRouteErrorResponse(error)) {\n return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: \"Unhandled Thrown Response!\" }, /* @__PURE__ */ React5.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText), heyDeveloper);\n }\n let errorInstance;\n if (error instanceof Error) {\n errorInstance = error;\n } else {\n let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n errorInstance = new Error(errorString);\n }\n return /* @__PURE__ */ React5.createElement(\n BoundaryShell,\n {\n title: \"Application Error!\",\n isOutsideRemixApp\n },\n /* @__PURE__ */ React5.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"),\n /* @__PURE__ */ React5.createElement(\n \"pre\",\n {\n style: {\n padding: \"2rem\",\n background: \"hsla(10, 50%, 50%, 0.1)\",\n color: \"red\",\n overflow: \"auto\"\n }\n },\n errorInstance.stack\n ),\n heyDeveloper\n );\n}\nfunction BoundaryShell({\n title,\n renderScripts,\n isOutsideRemixApp,\n children\n}) {\n let { routeModules } = useFrameworkContext();\n if (routeModules.root?.Layout && !isOutsideRemixApp) {\n return children;\n }\n return /* @__PURE__ */ React5.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React5.createElement(\"head\", null, /* @__PURE__ */ React5.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React5.createElement(\n \"meta\",\n {\n name: \"viewport\",\n content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n }\n ), /* @__PURE__ */ React5.createElement(\"title\", null, title)), /* @__PURE__ */ React5.createElement(\"body\", null, /* @__PURE__ */ React5.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children, renderScripts ? /* @__PURE__ */ React5.createElement(Scripts, null) : null)));\n}\n\n// lib/dom/ssr/fallback.tsx\nimport * as React6 from \"react\";\nfunction RemixRootDefaultHydrateFallback() {\n return /* @__PURE__ */ React6.createElement(BoundaryShell, { title: \"Loading...\", renderScripts: true }, /* @__PURE__ */ React6.createElement(\n \"script\",\n {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this \" +\n \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n \"functions. Check out https://remix.run/route/hydrate-fallback \" +\n \"for more information.\"\n );\n `\n }\n }\n ));\n}\n\n// lib/dom/ssr/routes.tsx\nfunction groupRoutesByParentId(manifest) {\n let routes = {};\n Object.values(manifest).forEach((route) => {\n if (route) {\n let parentId = route.parentId || \"\";\n if (!routes[parentId]) {\n routes[parentId] = [];\n }\n routes[parentId].push(route);\n }\n });\n return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n let Component4 = getRouteModuleComponent(routeModule);\n let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : void 0;\n let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /* @__PURE__ */ React7.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;\n if (route.id === \"root\" && routeModule.Layout) {\n return {\n ...Component4 ? {\n element: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(Component4, null))\n } : { Component: Component4 },\n ...ErrorBoundary ? {\n errorElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(ErrorBoundary, null))\n } : { ErrorBoundary },\n ...HydrateFallback ? {\n hydrateFallbackElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(HydrateFallback, null))\n } : { HydrateFallback }\n };\n }\n return { Component: Component4, ErrorBoundary, HydrateFallback };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {\n return (routesByParentId[parentId] || []).map((route) => {\n let routeModule = routeModules[route.id];\n invariant2(\n routeModule,\n \"No `routeModule` available to create server routes\"\n );\n let dataRoute = {\n ...getRouteComponents(route, routeModule, isSpaMode),\n caseSensitive: route.caseSensitive,\n id: route.id,\n index: route.index,\n path: route.path,\n handle: routeModule.handle,\n // For SPA Mode, all routes are lazy except root. However we tell the\n // router root is also lazy here too since we don't need a full\n // implementation - we just need a `lazy` prop to tell the RR rendering\n // where to stop which is always at the root route in SPA mode\n lazy: isSpaMode ? () => spaModeLazyPromise : void 0,\n // For partial hydration rendering, we need to indicate when the route\n // has a loader/clientLoader, but it won't ever be called during the static\n // render, so just give it a no-op function so we can render down to the\n // proper fallback\n loader: route.hasLoader || route.hasClientLoader ? () => null : void 0\n // We don't need action/shouldRevalidate on these routes since they're\n // for a static render\n };\n let children = createServerRoutes(\n manifest,\n routeModules,\n future,\n isSpaMode,\n route.id,\n routesByParentId,\n spaModeLazyPromise\n );\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, future, isSpaMode) {\n return createClientRoutes(\n manifest,\n routeModulesCache,\n initialState,\n isSpaMode,\n \"\",\n groupRoutesByParentId(manifest),\n needsRevalidation\n );\n}\nfunction preventInvalidServerHandlerCall(type, route, isSpaMode) {\n if (isSpaMode) {\n let fn2 = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n let msg2 = `You cannot call ${fn2} in SPA Mode (routeId: \"${route.id}\")`;\n console.error(msg2);\n throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg2), true);\n }\n let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${route.id}\")`;\n if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n console.error(msg);\n throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n }\n}\nfunction noActionDefinedError(type, routeId) {\n let article = type === \"clientAction\" ? \"a\" : \"an\";\n let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n console.error(msg);\n throw new ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n return (routesByParentId[parentId] || []).map((route) => {\n let routeModule = routeModulesCache[route.id];\n function fetchServerHandler(singleFetch) {\n invariant2(\n typeof singleFetch === \"function\",\n \"No single fetch function available for route handler\"\n );\n return singleFetch();\n }\n function fetchServerLoader(singleFetch) {\n if (!route.hasLoader) return Promise.resolve(null);\n return fetchServerHandler(singleFetch);\n }\n function fetchServerAction(singleFetch) {\n if (!route.hasAction) {\n throw noActionDefinedError(\"action\", route.id);\n }\n return fetchServerHandler(singleFetch);\n }\n async function prefetchStylesAndCallHandler(handler) {\n let cachedModule = routeModulesCache[route.id];\n let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n try {\n return handler();\n } finally {\n await linkPrefetchPromise;\n }\n }\n let dataRoute = {\n id: route.id,\n index: route.index,\n path: route.path\n };\n if (routeModule) {\n Object.assign(dataRoute, {\n ...dataRoute,\n ...getRouteComponents(route, routeModule, isSpaMode),\n handle: routeModule.handle,\n shouldRevalidate: getShouldRevalidateFunction(\n routeModule,\n route.id,\n needsRevalidation\n )\n });\n let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;\n let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;\n let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;\n let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;\n let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);\n dataRoute.loader = async ({ request, params }, singleFetch) => {\n try {\n let result = await prefetchStylesAndCallHandler(async () => {\n invariant2(\n routeModule,\n \"No `routeModule` available for critical-route loader\"\n );\n if (!routeModule.clientLoader) {\n if (isSpaMode) return null;\n return fetchServerLoader(singleFetch);\n }\n return routeModule.clientLoader({\n request,\n params,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route, isSpaMode);\n if (isHydrationRequest) {\n if (hasInitialData) {\n return initialData;\n }\n if (hasInitialError) {\n throw initialError;\n }\n }\n return fetchServerLoader(singleFetch);\n }\n });\n });\n return result;\n } finally {\n isHydrationRequest = false;\n }\n };\n dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n route,\n routeModule,\n isSpaMode\n );\n dataRoute.action = ({ request, params }, singleFetch) => {\n return prefetchStylesAndCallHandler(async () => {\n invariant2(\n routeModule,\n \"No `routeModule` available for critical-route action\"\n );\n if (!routeModule.clientAction) {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(singleFetch);\n }\n return routeModule.clientAction({\n request,\n params,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route, isSpaMode);\n return fetchServerAction(singleFetch);\n }\n });\n });\n };\n } else {\n if (!route.hasClientLoader) {\n dataRoute.loader = ({ request }, singleFetch) => prefetchStylesAndCallHandler(() => {\n if (isSpaMode) return Promise.resolve(null);\n return fetchServerLoader(singleFetch);\n });\n }\n if (!route.hasClientAction) {\n dataRoute.action = ({ request }, singleFetch) => prefetchStylesAndCallHandler(() => {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(singleFetch);\n });\n }\n dataRoute.lazy = async () => {\n let mod = await loadRouteModuleWithBlockingLinks(\n route,\n routeModulesCache\n );\n let lazyRoute = { ...mod };\n if (mod.clientLoader) {\n let clientLoader = mod.clientLoader;\n lazyRoute.loader = (args, singleFetch) => clientLoader({\n ...args,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route, isSpaMode);\n return fetchServerLoader(singleFetch);\n }\n });\n }\n if (mod.clientAction) {\n let clientAction = mod.clientAction;\n lazyRoute.action = (args, singleFetch) => clientAction({\n ...args,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route, isSpaMode);\n return fetchServerAction(singleFetch);\n }\n });\n }\n return {\n ...lazyRoute.loader ? { loader: lazyRoute.loader } : {},\n ...lazyRoute.action ? { action: lazyRoute.action } : {},\n hasErrorBoundary: lazyRoute.hasErrorBoundary,\n shouldRevalidate: getShouldRevalidateFunction(\n lazyRoute,\n route.id,\n needsRevalidation\n ),\n handle: lazyRoute.handle,\n // No need to wrap these in layout since the root route is never\n // loaded via route.lazy()\n Component: lazyRoute.Component,\n ErrorBoundary: lazyRoute.ErrorBoundary\n };\n };\n }\n let children = createClientRoutes(\n manifest,\n routeModulesCache,\n initialState,\n isSpaMode,\n route.id,\n routesByParentId,\n needsRevalidation\n );\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction getShouldRevalidateFunction(route, routeId, needsRevalidation) {\n if (needsRevalidation) {\n return wrapShouldRevalidateForHdr(\n routeId,\n route.shouldRevalidate,\n needsRevalidation\n );\n }\n if (route.shouldRevalidate) {\n let fn = route.shouldRevalidate;\n return (opts) => fn({ ...opts, defaultShouldRevalidate: true });\n }\n return route.shouldRevalidate;\n}\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n let handledRevalidation = false;\n return (arg) => {\n if (!handledRevalidation) {\n handledRevalidation = true;\n return needsRevalidation.has(routeId);\n }\n return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n let routeModule = await loadRouteModule(route, routeModules);\n await prefetchStyleLinks(route, routeModule);\n return {\n Component: getRouteModuleComponent(routeModule),\n ErrorBoundary: routeModule.ErrorBoundary,\n clientAction: routeModule.clientAction,\n clientLoader: routeModule.clientLoader,\n handle: routeModule.handle,\n links: routeModule.links,\n meta: routeModule.meta,\n shouldRevalidate: routeModule.shouldRevalidate\n };\n}\nfunction getRouteModuleComponent(routeModule) {\n if (routeModule.default == null) return void 0;\n let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n if (!isEmptyObject) {\n return routeModule.default;\n }\n}\nfunction shouldHydrateRouteLoader(route, routeModule, isSpaMode) {\n return isSpaMode && route.id !== \"root\" || routeModule.clientLoader != null && (routeModule.clientLoader.hydrate === true || route.hasLoader !== true);\n}\n\n// lib/dom/ssr/fog-of-war.ts\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nvar URL_LIMIT = 7680;\nfunction isFogOfWarEnabled(isSpaMode) {\n return !isSpaMode;\n}\nfunction getPartialManifest(manifest, router) {\n let routeIds = new Set(router.state.matches.map((m) => m.route.id));\n let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n let paths = [\"/\"];\n segments.pop();\n while (segments.length > 0) {\n paths.push(`/${segments.join(\"/\")}`);\n segments.pop();\n }\n paths.forEach((path) => {\n let matches = matchRoutes(router.routes, path, router.basename);\n if (matches) {\n matches.forEach((m) => routeIds.add(m.route.id));\n }\n });\n let initialRoutes = [...routeIds].reduce(\n (acc, id) => Object.assign(acc, { [id]: manifest.routes[id] }),\n {}\n );\n return {\n ...manifest,\n routes: initialRoutes\n };\n}\nfunction getPatchRoutesOnNavigationFunction(manifest, routeModules, isSpaMode, basename) {\n if (!isFogOfWarEnabled(isSpaMode)) {\n return void 0;\n }\n return async ({ path, patch }) => {\n if (discoveredPaths.has(path)) {\n return;\n }\n await fetchAndApplyManifestPatches(\n [path],\n manifest,\n routeModules,\n isSpaMode,\n basename,\n patch\n );\n };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, isSpaMode) {\n React8.useEffect(() => {\n if (!isFogOfWarEnabled(isSpaMode) || navigator.connection?.saveData === true) {\n return;\n }\n function registerElement(el) {\n let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n if (!path) {\n return;\n }\n let url = new URL(path, window.location.origin);\n if (!discoveredPaths.has(url.pathname)) {\n nextPaths.add(url.pathname);\n }\n }\n async function fetchPatches() {\n let lazyPaths = Array.from(nextPaths.keys()).filter((path) => {\n if (discoveredPaths.has(path)) {\n nextPaths.delete(path);\n return false;\n }\n return true;\n });\n if (lazyPaths.length === 0) {\n return;\n }\n try {\n await fetchAndApplyManifestPatches(\n lazyPaths,\n manifest,\n routeModules,\n isSpaMode,\n router.basename,\n router.patchRoutes\n );\n } catch (e) {\n console.error(\"Failed to fetch manifest patches\", e);\n }\n }\n document.body.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach((el) => registerElement(el));\n fetchPatches();\n let debouncedFetchPatches = debounce(fetchPatches, 100);\n function isElement(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n let observer = new MutationObserver((records) => {\n let elements = /* @__PURE__ */ new Set();\n records.forEach((r) => {\n [r.target, ...r.addedNodes].forEach((node) => {\n if (!isElement(node)) return;\n if (node.tagName === \"A\" && node.getAttribute(\"data-discover\")) {\n elements.add(node);\n } else if (node.tagName === \"FORM\" && node.getAttribute(\"data-discover\")) {\n elements.add(node);\n }\n if (node.tagName !== \"A\") {\n node.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach((el) => elements.add(el));\n }\n });\n });\n elements.forEach((el) => registerElement(el));\n debouncedFetchPatches();\n });\n observer.observe(document.documentElement, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"data-discover\", \"href\", \"action\"]\n });\n return () => observer.disconnect();\n }, [isSpaMode, manifest, routeModules, router]);\n}\nasync function fetchAndApplyManifestPatches(paths, manifest, routeModules, isSpaMode, basename, patchRoutes) {\n let manifestPath = `${basename != null ? basename : \"/\"}/__manifest`.replace(\n /\\/+/g,\n \"/\"\n );\n let url = new URL(manifestPath, window.location.origin);\n paths.sort().forEach((path) => url.searchParams.append(\"p\", path));\n url.searchParams.set(\"version\", manifest.version);\n if (url.toString().length > URL_LIMIT) {\n nextPaths.clear();\n return;\n }\n let res = await fetch(url);\n if (!res.ok) {\n throw new Error(`${res.status} ${res.statusText}`);\n } else if (res.status >= 400) {\n throw new Error(await res.text());\n }\n let serverPatches = await res.json();\n let knownRoutes = new Set(Object.keys(manifest.routes));\n let patches = Object.values(serverPatches).reduce((acc, route) => {\n if (route && !knownRoutes.has(route.id)) {\n acc[route.id] = route;\n }\n return acc;\n }, {});\n Object.assign(manifest.routes, patches);\n paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n let parentIds = /* @__PURE__ */ new Set();\n Object.values(patches).forEach((patch) => {\n if (patch && (!patch.parentId || !patches[patch.parentId])) {\n parentIds.add(patch.parentId);\n }\n });\n parentIds.forEach(\n (parentId) => patchRoutes(\n parentId || null,\n createClientRoutes(patches, routeModules, null, isSpaMode, parentId)\n )\n );\n}\nfunction addToFifoQueue(path, queue) {\n if (queue.size >= discoveredPathsMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n}\nfunction debounce(callback, wait) {\n let timeoutId;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => callback(...args), wait);\n };\n}\n\n// lib/dom/ssr/components.tsx\nfunction useDataRouterContext2() {\n let context = React9.useContext(DataRouterContext);\n invariant2(\n context,\n \"You must render this element inside a <DataRouterContext.Provider> element\"\n );\n return context;\n}\nfunction useDataRouterStateContext() {\n let context = React9.useContext(DataRouterStateContext);\n invariant2(\n context,\n \"You must render this element inside a <DataRouterStateContext.Provider> element\"\n );\n return context;\n}\nvar FrameworkContext = React9.createContext(void 0);\nFrameworkContext.displayName = \"FrameworkContext\";\nfunction useFrameworkContext() {\n let context = React9.useContext(FrameworkContext);\n invariant2(\n context,\n \"You must render this element inside a <HydratedRouter> element\"\n );\n return context;\n}\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n let frameworkContext = React9.useContext(FrameworkContext);\n let [maybePrefetch, setMaybePrefetch] = React9.useState(false);\n let [shouldPrefetch, setShouldPrefetch] = React9.useState(false);\n let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;\n let ref = React9.useRef(null);\n React9.useEffect(() => {\n if (prefetch === \"render\") {\n setShouldPrefetch(true);\n }\n if (prefetch === \"viewport\") {\n let callback = (entries) => {\n entries.forEach((entry) => {\n setShouldPrefetch(entry.isIntersecting);\n });\n };\n let observer = new IntersectionObserver(callback, { threshold: 0.5 });\n if (ref.current) observer.observe(ref.current);\n return () => {\n observer.disconnect();\n };\n }\n }, [prefetch]);\n React9.useEffect(() => {\n if (maybePrefetch) {\n let id = setTimeout(() => {\n setShouldPrefetch(true);\n }, 100);\n return () => {\n clearTimeout(id);\n };\n }\n }, [maybePrefetch]);\n let setIntent = () => {\n setMaybePrefetch(true);\n };\n let cancelIntent = () => {\n setMaybePrefetch(false);\n setShouldPrefetch(false);\n };\n if (!frameworkContext) {\n return [false, ref, {}];\n }\n if (prefetch !== \"intent\") {\n return [shouldPrefetch, ref, {}];\n }\n return [\n shouldPrefetch,\n ref,\n {\n onFocus: composeEventHandlers(onFocus, setIntent),\n onBlur: composeEventHandlers(onBlur, cancelIntent),\n onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n }\n ];\n}\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return (event) => {\n theirHandler && theirHandler(event);\n if (!event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\nfunction getActiveMatches(matches, errors, isSpaMode) {\n if (isSpaMode && !isHydrated) {\n return [matches[0]];\n }\n if (errors) {\n let errorIdx = matches.findIndex((m) => errors[m.route.id] !== void 0);\n return matches.slice(0, errorIdx + 1);\n }\n return matches;\n}\nfunction Links() {\n let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();\n let { errors, matches: routerMatches } = useDataRouterStateContext();\n let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let keyedLinks = React9.useMemo(\n () => getKeyedLinksForMatches(matches, routeModules, manifest),\n [matches, routeModules, manifest]\n );\n return /* @__PURE__ */ React9.createElement(React9.Fragment, null, criticalCss ? /* @__PURE__ */ React9.createElement(\"style\", { dangerouslySetInnerHTML: { __html: criticalCss } }) : null, keyedLinks.map(\n ({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React9.createElement(PrefetchPageLinks, { key, ...link }) : /* @__PURE__ */ React9.createElement(\"link\", { key, ...link })\n ));\n}\nfunction PrefetchPageLinks({\n page,\n ...dataLinkProps\n}) {\n let { router } = useDataRouterContext2();\n let matches = React9.useMemo(\n () => matchRoutes(router.routes, page, router.basename),\n [router.routes, page, router.basename]\n );\n if (!matches) {\n return null;\n }\n return /* @__PURE__ */ React9.createElement(PrefetchPageLinksImpl, { page, matches, ...dataLinkProps });\n}\nfunction useKeyedPrefetchLinks(matches) {\n let { manifest, routeModules } = useFrameworkContext();\n let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React9.useState([]);\n React9.useEffect(() => {\n let interrupted = false;\n void getKeyedPrefetchLinks(matches, manifest, routeModules).then(\n (links) => {\n if (!interrupted) {\n setKeyedPrefetchLinks(links);\n }\n }\n );\n return () => {\n interrupted = true;\n };\n }, [matches, manifest, routeModules]);\n return keyedPrefetchLinks;\n}\nfunction PrefetchPageLinksImpl({\n page,\n matches: nextMatches,\n ...linkProps\n}) {\n let location = useLocation();\n let { manifest, routeModules } = useFrameworkContext();\n let { loaderData, matches } = useDataRouterStateContext();\n let newMatchesForData = React9.useMemo(\n () => getNewMatchesForLinks(\n page,\n nextMatches,\n matches,\n manifest,\n location,\n \"data\"\n ),\n [page, nextMatches, matches, manifest, location]\n );\n let newMatchesForAssets = React9.useMemo(\n () => getNewMatchesForLinks(\n page,\n nextMatches,\n matches,\n manifest,\n location,\n \"assets\"\n ),\n [page, nextMatches, matches, manifest, location]\n );\n let dataHrefs = React9.useMemo(() => {\n if (page === location.pathname + location.search + location.hash) {\n return [];\n }\n let routesParams = /* @__PURE__ */ new Set();\n let foundOptOutRoute = false;\n nextMatches.forEach((m) => {\n let manifestRoute = manifest.routes[m.route.id];\n if (!manifestRoute || !manifestRoute.hasLoader) {\n return;\n }\n if (!newMatchesForData.some((m2) => m2.route.id === m.route.id) && m.route.id in loaderData && routeModules[m.route.id]?.shouldRevalidate) {\n foundOptOutRoute = true;\n } else if (manifestRoute.hasClientLoader) {\n foundOptOutRoute = true;\n } else {\n routesParams.add(m.route.id);\n }\n });\n if (routesParams.size === 0) {\n return [];\n }\n let url = singleFetchUrl(page);\n if (foundOptOutRoute && routesParams.size > 0) {\n url.searchParams.set(\n \"_routes\",\n nextMatches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n );\n }\n return [url.pathname + url.search];\n }, [\n loaderData,\n location,\n manifest,\n newMatchesForData,\n nextMatches,\n page,\n routeModules\n ]);\n let moduleHrefs = React9.useMemo(\n () => getModuleLinkHrefs(newMatchesForAssets, manifest),\n [newMatchesForAssets, manifest]\n );\n let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n return /* @__PURE__ */ React9.createElement(React9.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React9.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React9.createElement(\"link\", { key: href, rel: \"modulepreload\", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (\n // these don't spread `linkProps` because they are full link descriptors\n // already with their own props\n /* @__PURE__ */ React9.createElement(\"link\", { key, ...link })\n )));\n}\nfunction Meta() {\n let { isSpaMode, routeModules } = useFrameworkContext();\n let {\n errors,\n matches: routerMatches,\n loaderData\n } = useDataRouterStateContext();\n let location = useLocation();\n let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let error = null;\n if (errors) {\n error = errors[_matches[_matches.length - 1].route.id];\n }\n let meta = [];\n let leafMeta = null;\n let matches = [];\n for (let i = 0; i < _matches.length; i++) {\n let _match = _matches[i];\n let routeId = _match.route.id;\n let data2 = loaderData[routeId];\n let params = _match.params;\n let routeModule = routeModules[routeId];\n let routeMeta = [];\n let match = {\n id: routeId,\n data: data2,\n meta: [],\n params: _match.params,\n pathname: _match.pathname,\n handle: _match.route.handle,\n error\n };\n matches[i] = match;\n if (routeModule?.meta) {\n routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n data: data2,\n params,\n location,\n matches,\n error\n }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n } else if (leafMeta) {\n routeMeta = [...leafMeta];\n }\n routeMeta = routeMeta || [];\n if (!Array.isArray(routeMeta)) {\n throw new Error(\n \"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must return an array of meta objects.\\n\\nTo reference the meta function API, see https://remix.run/route/meta\"\n );\n }\n match.meta = routeMeta;\n matches[i] = match;\n meta = [...routeMeta];\n leafMeta = meta;\n }\n return /* @__PURE__ */ React9.createElement(React9.Fragment, null, meta.flat().map((metaProps) => {\n if (!metaProps) {\n return null;\n }\n if (\"tagName\" in metaProps) {\n let { tagName, ...rest } = metaProps;\n if (!isValidMetaTag(tagName)) {\n console.warn(\n `A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`\n );\n return null;\n }\n let Comp = tagName;\n return /* @__PURE__ */ React9.createElement(Comp, { key: JSON.stringify(rest), ...rest });\n }\n if (\"title\" in metaProps) {\n return /* @__PURE__ */ React9.createElement(\"title\", { key: \"title\" }, String(metaProps.title));\n }\n if (\"charset\" in metaProps) {\n metaProps.charSet ?? (metaProps.charSet = metaProps.charset);\n delete metaProps.charset;\n }\n if (\"charSet\" in metaProps && metaProps.charSet != null) {\n return typeof metaProps.charSet === \"string\" ? /* @__PURE__ */ React9.createElement(\"meta\", { key: \"charSet\", charSet: metaProps.charSet }) : null;\n }\n if (\"script:ld+json\" in metaProps) {\n try {\n let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n return /* @__PURE__ */ React9.createElement(\n \"script\",\n {\n key: `script:ld+json:${json}`,\n type: \"application/ld+json\",\n dangerouslySetInnerHTML: { __html: json }\n }\n );\n } catch (err) {\n return null;\n }\n }\n return /* @__PURE__ */ React9.createElement(\"meta\", { key: JSON.stringify(metaProps), ...metaProps });\n }));\n}\nfunction isValidMetaTag(tagName) {\n return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nvar isHydrated = false;\nfunction Scripts(props) {\n let { manifest, serverHandoffString, isSpaMode, renderMeta } = useFrameworkContext();\n let { router, static: isStatic, staticContext } = useDataRouterContext2();\n let { matches: routerMatches } = useDataRouterStateContext();\n let enableFogOfWar = isFogOfWarEnabled(isSpaMode);\n if (renderMeta) {\n renderMeta.didRenderScripts = true;\n }\n let matches = getActiveMatches(routerMatches, null, isSpaMode);\n React9.useEffect(() => {\n isHydrated = true;\n }, []);\n let initialScripts = React9.useMemo(() => {\n let streamScript = \"window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());\";\n let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : \" \";\n let routeModulesScript = !isStatic ? \" \" : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : \"\"};\n${matches.map(\n (match, index) => `import * as route${index} from ${JSON.stringify(\n manifest.routes[match.route.id].module\n )};`\n ).join(\"\\n\")}\n ${enableFogOfWar ? (\n // Inline a minimal manifest with the SSR matches\n `window.__reactRouterManifest = ${JSON.stringify(\n getPartialManifest(manifest, router),\n null,\n 2\n )};`\n ) : \"\"}\n window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(\n \"script\",\n {\n ...props,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: createHtml(contextScript),\n type: void 0\n }\n ), /* @__PURE__ */ React9.createElement(\n \"script\",\n {\n ...props,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: createHtml(routeModulesScript),\n type: \"module\",\n async: true\n }\n ));\n }, []);\n let routePreloads = matches.map((match) => {\n let route = manifest.routes[match.route.id];\n return route ? (route.imports || []).concat([route.module]) : [];\n }).flat(1);\n let preloads = isHydrated ? [] : manifest.entry.imports.concat(routePreloads);\n return isHydrated ? null : /* @__PURE__ */ React9.createElement(React9.Fragment, null, !enableFogOfWar ? /* @__PURE__ */ React9.createElement(\n \"link\",\n {\n rel: \"modulepreload\",\n href: manifest.url,\n crossOrigin: props.crossOrigin\n }\n ) : null, /* @__PURE__ */ React9.createElement(\n \"link\",\n {\n rel: \"modulepreload\",\n href: manifest.entry.module,\n crossOrigin: props.crossOrigin\n }\n ), dedupe(preloads).map((path) => /* @__PURE__ */ React9.createElement(\n \"link\",\n {\n key: path,\n rel: \"modulepreload\",\n href: path,\n crossOrigin: props.crossOrigin\n }\n )), initialScripts);\n}\nfunction dedupe(array) {\n return [...new Set(array)];\n}\nfunction mergeRefs(...refs) {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\n// lib/dom/lib.tsx\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\ntry {\n if (isBrowser) {\n window.__reactRouterVersion = \"7.1.1\";\n }\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n future: opts?.future,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window\n }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n future: opts?.future,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window\n }).initialize();\n}\nfunction parseHydrationData() {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors)\n };\n }\n return state;\n}\nfunction deserializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponseImpl(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n let error = new ErrorConstructor(val.message);\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction BrowserRouter({\n basename,\n children,\n window: window2\n}) {\n let historyRef = React10.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n React10.startTransition(() => setStateImpl(newState));\n },\n [setStateImpl]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n }\n );\n}\nfunction HashRouter({ basename, children, window: window2 }) {\n let historyRef = React10.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window: window2, v5Compat: true });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n React10.startTransition(() => setStateImpl(newState));\n },\n [setStateImpl]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n }\n );\n}\nfunction HistoryRouter({\n basename,\n children,\n history\n}) {\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n React10.startTransition(() => setStateImpl(newState));\n },\n [setStateImpl]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n }\n );\n}\nHistoryRouter.displayName = \"unstable_HistoryRouter\";\nvar ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar Link = React10.forwardRef(\n function LinkWithRef({\n onClick,\n discover = \"render\",\n prefetch = \"none\",\n relative,\n reloadDocument,\n replace: replace2,\n state,\n target,\n to,\n preventScrollReset,\n viewTransition,\n ...rest\n }, forwardedRef) {\n let { basename } = React10.useContext(NavigationContext);\n let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX2.test(to);\n let absoluteHref;\n let isExternal = false;\n if (typeof to === \"string\" && isAbsolute) {\n absoluteHref = to;\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n if (targetUrl.origin === currentUrl.origin && path != null) {\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n warning(\n false,\n `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`\n );\n }\n }\n }\n let href = useHref(to, { relative });\n let [shouldPrefetch, prefetchRef, prefetchHandlers] = usePrefetchBehavior(\n prefetch,\n rest\n );\n let internalOnClick = useLinkClickHandler(to, {\n replace: replace2,\n state,\n target,\n preventScrollReset,\n relative,\n viewTransition\n });\n function handleClick(event) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n let link = (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n /* @__PURE__ */ React10.createElement(\n \"a\",\n {\n ...rest,\n ...prefetchHandlers,\n href: absoluteHref || href,\n onClick: isExternal || reloadDocument ? onClick : handleClick,\n ref: mergeRefs(forwardedRef, prefetchRef),\n target,\n \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n }\n )\n );\n return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href })) : link;\n }\n);\nLink.displayName = \"Link\";\nvar NavLink = React10.forwardRef(\n function NavLinkWithRef({\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n viewTransition,\n children,\n ...rest\n }, ref) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React10.useContext(DataRouterStateContext);\n let { navigator: navigator2, basename } = React10.useContext(NavigationContext);\n let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewTransitionState(path) && viewTransition === true;\n let toPathname = navigator2.encodeLocation ? navigator2.encodeLocation(path).pathname : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n toPathname = toPathname.toLowerCase();\n }\n if (nextLocationPathname && basename) {\n nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n let renderProps = {\n isActive,\n isPending,\n isTransitioning\n };\n let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n let className;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n isTransitioning ? \"transitioning\" : null\n ].filter(Boolean).join(\" \");\n }\n let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n return /* @__PURE__ */ React10.createElement(\n Link,\n {\n ...rest,\n \"aria-current\": ariaCurrent,\n className,\n ref,\n style,\n to,\n viewTransition\n },\n typeof children === \"function\" ? children(renderProps) : children\n );\n }\n);\nNavLink.displayName = \"NavLink\";\nvar Form = React10.forwardRef(\n ({\n discover = \"render\",\n fetcherKey,\n navigate,\n reloadDocument,\n replace: replace2,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n viewTransition,\n ...props\n }, forwardedRef) => {\n let submit = useSubmit();\n let formAction = useFormAction(action, { relative });\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let isAbsolute = typeof action === \"string\" && ABSOLUTE_URL_REGEX2.test(action);\n let submitHandler = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n let submitMethod = submitter?.getAttribute(\"formmethod\") || method;\n submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace: replace2,\n state,\n relative,\n preventScrollReset,\n viewTransition\n });\n };\n return /* @__PURE__ */ React10.createElement(\n \"form\",\n {\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n onSubmit: reloadDocument ? onSubmit : submitHandler,\n ...props,\n \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n }\n );\n }\n);\nForm.displayName = \"Form\";\nfunction ScrollRestoration({\n getKey,\n storageKey,\n ...props\n}) {\n let remixContext = React10.useContext(FrameworkContext);\n let { basename } = React10.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n useScrollRestoration({ getKey, storageKey });\n let ssrKey = React10.useMemo(\n () => {\n if (!remixContext || !getKey) return null;\n let userKey = getScrollRestorationKey(\n location,\n matches,\n basename,\n getKey\n );\n return userKey !== location.key ? userKey : null;\n },\n // Nah, we only need this the first time for the SSR render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n if (!remixContext || remixContext.isSpaMode) {\n return null;\n }\n let restoreScroll = ((storageKey2, restoreKey) => {\n if (!window.history.state || !window.history.state.key) {\n let key = Math.random().toString(32).slice(2);\n window.history.replaceState({ key }, \"\");\n }\n try {\n let positions = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n let storedY = positions[restoreKey || window.history.state.key];\n if (typeof storedY === \"number\") {\n window.scrollTo(0, storedY);\n }\n } catch (error) {\n console.error(error);\n sessionStorage.removeItem(storageKey2);\n }\n }).toString();\n return /* @__PURE__ */ React10.createElement(\n \"script\",\n {\n ...props,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: `(${restoreScroll})(${JSON.stringify(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n )}, ${JSON.stringify(ssrKey)})`\n }\n }\n );\n}\nScrollRestoration.displayName = \"ScrollRestoration\";\nfunction getDataRouterConsoleError2(hookName) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext3(hookName) {\n let ctx = React10.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError2(hookName));\n return ctx;\n}\nfunction useDataRouterState2(hookName) {\n let state = React10.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError2(hookName));\n return state;\n}\nfunction useLinkClickHandler(to, {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n viewTransition\n} = {}) {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n return React10.useCallback(\n (event) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n navigate(to, {\n replace: replace2,\n state,\n preventScrollReset,\n relative,\n viewTransition\n });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n viewTransition\n ]\n );\n}\nfunction useSearchParams(defaultInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`\n );\n let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React10.useRef(false);\n let location = useLocation();\n let searchParams = React10.useMemo(\n () => (\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n )\n ),\n [location.search]\n );\n let navigate = useNavigate();\n let setSearchParams = React10.useCallback(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n return [searchParams, setSearchParams];\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\nfunction useSubmit() {\n let { router } = useDataRouterContext3(\"useSubmit\" /* UseSubmit */);\n let { basename } = React10.useContext(NavigationContext);\n let currentRouteId = useRouteId();\n return React10.useCallback(\n async (target, options = {}) => {\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n await router.fetch(key, currentRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n flushSync: options.flushSync\n });\n } else {\n await router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n flushSync: options.flushSync,\n viewTransition: options.viewTransition\n });\n }\n },\n [router, basename, currentRouteId]\n );\n}\nfunction useFormAction(action, { relative } = {}) {\n let { basename } = React10.useContext(NavigationContext);\n let routeContext = React10.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n let [match] = routeContext.matches.slice(-1);\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n let location = useLocation();\n if (action == null) {\n path.search = location.search;\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n if (hasNakedIndexParam) {\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\nfunction useFetcher({\n key\n} = {}) {\n let { router } = useDataRouterContext3(\"useFetcher\" /* UseFetcher */);\n let state = useDataRouterState2(\"useFetcher\" /* UseFetcher */);\n let fetcherData = React10.useContext(FetchersContext);\n let route = React10.useContext(RouteContext);\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n let defaultKey = React10.useId();\n let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n }\n React10.useEffect(() => {\n router.getFetcher(fetcherKey);\n return () => router.deleteFetcher(fetcherKey);\n }, [router, fetcherKey]);\n let load = React10.useCallback(\n async (href, opts) => {\n invariant(routeId, \"No routeId available for fetcher.load()\");\n await router.fetch(fetcherKey, routeId, href, opts);\n },\n [fetcherKey, routeId, router]\n );\n let submitImpl = useSubmit();\n let submit = React10.useCallback(\n async (target, opts) => {\n await submitImpl(target, {\n ...opts,\n navigate: false,\n fetcherKey\n });\n },\n [fetcherKey, submitImpl]\n );\n let FetcherForm = React10.useMemo(() => {\n let FetcherForm2 = React10.forwardRef(\n (props, ref) => {\n return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });\n }\n );\n FetcherForm2.displayName = \"fetcher.Form\";\n return FetcherForm2;\n }, [fetcherKey]);\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data2 = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React10.useMemo(\n () => ({\n Form: FetcherForm,\n submit,\n load,\n ...fetcher,\n data: data2\n }),\n [FetcherForm, submit, load, fetcher, data2]\n );\n return fetcherWithComponents;\n}\nfunction useFetchers() {\n let state = useDataRouterState2(\"useFetchers\" /* UseFetchers */);\n return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n ...fetcher,\n key\n }));\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction getScrollRestorationKey(location, matches, basename, getKey) {\n let key = null;\n if (getKey) {\n if (basename !== \"/\") {\n key = getKey(\n {\n ...location,\n pathname: stripBasename(location.pathname, basename) || location.pathname\n },\n matches\n );\n } else {\n key = getKey(location, matches);\n }\n }\n if (key == null) {\n key = location.key;\n }\n return key;\n}\nfunction useScrollRestoration({\n getKey,\n storageKey\n} = {}) {\n let { router } = useDataRouterContext3(\"useScrollRestoration\" /* UseScrollRestoration */);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(\n \"useScrollRestoration\" /* UseScrollRestoration */\n );\n let { basename } = React10.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n React10.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n usePageHide(\n React10.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = getScrollRestorationKey(location, matches, basename, getKey);\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n );\n }\n window.history.scrollRestoration = \"auto\";\n }, [navigation.state, getKey, basename, location, matches, storageKey])\n );\n if (typeof document !== \"undefined\") {\n React10.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n }\n }, [storageKey]);\n React10.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey ? (location2, matches2) => getScrollRestorationKey(location2, matches2, basename, getKey) : void 0\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n React10.useLayoutEffect(() => {\n if (restoreScrollPosition === false) {\n return;\n }\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n if (location.hash) {\n let el = document.getElementById(\n decodeURIComponent(location.hash.slice(1))\n );\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n if (preventScrollReset === true) {\n return;\n }\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\nfunction useBeforeUnload(callback, options) {\n let { capture } = options || {};\n React10.useEffect(() => {\n let opts = capture != null ? { capture } : void 0;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n let { capture } = options || {};\n React10.useEffect(() => {\n let opts = capture != null ? { capture } : void 0;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\nfunction usePrompt({\n when,\n message\n}) {\n let blocker = useBlocker(when);\n React10.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n React10.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\nfunction useViewTransitionState(to, opts = {}) {\n let vtContext = React10.useContext(ViewTransitionContext);\n invariant(\n vtContext != null,\n \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?\"\n );\n let { basename } = useDataRouterContext3(\n \"useViewTransitionState\" /* useViewTransitionState */\n );\n let path = useResolvedPath(to, { relative: opts.relative });\n if (!vtContext.isTransitioning) {\n return false;\n }\n let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n\n// lib/dom/server.tsx\nimport * as React11 from \"react\";\nfunction StaticRouter({\n basename,\n children,\n location: locationProp = \"/\"\n}) {\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let action = \"POP\" /* Pop */;\n let location = {\n pathname: locationProp.pathname || \"/\",\n search: locationProp.search || \"\",\n hash: locationProp.hash || \"\",\n state: locationProp.state != null ? locationProp.state : null,\n key: locationProp.key || \"default\"\n };\n let staticNavigator = getStatelessNavigator();\n return /* @__PURE__ */ React11.createElement(\n Router,\n {\n basename,\n children,\n location,\n navigationType: action,\n navigator: staticNavigator,\n static: true\n }\n );\n}\nfunction StaticRouterProvider({\n context,\n router,\n hydrate = true,\n nonce\n}) {\n invariant(\n router && context,\n \"You must provide `router` and `context` to <StaticRouterProvider>\"\n );\n let dataRouterContext = {\n router,\n navigator: getStatelessNavigator(),\n static: true,\n staticContext: context,\n basename: context.basename || \"/\"\n };\n let fetchersContext = /* @__PURE__ */ new Map();\n let hydrateScript = \"\";\n if (hydrate !== false) {\n let data2 = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors(context.errors)\n };\n let json = htmlEscape(JSON.stringify(JSON.stringify(data2)));\n hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n }\n let { state } = dataRouterContext.router;\n return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(\n Router,\n {\n basename: dataRouterContext.basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: dataRouterContext.navigator,\n static: dataRouterContext.static\n },\n /* @__PURE__ */ React11.createElement(\n DataRoutes2,\n {\n routes: router.routes,\n future: router.future,\n state\n }\n )\n ))))), hydrateScript ? /* @__PURE__ */ React11.createElement(\n \"script\",\n {\n suppressHydrationWarning: true,\n nonce,\n dangerouslySetInnerHTML: { __html: hydrateScript }\n }\n ) : null);\n}\nfunction DataRoutes2({\n routes,\n future,\n state\n}) {\n return useRoutesImpl(routes, void 0, state, future);\n}\nfunction serializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (isRouteErrorResponse(val)) {\n serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n } else if (val instanceof Error) {\n serialized[key] = {\n message: val.message,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration.\n ...val.name !== \"Error\" ? {\n __subType: val.name\n } : {}\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction getStatelessNavigator() {\n return {\n createHref,\n encodeLocation,\n push(to) {\n throw new Error(\n `You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`\n );\n },\n replace(to) {\n throw new Error(\n `You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere in your app.`\n );\n },\n go(delta) {\n throw new Error(\n `You cannot use navigator.go() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${delta})\\` somewhere in your app.`\n );\n },\n back() {\n throw new Error(\n `You cannot use navigator.back() on the server because it is a stateless environment.`\n );\n },\n forward() {\n throw new Error(\n `You cannot use navigator.forward() on the server because it is a stateless environment.`\n );\n }\n };\n}\nfunction createStaticHandler2(routes, opts) {\n return createStaticHandler(routes, {\n ...opts,\n mapRouteProperties\n });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n let manifest = {};\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n void 0,\n manifest\n );\n let matches = context.matches.map((match) => {\n let route = manifest[match.route.id] || match.route;\n return {\n ...match,\n route\n };\n });\n let msg = (method) => `You cannot use router.${method}() on the server because it is a stateless environment`;\n return {\n get basename() {\n return context.basename;\n },\n get future() {\n return {\n ...opts?.future\n };\n },\n get state() {\n return {\n historyAction: \"POP\" /* Pop */,\n location: context.location,\n matches,\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: context.errors,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n fetchers: /* @__PURE__ */ new Map(),\n blockers: /* @__PURE__ */ new Map()\n };\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return void 0;\n },\n initialize() {\n throw msg(\"initialize\");\n },\n subscribe() {\n throw msg(\"subscribe\");\n },\n enableScrollRestoration() {\n throw msg(\"enableScrollRestoration\");\n },\n navigate() {\n throw msg(\"navigate\");\n },\n fetch() {\n throw msg(\"fetch\");\n },\n revalidate() {\n throw msg(\"revalidate\");\n },\n createHref,\n encodeLocation,\n getFetcher() {\n return IDLE_FETCHER;\n },\n deleteFetcher() {\n throw msg(\"deleteFetcher\");\n },\n dispose() {\n throw msg(\"dispose\");\n },\n getBlocker() {\n return IDLE_BLOCKER;\n },\n deleteBlocker() {\n throw msg(\"deleteBlocker\");\n },\n patchRoutes() {\n throw msg(\"patchRoutes\");\n },\n _internalFetchControllers: /* @__PURE__ */ new Map(),\n _internalSetRoutes() {\n throw msg(\"_internalSetRoutes\");\n }\n };\n}\nfunction createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n}\nfunction encodeLocation(to) {\n let href = typeof to === \"string\" ? to : createPath(to);\n href = href.replace(/ $/, \"%20\");\n let encoded = ABSOLUTE_URL_REGEX3.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n return {\n pathname: encoded.pathname,\n search: encoded.search,\n hash: encoded.hash\n };\n}\nvar ABSOLUTE_URL_REGEX3 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar ESCAPE_LOOKUP2 = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX2 = /[&><\\u2028\\u2029]/g;\nfunction htmlEscape(str) {\n return str.replace(ESCAPE_REGEX2, (match) => ESCAPE_LOOKUP2[match]);\n}\n\n// lib/dom/ssr/server.tsx\nimport * as React12 from \"react\";\nfunction ServerRouter({\n context,\n url,\n nonce\n}) {\n if (typeof url === \"string\") {\n url = new URL(url);\n }\n let { manifest, routeModules, criticalCss, serverHandoffString } = context;\n let routes = createServerRoutes(\n manifest.routes,\n routeModules,\n context.future,\n context.isSpaMode\n );\n context.staticHandlerContext.loaderData = {\n ...context.staticHandlerContext.loaderData\n };\n for (let match of context.staticHandlerContext.matches) {\n let routeId = match.route.id;\n let route = routeModules[routeId];\n let manifestRoute = context.manifest.routes[routeId];\n if (route && manifestRoute && shouldHydrateRouteLoader(manifestRoute, route, context.isSpaMode) && (route.HydrateFallback || !manifestRoute.hasLoader)) {\n delete context.staticHandlerContext.loaderData[routeId];\n }\n }\n let router = createStaticRouter(routes, context.staticHandlerContext);\n return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(\n FrameworkContext.Provider,\n {\n value: {\n manifest,\n routeModules,\n criticalCss,\n serverHandoffString,\n future: context.future,\n isSpaMode: context.isSpaMode,\n serializeError: context.serializeError,\n renderMeta: context.renderMeta\n }\n },\n /* @__PURE__ */ React12.createElement(RemixErrorBoundary, { location: router.state.location }, /* @__PURE__ */ React12.createElement(\n StaticRouterProvider,\n {\n router,\n context: context.staticHandlerContext,\n hydrate: false\n }\n ))\n ), context.serverHandoffStream ? /* @__PURE__ */ React12.createElement(React12.Suspense, null, /* @__PURE__ */ React12.createElement(\n StreamTransfer,\n {\n context,\n identifier: 0,\n reader: context.serverHandoffStream.getReader(),\n textDecoder: new TextDecoder(),\n nonce\n }\n )) : null);\n}\n\n// lib/dom/ssr/routes-test-stub.tsx\nimport * as React13 from \"react\";\nfunction createRoutesStub(routes, context = {}) {\n return function RoutesTestStub({\n initialEntries,\n initialIndex,\n hydrationData,\n future\n }) {\n let routerRef = React13.useRef();\n let remixContextRef = React13.useRef();\n if (routerRef.current == null) {\n remixContextRef.current = {\n future: {},\n manifest: {\n routes: {},\n entry: { imports: [], module: \"\" },\n url: \"\",\n version: \"\"\n },\n routeModules: {},\n isSpaMode: false\n };\n let patched = processRoutes(\n // @ts-expect-error loader/action context types don't match :/\n convertRoutesToDataRoutes(routes, (r) => r),\n context,\n remixContextRef.current.manifest,\n remixContextRef.current.routeModules\n );\n routerRef.current = createMemoryRouter(patched, {\n initialEntries,\n initialIndex,\n hydrationData\n });\n }\n return /* @__PURE__ */ React13.createElement(FrameworkContext.Provider, { value: remixContextRef.current }, /* @__PURE__ */ React13.createElement(RouterProvider, { router: routerRef.current }));\n };\n}\nfunction processRoutes(routes, context, manifest, routeModules, parentId) {\n return routes.map((route) => {\n if (!route.id) {\n throw new Error(\n \"Expected a route.id in @remix-run/testing processRoutes() function\"\n );\n }\n let { loader, action } = route;\n let newRoute = {\n id: route.id,\n path: route.path,\n index: route.index,\n Component: route.Component,\n HydrateFallback: route.HydrateFallback,\n ErrorBoundary: route.ErrorBoundary,\n action: action ? (args) => action({ ...args, context }) : void 0,\n loader: loader ? (args) => loader({ ...args, context }) : void 0,\n handle: route.handle,\n shouldRevalidate: route.shouldRevalidate\n };\n let entryRoute = {\n id: route.id,\n path: route.path,\n index: route.index,\n parentId,\n hasAction: route.action != null,\n hasLoader: route.loader != null,\n // When testing routes, you should just be stubbing loader/action, not\n // trying to re-implement the full loader/clientLoader/SSR/hydration flow.\n // That is better tested via E2E tests.\n hasClientAction: false,\n hasClientLoader: false,\n hasErrorBoundary: route.ErrorBoundary != null,\n module: \"build/stub-path-to-module.js\"\n // any need for this?\n };\n manifest.routes[newRoute.id] = entryRoute;\n routeModules[route.id] = {\n default: route.Component || Outlet,\n ErrorBoundary: route.ErrorBoundary || void 0,\n handle: route.handle,\n links: route.links,\n meta: route.meta,\n shouldRevalidate: route.shouldRevalidate\n };\n if (route.children) {\n newRoute.children = processRoutes(\n route.children,\n context,\n manifest,\n routeModules,\n newRoute.id\n );\n }\n return newRoute;\n });\n}\n\n// lib/server-runtime/cookies.ts\nimport { parse, serialize } from \"cookie\";\n\n// lib/server-runtime/crypto.ts\nvar encoder = new TextEncoder();\nvar sign = async (value, secret) => {\n let data2 = encoder.encode(value);\n let key = await createKey2(secret, [\"sign\"]);\n let signature = await crypto.subtle.sign(\"HMAC\", key, data2);\n let hash = btoa(String.fromCharCode(...new Uint8Array(signature))).replace(\n /=+$/,\n \"\"\n );\n return value + \".\" + hash;\n};\nvar unsign = async (cookie, secret) => {\n let index = cookie.lastIndexOf(\".\");\n let value = cookie.slice(0, index);\n let hash = cookie.slice(index + 1);\n let data2 = encoder.encode(value);\n let key = await createKey2(secret, [\"verify\"]);\n let signature = byteStringToUint8Array(atob(hash));\n let valid = await crypto.subtle.verify(\"HMAC\", key, signature, data2);\n return valid ? value : false;\n};\nvar createKey2 = async (secret, usages) => crypto.subtle.importKey(\n \"raw\",\n encoder.encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n usages\n);\nfunction byteStringToUint8Array(byteString) {\n let array = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n array[i] = byteString.charCodeAt(i);\n }\n return array;\n}\n\n// lib/server-runtime/cookies.ts\nvar createCookie = (name, cookieOptions = {}) => {\n let { secrets = [], ...options } = {\n path: \"/\",\n sameSite: \"lax\",\n ...cookieOptions\n };\n warnOnceAboutExpiresCookie(name, options.expires);\n return {\n get name() {\n return name;\n },\n get isSigned() {\n return secrets.length > 0;\n },\n get expires() {\n return typeof options.maxAge !== \"undefined\" ? new Date(Date.now() + options.maxAge * 1e3) : options.expires;\n },\n async parse(cookieHeader, parseOptions) {\n if (!cookieHeader) return null;\n let cookies = parse(cookieHeader, { ...options, ...parseOptions });\n if (name in cookies) {\n let value = cookies[name];\n if (typeof value === \"string\" && value !== \"\") {\n let decoded = await decodeCookieValue(value, secrets);\n return decoded;\n } else {\n return \"\";\n }\n } else {\n return null;\n }\n },\n async serialize(value, serializeOptions) {\n return serialize(\n name,\n value === \"\" ? \"\" : await encodeCookieValue(value, secrets),\n {\n ...options,\n ...serializeOptions\n }\n );\n }\n };\n};\nvar isCookie = (object) => {\n return object != null && typeof object.name === \"string\" && typeof object.isSigned === \"boolean\" && typeof object.parse === \"function\" && typeof object.serialize === \"function\";\n};\nasync function encodeCookieValue(value, secrets) {\n let encoded = encodeData(value);\n if (secrets.length > 0) {\n encoded = await sign(encoded, secrets[0]);\n }\n return encoded;\n}\nasync function decodeCookieValue(value, secrets) {\n if (secrets.length > 0) {\n for (let secret of secrets) {\n let unsignedValue = await unsign(value, secret);\n if (unsignedValue !== false) {\n return decodeData(unsignedValue);\n }\n }\n return null;\n }\n return decodeData(value);\n}\nfunction encodeData(value) {\n return btoa(myUnescape(encodeURIComponent(JSON.stringify(value))));\n}\nfunction decodeData(value) {\n try {\n return JSON.parse(decodeURIComponent(myEscape(atob(value))));\n } catch (error) {\n return {};\n }\n}\nfunction myEscape(value) {\n let str = value.toString();\n let result = \"\";\n let index = 0;\n let chr, code;\n while (index < str.length) {\n chr = str.charAt(index++);\n if (/[\\w*+\\-./@]/.exec(chr)) {\n result += chr;\n } else {\n code = chr.charCodeAt(0);\n if (code < 256) {\n result += \"%\" + hex(code, 2);\n } else {\n result += \"%u\" + hex(code, 4).toUpperCase();\n }\n }\n }\n return result;\n}\nfunction hex(code, length) {\n let result = code.toString(16);\n while (result.length < length) result = \"0\" + result;\n return result;\n}\nfunction myUnescape(value) {\n let str = value.toString();\n let result = \"\";\n let index = 0;\n let chr, part;\n while (index < str.length) {\n chr = str.charAt(index++);\n if (chr === \"%\") {\n if (str.charAt(index) === \"u\") {\n part = str.slice(index + 1, index + 5);\n if (/^[\\da-f]{4}$/i.exec(part)) {\n result += String.fromCharCode(parseInt(part, 16));\n index += 5;\n continue;\n }\n } else {\n part = str.slice(index, index + 2);\n if (/^[\\da-f]{2}$/i.exec(part)) {\n result += String.fromCharCode(parseInt(part, 16));\n index += 2;\n continue;\n }\n }\n }\n result += chr;\n }\n return result;\n}\nfunction warnOnceAboutExpiresCookie(name, expires) {\n warnOnce(\n !expires,\n `The \"${name}\" cookie has an \"expires\" property set. This will cause the expires value to not be updated when the session is committed. Instead, you should set the expires value when serializing the cookie. You can use \\`commitSession(session, { expires })\\` if using a session storage object, or \\`cookie.serialize(\"value\", { expires })\\` if you're using the cookie directly.`\n );\n}\n\n// lib/server-runtime/entry.ts\nfunction createEntryRouteModules(manifest) {\n return Object.keys(manifest).reduce((memo2, routeId) => {\n let route = manifest[routeId];\n if (route) {\n memo2[routeId] = route.module;\n }\n return memo2;\n }, {});\n}\n\n// lib/server-runtime/mode.ts\nvar ServerMode = /* @__PURE__ */ ((ServerMode2) => {\n ServerMode2[\"Development\"] = \"development\";\n ServerMode2[\"Production\"] = \"production\";\n ServerMode2[\"Test\"] = \"test\";\n return ServerMode2;\n})(ServerMode || {});\nfunction isServerMode(value) {\n return value === \"development\" /* Development */ || value === \"production\" /* Production */ || value === \"test\" /* Test */;\n}\n\n// lib/server-runtime/errors.ts\nfunction sanitizeError(error, serverMode) {\n if (error instanceof Error && serverMode !== \"development\" /* Development */) {\n let sanitized = new Error(\"Unexpected Server Error\");\n sanitized.stack = void 0;\n return sanitized;\n }\n return error;\n}\nfunction sanitizeErrors(errors, serverMode) {\n return Object.entries(errors).reduce((acc, [routeId, error]) => {\n return Object.assign(acc, { [routeId]: sanitizeError(error, serverMode) });\n }, {});\n}\nfunction serializeError(error, serverMode) {\n let sanitized = sanitizeError(error, serverMode);\n return {\n message: sanitized.message,\n stack: sanitized.stack\n };\n}\nfunction serializeErrors2(errors, serverMode) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (isRouteErrorResponse(val)) {\n serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n } else if (val instanceof Error) {\n let sanitized = sanitizeError(val, serverMode);\n serialized[key] = {\n message: sanitized.message,\n stack: sanitized.stack,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration. This will only apply\n // in dev mode since all production errors are sanitized to normal\n // Error instances\n ...sanitized.name !== \"Error\" ? {\n __subType: sanitized.name\n } : {}\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\n// lib/server-runtime/routeMatching.ts\nfunction matchServerRoutes(routes, pathname, basename) {\n let matches = matchRoutes(\n routes,\n pathname,\n basename\n );\n if (!matches) return null;\n return matches.map((match) => ({\n params: match.params,\n pathname: match.pathname,\n route: match.route\n }));\n}\n\n// lib/server-runtime/data.ts\nasync function callRouteHandler(handler, args) {\n let result = await handler({\n request: stripRoutesParam(stripIndexParam2(args.request)),\n params: args.params,\n context: args.context\n });\n if (isDataWithResponseInit(result) && result.init && result.init.status && isRedirectStatusCode(result.init.status)) {\n throw new Response(null, result.init);\n }\n return result;\n}\nfunction stripIndexParam2(request) {\n let url = new URL(request.url);\n let indexValues = url.searchParams.getAll(\"index\");\n url.searchParams.delete(\"index\");\n let indexValuesToKeep = [];\n for (let indexValue of indexValues) {\n if (indexValue) {\n indexValuesToKeep.push(indexValue);\n }\n }\n for (let toKeep of indexValuesToKeep) {\n url.searchParams.append(\"index\", toKeep);\n }\n let init = {\n method: request.method,\n body: request.body,\n headers: request.headers,\n signal: request.signal\n };\n if (init.body) {\n init.duplex = \"half\";\n }\n return new Request(url.href, init);\n}\nfunction stripRoutesParam(request) {\n let url = new URL(request.url);\n url.searchParams.delete(\"_routes\");\n let init = {\n method: request.method,\n body: request.body,\n headers: request.headers,\n signal: request.signal\n };\n if (init.body) {\n init.duplex = \"half\";\n }\n return new Request(url.href, init);\n}\n\n// lib/server-runtime/invariant.ts\nfunction invariant3(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n console.error(\n \"The following error is a bug in React Router; please open an issue! https://github.com/remix-run/react-router/issues/new/choose\"\n );\n throw new Error(message);\n }\n}\n\n// lib/server-runtime/routes.ts\nfunction groupRoutesByParentId2(manifest) {\n let routes = {};\n Object.values(manifest).forEach((route) => {\n if (route) {\n let parentId = route.parentId || \"\";\n if (!routes[parentId]) {\n routes[parentId] = [];\n }\n routes[parentId].push(route);\n }\n });\n return routes;\n}\nfunction createRoutes(manifest, parentId = \"\", routesByParentId = groupRoutesByParentId2(manifest)) {\n return (routesByParentId[parentId] || []).map((route) => ({\n ...route,\n children: createRoutes(manifest, route.id, routesByParentId)\n }));\n}\nfunction createStaticHandlerDataRoutes(manifest, future, parentId = \"\", routesByParentId = groupRoutesByParentId2(manifest)) {\n return (routesByParentId[parentId] || []).map((route) => {\n let commonRoute = {\n // Always include root due to default boundaries\n hasErrorBoundary: route.id === \"root\" || route.module.ErrorBoundary != null,\n id: route.id,\n path: route.path,\n // Need to use RR's version in the param typed here to permit the optional\n // context even though we know it'll always be provided in remix\n loader: route.module.loader ? async (args) => {\n if (args.request.headers.has(\"X-React-Router-Prerender-Data\")) {\n const preRenderedData = args.request.headers.get(\n \"X-React-Router-Prerender-Data\"\n );\n let encoded = preRenderedData ? decodeURI(preRenderedData) : preRenderedData;\n invariant3(encoded, \"Missing prerendered data for route\");\n let uint8array = new TextEncoder().encode(encoded);\n let stream = new ReadableStream({\n start(controller) {\n controller.enqueue(uint8array);\n controller.close();\n }\n });\n let decoded = await decodeViaTurboStream(stream, global);\n let data2 = decoded.value;\n invariant3(\n data2 && route.id in data2,\n \"Unable to decode prerendered data\"\n );\n let result = data2[route.id];\n invariant3(\"data\" in result, \"Unable to process prerendered data\");\n return result.data;\n }\n let val = await callRouteHandler(route.module.loader, args);\n return val;\n } : void 0,\n action: route.module.action ? (args) => callRouteHandler(route.module.action, args) : void 0,\n handle: route.module.handle\n };\n return route.index ? {\n index: true,\n ...commonRoute\n } : {\n caseSensitive: route.caseSensitive,\n children: createStaticHandlerDataRoutes(\n manifest,\n future,\n route.id,\n routesByParentId\n ),\n ...commonRoute\n };\n });\n}\n\n// lib/server-runtime/markup.ts\nvar ESCAPE_LOOKUP3 = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX3 = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml2(html) {\n return html.replace(ESCAPE_REGEX3, (match) => ESCAPE_LOOKUP3[match]);\n}\n\n// lib/server-runtime/serverHandoff.ts\nfunction createServerHandoffString(serverHandoff) {\n return escapeHtml2(JSON.stringify(serverHandoff));\n}\n\n// lib/server-runtime/dev.ts\nvar globalDevServerHooksKey = \"__reactRouterDevServerHooks\";\nfunction setDevServerHooks(devServerHooks) {\n globalThis[globalDevServerHooksKey] = devServerHooks;\n}\nfunction getDevServerHooks() {\n return globalThis[globalDevServerHooksKey];\n}\n\n// lib/server-runtime/single-fetch.ts\nimport { encode } from \"turbo-stream\";\n\n// lib/server-runtime/headers.ts\nimport { splitCookiesString } from \"set-cookie-parser\";\nfunction getDocumentHeaders(build, context) {\n let boundaryIdx = context.errors ? context.matches.findIndex((m) => context.errors[m.route.id]) : -1;\n let matches = boundaryIdx >= 0 ? context.matches.slice(0, boundaryIdx + 1) : context.matches;\n let errorHeaders;\n if (boundaryIdx >= 0) {\n let { actionHeaders, actionData, loaderHeaders, loaderData } = context;\n context.matches.slice(boundaryIdx).some((match) => {\n let id = match.route.id;\n if (actionHeaders[id] && (!actionData || !actionData.hasOwnProperty(id))) {\n errorHeaders = actionHeaders[id];\n } else if (loaderHeaders[id] && !loaderData.hasOwnProperty(id)) {\n errorHeaders = loaderHeaders[id];\n }\n return errorHeaders != null;\n });\n }\n return matches.reduce((parentHeaders, match, idx) => {\n let { id } = match.route;\n let route = build.routes[id];\n invariant3(route, `Route with id \"${id}\" not found in build`);\n let routeModule = route.module;\n let loaderHeaders = context.loaderHeaders[id] || new Headers();\n let actionHeaders = context.actionHeaders[id] || new Headers();\n let includeErrorHeaders = errorHeaders != null && idx === matches.length - 1;\n let includeErrorCookies = includeErrorHeaders && errorHeaders !== loaderHeaders && errorHeaders !== actionHeaders;\n if (routeModule.headers == null) {\n let headers2 = new Headers(parentHeaders);\n if (includeErrorCookies) {\n prependCookies(errorHeaders, headers2);\n }\n prependCookies(actionHeaders, headers2);\n prependCookies(loaderHeaders, headers2);\n return headers2;\n }\n let headers = new Headers(\n routeModule.headers ? typeof routeModule.headers === \"function\" ? routeModule.headers({\n loaderHeaders,\n parentHeaders,\n actionHeaders,\n errorHeaders: includeErrorHeaders ? errorHeaders : void 0\n }) : routeModule.headers : void 0\n );\n if (includeErrorCookies) {\n prependCookies(errorHeaders, headers);\n }\n prependCookies(actionHeaders, headers);\n prependCookies(loaderHeaders, headers);\n prependCookies(parentHeaders, headers);\n return headers;\n }, new Headers());\n}\nfunction prependCookies(parentHeaders, childHeaders) {\n let parentSetCookieString = parentHeaders.get(\"Set-Cookie\");\n if (parentSetCookieString) {\n let cookies = splitCookiesString(parentSetCookieString);\n cookies.forEach((cookie) => {\n childHeaders.append(\"Set-Cookie\", cookie);\n });\n }\n}\n\n// lib/server-runtime/single-fetch.ts\nvar SINGLE_FETCH_REDIRECT_STATUS = 202;\nfunction getSingleFetchDataStrategy2({\n isActionDataRequest,\n loadRouteIds\n} = {}) {\n return async ({ request, matches }) => {\n if (isActionDataRequest && request.method === \"GET\") {\n return {};\n }\n let matchesToLoad = loadRouteIds ? matches.filter((m) => loadRouteIds.includes(m.route.id)) : matches;\n let results = await Promise.all(\n matchesToLoad.map((match) => match.resolve())\n );\n return results.reduce(\n (acc, result, i) => Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n };\n}\nasync function singleFetchAction(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n try {\n let handlerRequest = new Request(handlerUrl, {\n method: request.method,\n body: request.body,\n headers: request.headers,\n signal: request.signal,\n ...request.body ? { duplex: \"half\" } : void 0\n });\n let result = await staticHandler.query(handlerRequest, {\n requestContext: loadContext,\n skipLoaderErrorBubbling: true,\n dataStrategy: getSingleFetchDataStrategy2({\n isActionDataRequest: true\n })\n });\n if (isResponse(result)) {\n return {\n result: getSingleFetchRedirect(\n result.status,\n result.headers,\n build.basename\n ),\n headers: result.headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n let context = result;\n let headers = getDocumentHeaders(build, context);\n if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n return {\n result: getSingleFetchRedirect(\n context.statusCode,\n headers,\n build.basename\n ),\n headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n if (context.errors) {\n Object.values(context.errors).forEach((err) => {\n if (!isRouteErrorResponse(err) || err.error) {\n handleError(err);\n }\n });\n context.errors = sanitizeErrors(context.errors, serverMode);\n }\n let singleFetchResult;\n if (context.errors) {\n singleFetchResult = { error: Object.values(context.errors)[0] };\n } else {\n singleFetchResult = { data: Object.values(context.actionData || {})[0] };\n }\n return {\n result: singleFetchResult,\n headers,\n status: context.statusCode\n };\n } catch (error) {\n handleError(error);\n return {\n result: { error },\n headers: new Headers(),\n status: 500\n };\n }\n}\nasync function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n try {\n let handlerRequest = new Request(handlerUrl, {\n headers: request.headers,\n signal: request.signal\n });\n let loadRouteIds = new URL(request.url).searchParams.get(\"_routes\")?.split(\",\") || void 0;\n let result = await staticHandler.query(handlerRequest, {\n requestContext: loadContext,\n skipLoaderErrorBubbling: true,\n dataStrategy: getSingleFetchDataStrategy2({\n loadRouteIds\n })\n });\n if (isResponse(result)) {\n return {\n result: {\n [SingleFetchRedirectSymbol]: getSingleFetchRedirect(\n result.status,\n result.headers,\n build.basename\n )\n },\n headers: result.headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n let context = result;\n let headers = getDocumentHeaders(build, context);\n if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n return {\n result: {\n [SingleFetchRedirectSymbol]: getSingleFetchRedirect(\n context.statusCode,\n headers,\n build.basename\n )\n },\n headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n if (context.errors) {\n Object.values(context.errors).forEach((err) => {\n if (!isRouteErrorResponse(err) || err.error) {\n handleError(err);\n }\n });\n context.errors = sanitizeErrors(context.errors, serverMode);\n }\n let results = {};\n let loadedMatches = loadRouteIds ? context.matches.filter(\n (m) => m.route.loader && loadRouteIds.includes(m.route.id)\n ) : context.matches;\n loadedMatches.forEach((m) => {\n let { id } = m.route;\n if (context.errors && context.errors.hasOwnProperty(id)) {\n results[id] = { error: context.errors[id] };\n } else if (context.loaderData.hasOwnProperty(id)) {\n results[id] = { data: context.loaderData[id] };\n }\n });\n return {\n result: results,\n headers,\n status: context.statusCode\n };\n } catch (error) {\n handleError(error);\n return {\n result: { root: { error } },\n headers: new Headers(),\n status: 500\n };\n }\n}\nfunction getSingleFetchRedirect(status, headers, basename) {\n let redirect2 = headers.get(\"Location\");\n if (basename) {\n redirect2 = stripBasename(redirect2, basename) || redirect2;\n }\n return {\n redirect: redirect2,\n status,\n revalidate: (\n // Technically X-Remix-Revalidate isn't needed here - that was an implementation\n // detail of ?_data requests as our way to tell the front end to revalidate when\n // we didn't have a response body to include that information in.\n // With single fetch, we tell the front end via this revalidate boolean field.\n // However, we're respecting it for now because it may be something folks have\n // used in their own responses\n // TODO(v3): Consider removing or making this official public API\n headers.has(\"X-Remix-Revalidate\") || headers.has(\"Set-Cookie\")\n ),\n reload: headers.has(\"X-Remix-Reload-Document\"),\n replace: headers.has(\"X-Remix-Replace\")\n };\n}\nfunction encodeViaTurboStream(data2, requestSignal, streamTimeout, serverMode) {\n let controller = new AbortController();\n let timeoutId = setTimeout(\n () => controller.abort(new Error(\"Server Timeout\")),\n typeof streamTimeout === \"number\" ? streamTimeout : 4950\n );\n requestSignal.addEventListener(\"abort\", () => clearTimeout(timeoutId));\n return encode(data2, {\n signal: controller.signal,\n plugins: [\n (value) => {\n if (value instanceof Error) {\n let { name, message, stack } = serverMode === \"production\" /* Production */ ? sanitizeError(value, serverMode) : value;\n return [\"SanitizedError\", name, message, stack];\n }\n if (value instanceof ErrorResponseImpl) {\n let { data: data3, status, statusText } = value;\n return [\"ErrorResponse\", data3, status, statusText];\n }\n if (value && typeof value === \"object\" && SingleFetchRedirectSymbol in value) {\n return [\"SingleFetchRedirect\", value[SingleFetchRedirectSymbol]];\n }\n }\n ],\n postPlugins: [\n (value) => {\n if (!value) return;\n if (typeof value !== \"object\") return;\n return [\n \"SingleFetchClassInstance\",\n Object.fromEntries(Object.entries(value))\n ];\n },\n () => [\"SingleFetchFallback\"]\n ]\n });\n}\n\n// lib/server-runtime/server.ts\nfunction derive(build, mode) {\n let routes = createRoutes(build.routes);\n let dataRoutes = createStaticHandlerDataRoutes(build.routes, build.future);\n let serverMode = isServerMode(mode) ? mode : \"production\" /* Production */;\n let staticHandler = createStaticHandler(dataRoutes, {\n basename: build.basename\n });\n let errorHandler = build.entry.module.handleError || ((error, { request }) => {\n if (serverMode !== \"test\" /* Test */ && !request.signal.aborted) {\n console.error(\n // @ts-expect-error This is \"private\" from users but intended for internal use\n isRouteErrorResponse(error) && error.error ? error.error : error\n );\n }\n });\n return {\n routes,\n dataRoutes,\n serverMode,\n staticHandler,\n errorHandler\n };\n}\nvar createRequestHandler = (build, mode) => {\n let _build;\n let routes;\n let serverMode;\n let staticHandler;\n let errorHandler;\n return async function requestHandler(request, loadContext = {}) {\n _build = typeof build === \"function\" ? await build() : build;\n if (typeof build === \"function\") {\n let derived = derive(_build, mode);\n routes = derived.routes;\n serverMode = derived.serverMode;\n staticHandler = derived.staticHandler;\n errorHandler = derived.errorHandler;\n } else if (!routes || !serverMode || !staticHandler || !errorHandler) {\n let derived = derive(_build, mode);\n routes = derived.routes;\n serverMode = derived.serverMode;\n staticHandler = derived.staticHandler;\n errorHandler = derived.errorHandler;\n }\n let url = new URL(request.url);\n let params = {};\n let handleError = (error) => {\n if (mode === \"development\" /* Development */) {\n getDevServerHooks()?.processRequestError?.(error);\n }\n errorHandler(error, {\n context: loadContext,\n params,\n request\n });\n };\n let manifestUrl = `${_build.basename ?? \"/\"}/__manifest`.replace(\n /\\/+/g,\n \"/\"\n );\n if (url.pathname === manifestUrl) {\n try {\n let res = await handleManifestRequest(_build, routes, url);\n return res;\n } catch (e) {\n handleError(e);\n return new Response(\"Unknown Server Error\", { status: 500 });\n }\n }\n let matches = matchServerRoutes(routes, url.pathname, _build.basename);\n if (matches && matches.length > 0) {\n Object.assign(params, matches[0].params);\n }\n let response;\n if (url.pathname.endsWith(\".data\")) {\n let handlerUrl = new URL(request.url);\n handlerUrl.pathname = handlerUrl.pathname.replace(/\\.data$/, \"\").replace(/^\\/_root$/, \"/\");\n let singleFetchMatches = matchServerRoutes(\n routes,\n handlerUrl.pathname,\n _build.basename\n );\n response = await handleSingleFetchRequest(\n serverMode,\n _build,\n staticHandler,\n request,\n handlerUrl,\n loadContext,\n handleError\n );\n if (_build.entry.module.handleDataRequest) {\n response = await _build.entry.module.handleDataRequest(response, {\n context: loadContext,\n params: singleFetchMatches ? singleFetchMatches[0].params : {},\n request\n });\n if (isRedirectResponse(response)) {\n let result = getSingleFetchRedirect(\n response.status,\n response.headers,\n _build.basename\n );\n if (request.method === \"GET\") {\n result = {\n [SingleFetchRedirectSymbol]: result\n };\n }\n let headers = new Headers(response.headers);\n headers.set(\"Content-Type\", \"text/x-script\");\n return new Response(\n encodeViaTurboStream(\n result,\n request.signal,\n _build.entry.module.streamTimeout,\n serverMode\n ),\n {\n status: SINGLE_FETCH_REDIRECT_STATUS,\n headers\n }\n );\n }\n }\n } else if (matches && matches[matches.length - 1].route.module.default == null && matches[matches.length - 1].route.module.ErrorBoundary == null) {\n response = await handleResourceRequest(\n serverMode,\n staticHandler,\n matches.slice(-1)[0].route.id,\n request,\n loadContext,\n handleError\n );\n } else {\n let criticalCss = mode === \"development\" /* Development */ ? await getDevServerHooks()?.getCriticalCss?.(_build, url.pathname) : void 0;\n response = await handleDocumentRequest(\n serverMode,\n _build,\n staticHandler,\n request,\n loadContext,\n handleError,\n criticalCss\n );\n }\n if (request.method === \"HEAD\") {\n return new Response(null, {\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n });\n }\n return response;\n };\n};\nasync function handleManifestRequest(build, routes, url) {\n let patches = {};\n if (url.searchParams.has(\"p\")) {\n for (let path of url.searchParams.getAll(\"p\")) {\n let matches = matchServerRoutes(routes, path, build.basename);\n if (matches) {\n for (let match of matches) {\n let routeId = match.route.id;\n let route = build.assets.routes[routeId];\n if (route) {\n patches[routeId] = route;\n }\n }\n }\n }\n return Response.json(patches, {\n headers: {\n \"Cache-Control\": \"public, max-age=31536000, immutable\"\n }\n });\n }\n return new Response(\"Invalid Request\", { status: 400 });\n}\nasync function handleSingleFetchRequest(serverMode, build, staticHandler, request, handlerUrl, loadContext, handleError) {\n let { result, headers, status } = request.method !== \"GET\" ? await singleFetchAction(\n build,\n serverMode,\n staticHandler,\n request,\n handlerUrl,\n loadContext,\n handleError\n ) : await singleFetchLoaders(\n build,\n serverMode,\n staticHandler,\n request,\n handlerUrl,\n loadContext,\n handleError\n );\n let resultHeaders = new Headers(headers);\n resultHeaders.set(\"X-Remix-Response\", \"yes\");\n if (status === 304) {\n return new Response(null, { status: 304, headers: resultHeaders });\n }\n resultHeaders.set(\"Content-Type\", \"text/x-script\");\n return new Response(\n encodeViaTurboStream(\n result,\n request.signal,\n build.entry.module.streamTimeout,\n serverMode\n ),\n {\n status: status || 200,\n headers: resultHeaders\n }\n );\n}\nasync function handleDocumentRequest(serverMode, build, staticHandler, request, loadContext, handleError, criticalCss) {\n let context;\n try {\n context = await staticHandler.query(request, {\n requestContext: loadContext\n });\n } catch (error) {\n handleError(error);\n return new Response(null, { status: 500 });\n }\n if (isResponse(context)) {\n return context;\n }\n let headers = getDocumentHeaders(build, context);\n if (context.statusCode === 304) {\n return new Response(null, { status: 304, headers });\n }\n if (context.errors) {\n Object.values(context.errors).forEach((err) => {\n if (!isRouteErrorResponse(err) || err.error) {\n handleError(err);\n }\n });\n context.errors = sanitizeErrors(context.errors, serverMode);\n }\n let state = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors2(context.errors, serverMode)\n };\n let entryContext = {\n manifest: build.assets,\n routeModules: createEntryRouteModules(build.routes),\n staticHandlerContext: context,\n criticalCss,\n serverHandoffString: createServerHandoffString({\n basename: build.basename,\n criticalCss,\n future: build.future,\n isSpaMode: build.isSpaMode\n }),\n serverHandoffStream: encodeViaTurboStream(\n state,\n request.signal,\n build.entry.module.streamTimeout,\n serverMode\n ),\n renderMeta: {},\n future: build.future,\n isSpaMode: build.isSpaMode,\n serializeError: (err) => serializeError(err, serverMode)\n };\n let handleDocumentRequestFunction = build.entry.module.default;\n try {\n return await handleDocumentRequestFunction(\n request,\n context.statusCode,\n headers,\n entryContext,\n loadContext\n );\n } catch (error) {\n handleError(error);\n let errorForSecondRender = error;\n if (isResponse(error)) {\n try {\n let data2 = await unwrapResponse(error);\n errorForSecondRender = new ErrorResponseImpl(\n error.status,\n error.statusText,\n data2\n );\n } catch (e) {\n }\n }\n context = getStaticContextFromError(\n staticHandler.dataRoutes,\n context,\n errorForSecondRender\n );\n if (context.errors) {\n context.errors = sanitizeErrors(context.errors, serverMode);\n }\n let state2 = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors2(context.errors, serverMode)\n };\n entryContext = {\n ...entryContext,\n staticHandlerContext: context,\n serverHandoffString: createServerHandoffString({\n basename: build.basename,\n future: build.future,\n isSpaMode: build.isSpaMode\n }),\n serverHandoffStream: encodeViaTurboStream(\n state2,\n request.signal,\n build.entry.module.streamTimeout,\n serverMode\n ),\n renderMeta: {}\n };\n try {\n return await handleDocumentRequestFunction(\n request,\n context.statusCode,\n headers,\n entryContext,\n loadContext\n );\n } catch (error2) {\n handleError(error2);\n return returnLastResortErrorResponse(error2, serverMode);\n }\n }\n}\nasync function handleResourceRequest(serverMode, staticHandler, routeId, request, loadContext, handleError) {\n try {\n let response = await staticHandler.queryRoute(request, {\n routeId,\n requestContext: loadContext\n });\n invariant3(\n isResponse(response),\n \"Expected a Response to be returned from resource route handler\"\n );\n return response;\n } catch (error) {\n if (isResponse(error)) {\n error.headers.set(\"X-Remix-Catch\", \"yes\");\n return error;\n }\n if (isRouteErrorResponse(error)) {\n if (error) {\n handleError(error);\n }\n return errorResponseToJson(error, serverMode);\n }\n handleError(error);\n return returnLastResortErrorResponse(error, serverMode);\n }\n}\nfunction errorResponseToJson(errorResponse, serverMode) {\n return Response.json(\n serializeError(\n // @ts-expect-error This is \"private\" from users but intended for internal use\n errorResponse.error || new Error(\"Unexpected Server Error\"),\n serverMode\n ),\n {\n status: errorResponse.status,\n statusText: errorResponse.statusText,\n headers: {\n \"X-Remix-Error\": \"yes\"\n }\n }\n );\n}\nfunction returnLastResortErrorResponse(error, serverMode) {\n let message = \"Unexpected Server Error\";\n if (serverMode !== \"production\" /* Production */) {\n message += `\n\n${String(error)}`;\n }\n return new Response(message, {\n status: 500,\n headers: {\n \"Content-Type\": \"text/plain\"\n }\n });\n}\nfunction unwrapResponse(response) {\n let contentType = response.headers.get(\"Content-Type\");\n return contentType && /\\bapplication\\/json\\b/.test(contentType) ? response.body == null ? null : response.json() : response.text();\n}\n\n// lib/server-runtime/sessions.ts\nfunction flash(name) {\n return `__flash_${name}__`;\n}\nvar createSession = (initialData = {}, id = \"\") => {\n let map = new Map(Object.entries(initialData));\n return {\n get id() {\n return id;\n },\n get data() {\n return Object.fromEntries(map);\n },\n has(name) {\n return map.has(name) || map.has(flash(name));\n },\n get(name) {\n if (map.has(name)) return map.get(name);\n let flashName = flash(name);\n if (map.has(flashName)) {\n let value = map.get(flashName);\n map.delete(flashName);\n return value;\n }\n return void 0;\n },\n set(name, value) {\n map.set(name, value);\n },\n flash(name, value) {\n map.set(flash(name), value);\n },\n unset(name) {\n map.delete(name);\n }\n };\n};\nvar isSession = (object) => {\n return object != null && typeof object.id === \"string\" && typeof object.data !== \"undefined\" && typeof object.has === \"function\" && typeof object.get === \"function\" && typeof object.set === \"function\" && typeof object.flash === \"function\" && typeof object.unset === \"function\";\n};\nfunction createSessionStorage({\n cookie: cookieArg,\n createData,\n readData,\n updateData,\n deleteData\n}) {\n let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || \"__session\", cookieArg);\n warnOnceAboutSigningSessionCookie(cookie);\n return {\n async getSession(cookieHeader, options) {\n let id = cookieHeader && await cookie.parse(cookieHeader, options);\n let data2 = id && await readData(id);\n return createSession(data2 || {}, id || \"\");\n },\n async commitSession(session, options) {\n let { id, data: data2 } = session;\n let expires = options?.maxAge != null ? new Date(Date.now() + options.maxAge * 1e3) : options?.expires != null ? options.expires : cookie.expires;\n if (id) {\n await updateData(id, data2, expires);\n } else {\n id = await createData(data2, expires);\n }\n return cookie.serialize(id, options);\n },\n async destroySession(session, options) {\n await deleteData(session.id);\n return cookie.serialize(\"\", {\n ...options,\n maxAge: void 0,\n expires: /* @__PURE__ */ new Date(0)\n });\n }\n };\n}\nfunction warnOnceAboutSigningSessionCookie(cookie) {\n warnOnce(\n cookie.isSigned,\n `The \"${cookie.name}\" cookie is not signed, but session cookies should be signed to prevent tampering on the client before they are sent back to the server. See https://remix.run/utils/cookies#signing-cookies for more information.`\n );\n}\n\n// lib/server-runtime/sessions/cookieStorage.ts\nfunction createCookieSessionStorage({ cookie: cookieArg } = {}) {\n let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || \"__session\", cookieArg);\n warnOnceAboutSigningSessionCookie(cookie);\n return {\n async getSession(cookieHeader, options) {\n return createSession(\n cookieHeader && await cookie.parse(cookieHeader, options) || {}\n );\n },\n async commitSession(session, options) {\n let serializedCookie = await cookie.serialize(session.data, options);\n if (serializedCookie.length > 4096) {\n throw new Error(\n \"Cookie length will exceed browser maximum. Length: \" + serializedCookie.length\n );\n }\n return serializedCookie;\n },\n async destroySession(_session, options) {\n return cookie.serialize(\"\", {\n ...options,\n maxAge: void 0,\n expires: /* @__PURE__ */ new Date(0)\n });\n }\n };\n}\n\n// lib/server-runtime/sessions/memoryStorage.ts\nfunction createMemorySessionStorage({ cookie } = {}) {\n let map = /* @__PURE__ */ new Map();\n return createSessionStorage({\n cookie,\n async createData(data2, expires) {\n let id = Math.random().toString(36).substring(2, 10);\n map.set(id, { data: data2, expires });\n return id;\n },\n async readData(id) {\n if (map.has(id)) {\n let { data: data2, expires } = map.get(id);\n if (!expires || expires > /* @__PURE__ */ new Date()) {\n return data2;\n }\n if (expires) map.delete(id);\n }\n return null;\n },\n async updateData(id, data2, expires) {\n map.set(id, { data: data2, expires });\n },\n async deleteData(id) {\n map.delete(id);\n }\n });\n}\n\n// lib/dom/ssr/errors.ts\nfunction deserializeErrors2(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponseImpl(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n let error = new ErrorConstructor(val.message);\n error.stack = val.stack;\n serialized[key] = error;\n } catch (e) {\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n error.stack = val.stack;\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\nexport {\n Action,\n createBrowserHistory,\n invariant,\n createPath,\n parsePath,\n matchRoutes,\n generatePath,\n matchPath,\n resolvePath,\n data,\n redirect,\n redirectDocument,\n replace,\n ErrorResponseImpl,\n isRouteErrorResponse,\n IDLE_NAVIGATION,\n IDLE_FETCHER,\n IDLE_BLOCKER,\n createRouter,\n DataRouterContext,\n DataRouterStateContext,\n ViewTransitionContext,\n FetchersContext,\n NavigationContext,\n LocationContext,\n RouteContext,\n useHref,\n useInRouterContext,\n useLocation,\n useNavigationType,\n useMatch,\n useNavigate,\n useOutletContext,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useNavigation,\n useRevalidator,\n useMatches,\n useLoaderData,\n useRouteLoaderData,\n useActionData,\n useRouteError,\n useAsyncValue,\n useAsyncError,\n useBlocker,\n mapRouteProperties,\n createMemoryRouter,\n RouterProvider,\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n Await,\n createRoutesFromChildren,\n createRoutesFromElements,\n renderMatches,\n createSearchParams,\n SingleFetchRedirectSymbol,\n getSingleFetchDataStrategy,\n decodeViaTurboStream,\n RemixErrorBoundary,\n createClientRoutesWithHMRRevalidationOptOut,\n createClientRoutes,\n shouldHydrateRouteLoader,\n getPatchRoutesOnNavigationFunction,\n useFogOFWarDiscovery,\n FrameworkContext,\n Links,\n PrefetchPageLinks,\n Meta,\n Scripts,\n createBrowserRouter,\n createHashRouter,\n BrowserRouter,\n HashRouter,\n HistoryRouter,\n Link,\n NavLink,\n Form,\n ScrollRestoration,\n useLinkClickHandler,\n useSearchParams,\n useSubmit,\n useFormAction,\n useFetcher,\n useFetchers,\n useScrollRestoration,\n useBeforeUnload,\n usePrompt,\n useViewTransitionState,\n StaticRouter,\n StaticRouterProvider,\n createStaticHandler2 as createStaticHandler,\n createStaticRouter,\n ServerRouter,\n createRoutesStub,\n createCookie,\n isCookie,\n ServerMode,\n setDevServerHooks,\n createRequestHandler,\n createSession,\n isSession,\n createSessionStorage,\n createCookieSessionStorage,\n createMemorySessionStorage,\n deserializeErrors2 as deserializeErrors\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var LogType;\n(function (LogType) {\n LogType[\"DEBUG\"] = \"DEBUG\";\n LogType[\"ERROR\"] = \"ERROR\";\n LogType[\"INFO\"] = \"INFO\";\n LogType[\"WARN\"] = \"WARN\";\n LogType[\"VERBOSE\"] = \"VERBOSE\";\n LogType[\"NONE\"] = \"NONE\";\n})(LogType || (LogType = {}));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AWS_CLOUDWATCH_CATEGORY } from '../constants';\nimport { LogType } from './types';\nconst LOG_LEVELS = {\n VERBOSE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n NONE: 6,\n};\n/**\n * Write logs\n * @class Logger\n */\nexport class ConsoleLogger {\n /**\n * @constructor\n * @param {string} name - Name of the logger\n */\n constructor(name, level = LogType.WARN) {\n this.name = name;\n this.level = level;\n this._pluggables = [];\n }\n _padding(n) {\n return n < 10 ? '0' + n : '' + n;\n }\n _ts() {\n const dt = new Date();\n return ([this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(':') +\n '.' +\n dt.getMilliseconds());\n }\n configure(config) {\n if (!config)\n return this._config;\n this._config = config;\n return this._config;\n }\n /**\n * Write log\n * @method\n * @memeberof Logger\n * @param {LogType|string} type - log type, default INFO\n * @param {string|object} msg - Logging message or object\n */\n _log(type, ...msg) {\n let loggerLevelName = this.level;\n if (ConsoleLogger.LOG_LEVEL) {\n loggerLevelName = ConsoleLogger.LOG_LEVEL;\n }\n if (typeof window !== 'undefined' && window.LOG_LEVEL) {\n loggerLevelName = window.LOG_LEVEL;\n }\n const loggerLevel = LOG_LEVELS[loggerLevelName];\n const typeLevel = LOG_LEVELS[type];\n if (!(typeLevel >= loggerLevel)) {\n // Do nothing if type is not greater than or equal to logger level (handle undefined)\n return;\n }\n let log = console.log.bind(console);\n if (type === LogType.ERROR && console.error) {\n log = console.error.bind(console);\n }\n if (type === LogType.WARN && console.warn) {\n log = console.warn.bind(console);\n }\n if (ConsoleLogger.BIND_ALL_LOG_LEVELS) {\n if (type === LogType.INFO && console.info) {\n log = console.info.bind(console);\n }\n if (type === LogType.DEBUG && console.debug) {\n log = console.debug.bind(console);\n }\n }\n const prefix = `[${type}] ${this._ts()} ${this.name}`;\n let message = '';\n if (msg.length === 1 && typeof msg[0] === 'string') {\n message = `${prefix} - ${msg[0]}`;\n log(message);\n }\n else if (msg.length === 1) {\n message = `${prefix} ${msg[0]}`;\n log(prefix, msg[0]);\n }\n else if (typeof msg[0] === 'string') {\n let obj = msg.slice(1);\n if (obj.length === 1) {\n obj = obj[0];\n }\n message = `${prefix} - ${msg[0]} ${obj}`;\n log(`${prefix} - ${msg[0]}`, obj);\n }\n else {\n message = `${prefix} ${msg}`;\n log(prefix, msg);\n }\n for (const plugin of this._pluggables) {\n const logEvent = { message, timestamp: Date.now() };\n plugin.pushLogs([logEvent]);\n }\n }\n /**\n * Write General log. Default to INFO\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n log(...msg) {\n this._log(LogType.INFO, ...msg);\n }\n /**\n * Write INFO log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n info(...msg) {\n this._log(LogType.INFO, ...msg);\n }\n /**\n * Write WARN log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n warn(...msg) {\n this._log(LogType.WARN, ...msg);\n }\n /**\n * Write ERROR log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n error(...msg) {\n this._log(LogType.ERROR, ...msg);\n }\n /**\n * Write DEBUG log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n debug(...msg) {\n this._log(LogType.DEBUG, ...msg);\n }\n /**\n * Write VERBOSE log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n verbose(...msg) {\n this._log(LogType.VERBOSE, ...msg);\n }\n addPluggable(pluggable) {\n if (pluggable && pluggable.getCategoryName() === AWS_CLOUDWATCH_CATEGORY) {\n this._pluggables.push(pluggable);\n pluggable.configure(this._config);\n }\n }\n listPluggables() {\n return this._pluggables;\n }\n}\nConsoleLogger.LOG_LEVEL = null;\nConsoleLogger.BIND_ALL_LOG_LEVELS = false;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Logging constants\nexport const AWS_CLOUDWATCH_CATEGORY = 'Logging';\nexport const USER_AGENT_HEADER = 'x-amz-user-agent';\n// Error exception code constants\nexport const NO_HUBCALLBACK_PROVIDED_EXCEPTION = 'NoHubcallbackProvidedException';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport class AmplifyError extends Error {\n /**\n * Constructs an AmplifyError.\n *\n * @param message text that describes the main problem.\n * @param underlyingError the underlying cause of the error.\n * @param recoverySuggestion suggestion to recover from the error.\n *\n */\n constructor({ message, name, recoverySuggestion, underlyingError, }) {\n super(message);\n this.name = name;\n this.underlyingError = underlyingError;\n this.recoverySuggestion = recoverySuggestion;\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = AmplifyError;\n Object.setPrototypeOf(this, AmplifyError.prototype);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '../Logger';\nimport { NO_HUBCALLBACK_PROVIDED_EXCEPTION } from '../constants';\nimport { AmplifyError } from '../errors';\nexport const AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined'\n ? Symbol('amplify_default')\n : '@@amplify_default');\nconst logger = new ConsoleLogger('Hub');\nexport class HubClass {\n constructor(name) {\n this.listeners = new Map();\n this.protectedChannels = [\n 'core',\n 'auth',\n 'api',\n 'analytics',\n 'interactions',\n 'pubsub',\n 'storage',\n 'ui',\n 'xr',\n ];\n this.name = name;\n }\n /**\n * Used internally to remove a Hub listener.\n *\n * @remarks\n * This private method is for internal use only. Instead of calling Hub.remove, call the result of Hub.listen.\n */\n _remove(channel, listener) {\n const holder = this.listeners.get(channel);\n if (!holder) {\n logger.warn(`No listeners for ${channel}`);\n return;\n }\n this.listeners.set(channel, [\n ...holder.filter(({ callback }) => callback !== listener),\n ]);\n }\n dispatch(channel, payload, source, ampSymbol) {\n if (typeof channel === 'string' &&\n this.protectedChannels.indexOf(channel) > -1) {\n const hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n if (!hasAccess) {\n logger.warn(`WARNING: ${channel} is protected and dispatching on it can have unintended consequences`);\n }\n }\n const capsule = {\n channel,\n payload: { ...payload },\n source,\n patternInfo: [],\n };\n try {\n this._toListeners(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n }\n listen(channel, callback, listenerName = 'noname') {\n let cb;\n if (typeof callback !== 'function') {\n throw new AmplifyError({\n name: NO_HUBCALLBACK_PROVIDED_EXCEPTION,\n message: 'No callback supplied to Hub',\n });\n }\n else {\n // Needs to be casted as a more generic type\n cb = callback;\n }\n let holder = this.listeners.get(channel);\n if (!holder) {\n holder = [];\n this.listeners.set(channel, holder);\n }\n holder.push({\n name: listenerName,\n callback: cb,\n });\n return () => {\n this._remove(channel, cb);\n };\n }\n _toListeners(capsule) {\n const { channel, payload } = capsule;\n const holder = this.listeners.get(channel);\n if (holder) {\n holder.forEach(listener => {\n logger.debug(`Dispatching to ${channel} with `, payload);\n try {\n listener.callback(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n });\n }\n }\n}\n/* We export a __default__ instance of HubClass to use it as a\npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events. */\nexport const Hub = new HubClass('__default__');\n/**\n * @internal\n *\n * Internal hub used for core Amplify functionality. Not intended for use outside of Amplify.\n *\n */\nexport const HubInternal = new HubClass('internal-hub');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const deepFreeze = (object) => {\n const propNames = Reflect.ownKeys(object);\n for (const name of propNames) {\n const value = object[name];\n if ((value && typeof value === 'object') || typeof value === 'function') {\n deepFreeze(value);\n }\n }\n return Object.freeze(object);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const ADD_OAUTH_LISTENER = Symbol('oauth-listener');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from './Logger';\nimport { AmplifyError } from './errors';\nconst logger = new ConsoleLogger('parseAWSExports');\nconst authTypeMapping = {\n API_KEY: 'apiKey',\n AWS_IAM: 'iam',\n AMAZON_COGNITO_USER_POOLS: 'userPool',\n OPENID_CONNECT: 'oidc',\n NONE: 'none',\n AWS_LAMBDA: 'lambda',\n // `LAMBDA` is an incorrect value that was added during the v6 rewrite.\n // Keeping it as a valid value until v7 to prevent breaking customers who might\n // be relying on it as a workaround.\n // ref: https://github.com/aws-amplify/amplify-js/pull/12922\n // TODO: @v7 remove next line\n LAMBDA: 'lambda',\n};\n/**\n * Converts the object imported from `aws-exports.js` or `amplifyconfiguration.json` files generated by\n * the Amplify CLI into an object that conforms to the {@link ResourcesConfig}.\n *\n * @param config A configuration object imported from `aws-exports.js` or `amplifyconfiguration.json`.\n *\n * @returns An object that conforms to the {@link ResourcesConfig} .\n */\nexport const parseAWSExports = (config = {}) => {\n if (!Object.prototype.hasOwnProperty.call(config, 'aws_project_region')) {\n throw new AmplifyError({\n name: 'InvalidParameterException',\n message: 'Invalid config parameter.',\n recoverySuggestion: 'Ensure passing the config object imported from `amplifyconfiguration.json`.',\n });\n }\n const { aws_appsync_apiKey, aws_appsync_authenticationType, aws_appsync_graphqlEndpoint, aws_appsync_region, aws_bots_config, aws_cognito_identity_pool_id, aws_cognito_sign_up_verification_method, aws_cognito_mfa_configuration, aws_cognito_mfa_types, aws_cognito_password_protection_settings, aws_cognito_verification_mechanisms, aws_cognito_signup_attributes, aws_cognito_social_providers, aws_cognito_username_attributes, aws_mandatory_sign_in, aws_mobile_analytics_app_id, aws_mobile_analytics_app_region, aws_user_files_s3_bucket, aws_user_files_s3_bucket_region, aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing, aws_user_pools_id, aws_user_pools_web_client_id, geo, oauth, predictions, aws_cloud_logic_custom, Notifications, modelIntrospection, } = config;\n const amplifyConfig = {};\n // Analytics\n if (aws_mobile_analytics_app_id) {\n amplifyConfig.Analytics = {\n Pinpoint: {\n appId: aws_mobile_analytics_app_id,\n region: aws_mobile_analytics_app_region,\n },\n };\n }\n // Notifications\n const { InAppMessaging, Push } = Notifications ?? {};\n if (InAppMessaging?.AWSPinpoint || Push?.AWSPinpoint) {\n if (InAppMessaging?.AWSPinpoint) {\n const { appId, region } = InAppMessaging.AWSPinpoint;\n amplifyConfig.Notifications = {\n InAppMessaging: {\n Pinpoint: {\n appId,\n region,\n },\n },\n };\n }\n if (Push?.AWSPinpoint) {\n const { appId, region } = Push.AWSPinpoint;\n amplifyConfig.Notifications = {\n ...amplifyConfig.Notifications,\n PushNotification: {\n Pinpoint: {\n appId,\n region,\n },\n },\n };\n }\n }\n // Interactions\n if (Array.isArray(aws_bots_config)) {\n amplifyConfig.Interactions = {\n LexV1: Object.fromEntries(aws_bots_config.map(bot => [bot.name, bot])),\n };\n }\n // API\n if (aws_appsync_graphqlEndpoint) {\n const defaultAuthMode = authTypeMapping[aws_appsync_authenticationType];\n if (!defaultAuthMode) {\n logger.debug(`Invalid authentication type ${aws_appsync_authenticationType}. Falling back to IAM.`);\n }\n amplifyConfig.API = {\n GraphQL: {\n endpoint: aws_appsync_graphqlEndpoint,\n apiKey: aws_appsync_apiKey,\n region: aws_appsync_region,\n defaultAuthMode: defaultAuthMode ?? 'iam',\n },\n };\n if (modelIntrospection) {\n amplifyConfig.API.GraphQL.modelIntrospection = modelIntrospection;\n }\n }\n // Auth\n const mfaConfig = aws_cognito_mfa_configuration\n ? {\n status: aws_cognito_mfa_configuration &&\n aws_cognito_mfa_configuration.toLowerCase(),\n totpEnabled: aws_cognito_mfa_types?.includes('TOTP') ?? false,\n smsEnabled: aws_cognito_mfa_types?.includes('SMS') ?? false,\n }\n : undefined;\n const passwordFormatConfig = aws_cognito_password_protection_settings\n ? {\n minLength: aws_cognito_password_protection_settings.passwordPolicyMinLength,\n requireLowercase: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_LOWERCASE') ?? false,\n requireUppercase: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_UPPERCASE') ?? false,\n requireNumbers: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_NUMBERS') ?? false,\n requireSpecialCharacters: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_SYMBOLS') ?? false,\n }\n : undefined;\n const mergedUserAttributes = Array.from(new Set([\n ...(aws_cognito_verification_mechanisms ?? []),\n ...(aws_cognito_signup_attributes ?? []),\n ]));\n const userAttributes = mergedUserAttributes.reduce((attributes, key) => ({\n ...attributes,\n // All user attributes generated by the CLI are required\n [key.toLowerCase()]: { required: true },\n }), {});\n const loginWithEmailEnabled = aws_cognito_username_attributes?.includes('EMAIL') ?? false;\n const loginWithPhoneEnabled = aws_cognito_username_attributes?.includes('PHONE_NUMBER') ?? false;\n if (aws_cognito_identity_pool_id || aws_user_pools_id) {\n amplifyConfig.Auth = {\n Cognito: {\n identityPoolId: aws_cognito_identity_pool_id,\n allowGuestAccess: aws_mandatory_sign_in !== 'enable',\n signUpVerificationMethod: aws_cognito_sign_up_verification_method,\n userAttributes,\n userPoolClientId: aws_user_pools_web_client_id,\n userPoolId: aws_user_pools_id,\n mfa: mfaConfig,\n passwordFormat: passwordFormatConfig,\n loginWith: {\n username: !(loginWithEmailEnabled || loginWithPhoneEnabled),\n email: loginWithEmailEnabled,\n phone: loginWithPhoneEnabled,\n },\n },\n };\n }\n const hasOAuthConfig = oauth ? Object.keys(oauth).length > 0 : false;\n const hasSocialProviderConfig = aws_cognito_social_providers\n ? aws_cognito_social_providers.length > 0\n : false;\n if (amplifyConfig.Auth && hasOAuthConfig) {\n amplifyConfig.Auth.Cognito.loginWith = {\n ...amplifyConfig.Auth.Cognito.loginWith,\n oauth: {\n ...getOAuthConfig(oauth),\n ...(hasSocialProviderConfig && {\n providers: parseSocialProviders(aws_cognito_social_providers),\n }),\n },\n };\n }\n // Storage\n if (aws_user_files_s3_bucket) {\n amplifyConfig.Storage = {\n S3: {\n bucket: aws_user_files_s3_bucket,\n region: aws_user_files_s3_bucket_region,\n dangerouslyConnectToHttpEndpointForTesting: aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing,\n },\n };\n }\n // Geo\n if (geo) {\n const { amazon_location_service } = geo;\n amplifyConfig.Geo = {\n LocationService: {\n maps: amazon_location_service.maps,\n geofenceCollections: amazon_location_service.geofenceCollections,\n searchIndices: amazon_location_service.search_indices,\n region: amazon_location_service.region,\n },\n };\n }\n // REST API\n if (aws_cloud_logic_custom) {\n amplifyConfig.API = {\n ...amplifyConfig.API,\n REST: aws_cloud_logic_custom.reduce((acc, api) => {\n const { name, endpoint, region, service } = api;\n return {\n ...acc,\n [name]: {\n endpoint,\n ...(service ? { service } : undefined),\n ...(region ? { region } : undefined),\n },\n };\n }, {}),\n };\n }\n // Predictions\n if (predictions) {\n // map VoiceId from speechGenerator defaults to voiceId\n const { VoiceId: voiceId } = predictions?.convert?.speechGenerator?.defaults ?? {};\n amplifyConfig.Predictions = voiceId\n ? {\n ...predictions,\n convert: {\n ...predictions.convert,\n speechGenerator: {\n ...predictions.convert.speechGenerator,\n defaults: { voiceId },\n },\n },\n }\n : predictions;\n }\n return amplifyConfig;\n};\nconst getRedirectUrl = (redirectStr) => redirectStr?.split(',') ?? [];\nconst getOAuthConfig = ({ domain, scope, redirectSignIn, redirectSignOut, responseType, }) => ({\n domain,\n scopes: scope,\n redirectSignIn: getRedirectUrl(redirectSignIn),\n redirectSignOut: getRedirectUrl(redirectSignOut),\n responseType,\n});\nconst parseSocialProviders = (aws_cognito_social_providers) => {\n return aws_cognito_social_providers.map((provider) => {\n const updatedProvider = provider.toLowerCase();\n return updatedProvider.charAt(0).toUpperCase() + updatedProvider.slice(1);\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function isAmplifyOutputs(config) {\n // version format initially will be '1' but is expected to be something like x.y where x is major and y minor version\n const { version } = config;\n if (!version) {\n return false;\n }\n return version.startsWith('1');\n}\nfunction parseStorage(amplifyOutputsStorageProperties) {\n if (!amplifyOutputsStorageProperties) {\n return undefined;\n }\n const { bucket_name, aws_region, buckets } = amplifyOutputsStorageProperties;\n return {\n S3: {\n bucket: bucket_name,\n region: aws_region,\n buckets: buckets && createBucketInfoMap(buckets),\n },\n };\n}\nfunction parseAuth(amplifyOutputsAuthProperties) {\n if (!amplifyOutputsAuthProperties) {\n return undefined;\n }\n const { user_pool_id, user_pool_client_id, identity_pool_id, password_policy, mfa_configuration, mfa_methods, unauthenticated_identities_enabled, oauth, username_attributes, standard_required_attributes, groups, } = amplifyOutputsAuthProperties;\n const authConfig = {\n Cognito: {\n userPoolId: user_pool_id,\n userPoolClientId: user_pool_client_id,\n groups,\n },\n };\n if (identity_pool_id) {\n authConfig.Cognito = {\n ...authConfig.Cognito,\n identityPoolId: identity_pool_id,\n };\n }\n if (password_policy) {\n authConfig.Cognito.passwordFormat = {\n requireLowercase: password_policy.require_lowercase,\n requireNumbers: password_policy.require_numbers,\n requireUppercase: password_policy.require_uppercase,\n requireSpecialCharacters: password_policy.require_symbols,\n minLength: password_policy.min_length ?? 6,\n };\n }\n if (mfa_configuration) {\n authConfig.Cognito.mfa = {\n status: getMfaStatus(mfa_configuration),\n smsEnabled: mfa_methods?.includes('SMS'),\n totpEnabled: mfa_methods?.includes('TOTP'),\n };\n }\n if (unauthenticated_identities_enabled) {\n authConfig.Cognito.allowGuestAccess = unauthenticated_identities_enabled;\n }\n if (oauth) {\n authConfig.Cognito.loginWith = {\n oauth: {\n domain: oauth.domain,\n redirectSignIn: oauth.redirect_sign_in_uri,\n redirectSignOut: oauth.redirect_sign_out_uri,\n responseType: oauth.response_type === 'token' ? 'token' : 'code',\n scopes: oauth.scopes,\n providers: getOAuthProviders(oauth.identity_providers),\n },\n };\n }\n if (username_attributes) {\n authConfig.Cognito.loginWith = {\n ...authConfig.Cognito.loginWith,\n email: username_attributes.includes('email'),\n phone: username_attributes.includes('phone_number'),\n // Signing in with a username is not currently supported in Gen2, this should always evaluate to false\n username: username_attributes.includes('username'),\n };\n }\n if (standard_required_attributes) {\n authConfig.Cognito.userAttributes = standard_required_attributes.reduce((acc, curr) => ({ ...acc, [curr]: { required: true } }), {});\n }\n return authConfig;\n}\nexport function parseAnalytics(amplifyOutputsAnalyticsProperties) {\n if (!amplifyOutputsAnalyticsProperties?.amazon_pinpoint) {\n return undefined;\n }\n const { amazon_pinpoint } = amplifyOutputsAnalyticsProperties;\n return {\n Pinpoint: {\n appId: amazon_pinpoint.app_id,\n region: amazon_pinpoint.aws_region,\n },\n };\n}\nfunction parseGeo(amplifyOutputsAnalyticsProperties) {\n if (!amplifyOutputsAnalyticsProperties) {\n return undefined;\n }\n const { aws_region, geofence_collections, maps, search_indices } = amplifyOutputsAnalyticsProperties;\n return {\n LocationService: {\n region: aws_region,\n searchIndices: search_indices,\n geofenceCollections: geofence_collections,\n maps,\n },\n };\n}\nfunction parseData(amplifyOutputsDataProperties) {\n if (!amplifyOutputsDataProperties) {\n return undefined;\n }\n const { aws_region, default_authorization_type, url, api_key, model_introspection, } = amplifyOutputsDataProperties;\n const GraphQL = {\n endpoint: url,\n defaultAuthMode: getGraphQLAuthMode(default_authorization_type),\n region: aws_region,\n apiKey: api_key,\n modelIntrospection: model_introspection,\n };\n return {\n GraphQL,\n };\n}\nfunction parseCustom(amplifyOutputsCustomProperties) {\n if (!amplifyOutputsCustomProperties?.events) {\n return undefined;\n }\n const { url, aws_region, api_key, default_authorization_type } = amplifyOutputsCustomProperties.events;\n const Events = {\n endpoint: url,\n defaultAuthMode: getGraphQLAuthMode(default_authorization_type),\n region: aws_region,\n apiKey: api_key,\n };\n return {\n Events,\n };\n}\nfunction parseNotifications(amplifyOutputsNotificationsProperties) {\n if (!amplifyOutputsNotificationsProperties) {\n return undefined;\n }\n const { aws_region, channels, amazon_pinpoint_app_id } = amplifyOutputsNotificationsProperties;\n const hasInAppMessaging = channels.includes('IN_APP_MESSAGING');\n const hasPushNotification = channels.includes('APNS') || channels.includes('FCM');\n if (!(hasInAppMessaging || hasPushNotification)) {\n return undefined;\n }\n // At this point, we know the Amplify outputs contains at least one supported channel\n const notificationsConfig = {};\n if (hasInAppMessaging) {\n notificationsConfig.InAppMessaging = {\n Pinpoint: {\n appId: amazon_pinpoint_app_id,\n region: aws_region,\n },\n };\n }\n if (hasPushNotification) {\n notificationsConfig.PushNotification = {\n Pinpoint: {\n appId: amazon_pinpoint_app_id,\n region: aws_region,\n },\n };\n }\n return notificationsConfig;\n}\nexport function parseAmplifyOutputs(amplifyOutputs) {\n const resourcesConfig = {};\n if (amplifyOutputs.storage) {\n resourcesConfig.Storage = parseStorage(amplifyOutputs.storage);\n }\n if (amplifyOutputs.auth) {\n resourcesConfig.Auth = parseAuth(amplifyOutputs.auth);\n }\n if (amplifyOutputs.analytics) {\n resourcesConfig.Analytics = parseAnalytics(amplifyOutputs.analytics);\n }\n if (amplifyOutputs.geo) {\n resourcesConfig.Geo = parseGeo(amplifyOutputs.geo);\n }\n if (amplifyOutputs.data) {\n resourcesConfig.API = parseData(amplifyOutputs.data);\n }\n if (amplifyOutputs.custom) {\n const customConfig = parseCustom(amplifyOutputs.custom);\n if (customConfig && 'Events' in customConfig) {\n resourcesConfig.API = { ...resourcesConfig.API, ...customConfig };\n }\n }\n if (amplifyOutputs.notifications) {\n resourcesConfig.Notifications = parseNotifications(amplifyOutputs.notifications);\n }\n return resourcesConfig;\n}\nconst authModeNames = {\n AMAZON_COGNITO_USER_POOLS: 'userPool',\n API_KEY: 'apiKey',\n AWS_IAM: 'iam',\n AWS_LAMBDA: 'lambda',\n OPENID_CONNECT: 'oidc',\n};\nfunction getGraphQLAuthMode(authType) {\n return authModeNames[authType];\n}\nconst providerNames = {\n GOOGLE: 'Google',\n LOGIN_WITH_AMAZON: 'Amazon',\n FACEBOOK: 'Facebook',\n SIGN_IN_WITH_APPLE: 'Apple',\n};\nfunction getOAuthProviders(providers = []) {\n return providers.reduce((oAuthProviders, provider) => {\n if (providerNames[provider] !== undefined) {\n oAuthProviders.push(providerNames[provider]);\n }\n return oAuthProviders;\n }, []);\n}\nfunction getMfaStatus(mfaConfiguration) {\n if (mfaConfiguration === 'OPTIONAL')\n return 'optional';\n if (mfaConfiguration === 'REQUIRED')\n return 'on';\n return 'off';\n}\nfunction createBucketInfoMap(buckets) {\n const mappedBuckets = {};\n buckets.forEach(({ name, bucket_name: bucketName, aws_region: region, paths }) => {\n if (name in mappedBuckets) {\n throw new Error(`Duplicate friendly name found: ${name}. Name must be unique.`);\n }\n const sanitizedPaths = paths\n ? Object.entries(paths).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n }, {})\n : undefined;\n mappedBuckets[name] = {\n bucketName,\n region,\n paths: sanitizedPaths,\n };\n });\n return mappedBuckets;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseAWSExports } from '../parseAWSExports';\nimport { isAmplifyOutputs, parseAmplifyOutputs } from '../parseAmplifyOutputs';\n/**\n * Parses the variety of configuration shapes that Amplify can accept into a ResourcesConfig.\n *\n * @param amplifyConfig An Amplify configuration object conforming to one of the supported schemas.\n * @return A ResourcesConfig for the provided configuration object.\n */\nexport const parseAmplifyConfig = (amplifyConfig) => {\n if (Object.keys(amplifyConfig).some(key => key.startsWith('aws_'))) {\n return parseAWSExports(amplifyConfig);\n }\n else if (isAmplifyOutputs(amplifyConfig)) {\n return parseAmplifyOutputs(amplifyConfig);\n }\n else {\n return amplifyConfig;\n }\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(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}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __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});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@smithy/util-utf8\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Checksum {\n private readonly secret?: SourceData;\n private hash: RawSha256;\n private outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n this.secret = secret;\n this.hash = new RawSha256();\n this.reset();\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise<Uint8Array> {\n return this.digestSync();\n }\n\n reset(): void {\n this.hash = new RawSha256();\n if (this.secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(this.secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexport function toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n","export class AuthClass {\n /**\n * Configure Auth category\n *\n * @internal\n *\n * @param authResourcesConfig - Resources configurations required by Auth providers.\n * @param authOptions - Client options used by library\n *\n * @returns void\n */\n configure(authResourcesConfig, authOptions) {\n this.authConfig = authResourcesConfig;\n this.authOptions = authOptions;\n }\n /**\n * Fetch the auth tokens, and the temporary AWS credentials and identity if they are configured. By default it\n * does not refresh the auth tokens or credentials if they are loaded in storage already. You can force a refresh\n * with `{ forceRefresh: true }` input.\n *\n * @param options - Options configuring the fetch behavior.\n *\n * @returns Promise of current auth session {@link AuthSession}.\n */\n async fetchAuthSession(options = {}) {\n let credentialsAndIdentityId;\n let userSub;\n // Get tokens will throw if session cannot be refreshed (network or service error) or return null if not available\n const tokens = await this.getTokens(options);\n if (tokens) {\n userSub = tokens.accessToken?.payload?.sub;\n // getCredentialsAndIdentityId will throw if cannot get credentials (network or service error)\n credentialsAndIdentityId =\n await this.authOptions?.credentialsProvider?.getCredentialsAndIdentityId({\n authConfig: this.authConfig,\n tokens,\n authenticated: true,\n forceRefresh: options.forceRefresh,\n });\n }\n else {\n // getCredentialsAndIdentityId will throw if cannot get credentials (network or service error)\n credentialsAndIdentityId =\n await this.authOptions?.credentialsProvider?.getCredentialsAndIdentityId({\n authConfig: this.authConfig,\n authenticated: false,\n forceRefresh: options.forceRefresh,\n });\n }\n return {\n tokens,\n credentials: credentialsAndIdentityId?.credentials,\n identityId: credentialsAndIdentityId?.identityId,\n userSub,\n };\n }\n async clearCredentials() {\n await this.authOptions?.credentialsProvider?.clearCredentialsAndIdentityId();\n }\n async getTokens(options) {\n return ((await this.authOptions?.tokenProvider?.getTokens(options)) ?? undefined);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AMPLIFY_SYMBOL, Hub } from '../Hub';\nimport { deepFreeze } from '../utils';\nimport { parseAmplifyConfig } from '../libraryUtils';\nimport { AuthClass } from './Auth';\nimport { ADD_OAUTH_LISTENER } from './constants';\nexport class AmplifyClass {\n constructor() {\n this.oAuthListener = undefined;\n this.resourcesConfig = {};\n this.libraryOptions = {};\n this.Auth = new AuthClass();\n }\n /**\n * Configures Amplify for use with your back-end resources.\n *\n * @remarks\n * This API does not perform any merging of either `resourcesConfig` or `libraryOptions`. The most recently\n * provided values will be used after configuration.\n *\n * @remarks\n * `configure` can be used to specify additional library options where available for supported categories.\n *\n * @param resourceConfig - Back-end resource configuration. Typically provided via the `aws-exports.js` file.\n * @param libraryOptions - Additional options for customizing the behavior of the library.\n */\n configure(resourcesConfig, libraryOptions) {\n const resolvedResourceConfig = parseAmplifyConfig(resourcesConfig);\n this.resourcesConfig = resolvedResourceConfig;\n if (libraryOptions) {\n this.libraryOptions = libraryOptions;\n }\n // Make resource config immutable\n this.resourcesConfig = deepFreeze(this.resourcesConfig);\n this.Auth.configure(this.resourcesConfig.Auth, this.libraryOptions.Auth);\n Hub.dispatch('core', {\n event: 'configure',\n data: this.resourcesConfig,\n }, 'Configure', AMPLIFY_SYMBOL);\n this.notifyOAuthListener();\n }\n /**\n * Provides access to the current back-end resource configuration for the Library.\n *\n * @returns Returns the immutable back-end resource configuration.\n */\n getConfig() {\n return this.resourcesConfig;\n }\n /** @internal */\n [ADD_OAUTH_LISTENER](listener) {\n if (this.resourcesConfig.Auth?.Cognito.loginWith?.oauth) {\n // when Amplify has been configured with a valid OAuth config while adding the listener, run it directly\n listener(this.resourcesConfig.Auth?.Cognito);\n }\n else {\n // otherwise register the listener and run it later when Amplify gets configured with a valid oauth config\n this.oAuthListener = listener;\n }\n }\n notifyOAuthListener() {\n if (!this.resourcesConfig.Auth?.Cognito.loginWith?.oauth ||\n !this.oAuthListener) {\n return;\n }\n this.oAuthListener(this.resourcesConfig.Auth?.Cognito);\n // the listener should only be notified once with a valid oauth config\n this.oAuthListener = undefined;\n }\n}\n/**\n * The `Amplify` utility is used to configure the library.\n *\n * @remarks\n * `Amplify` orchestrates cross-category communication within the library.\n */\nexport const Amplify = new AmplifyClass();\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var AmplifyErrorCode;\n(function (AmplifyErrorCode) {\n AmplifyErrorCode[\"NoEndpointId\"] = \"NoEndpointId\";\n AmplifyErrorCode[\"PlatformNotSupported\"] = \"PlatformNotSupported\";\n AmplifyErrorCode[\"Unknown\"] = \"Unknown\";\n AmplifyErrorCode[\"NetworkError\"] = \"NetworkError\";\n})(AmplifyErrorCode || (AmplifyErrorCode = {}));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport JsCookie from 'js-cookie';\nexport class CookieStorage {\n constructor(data = {}) {\n const { path, domain, expires, sameSite, secure } = data;\n this.domain = domain;\n this.path = path || '/';\n this.expires = Object.prototype.hasOwnProperty.call(data, 'expires')\n ? expires\n : 365;\n this.secure = Object.prototype.hasOwnProperty.call(data, 'secure')\n ? secure\n : true;\n if (Object.prototype.hasOwnProperty.call(data, 'sameSite')) {\n if (!sameSite || !['strict', 'lax', 'none'].includes(sameSite)) {\n throw new Error('The sameSite value of cookieStorage must be \"lax\", \"strict\" or \"none\".');\n }\n if (sameSite === 'none' && !this.secure) {\n throw new Error('sameSite = None requires the Secure attribute in latest browser versions.');\n }\n this.sameSite = sameSite;\n }\n }\n async setItem(key, value) {\n JsCookie.set(key, value, this.getData());\n }\n async getItem(key) {\n const item = JsCookie.get(key);\n return item ?? null;\n }\n async removeItem(key) {\n JsCookie.remove(key, this.getData());\n }\n async clear() {\n const cookie = JsCookie.get();\n const promises = Object.keys(cookie).map(key => this.removeItem(key));\n await Promise.all(promises);\n }\n getData() {\n return {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure,\n ...(this.sameSite && { sameSite: this.sameSite }),\n };\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyErrorCode } from '../types';\nimport { AmplifyError } from './AmplifyError';\nexport class PlatformNotSupportedError extends AmplifyError {\n constructor() {\n super({\n name: AmplifyErrorCode.PlatformNotSupported,\n message: 'Function not supported on current platform',\n });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { PlatformNotSupportedError } from '../errors';\n/**\n * @internal\n */\nexport class KeyValueStorage {\n constructor(storage) {\n this.storage = storage;\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n async setItem(key, value) {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n this.storage.setItem(key, value);\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n async getItem(key) {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n return this.storage.getItem(key);\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n async removeItem(key) {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n this.storage.removeItem(key);\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n async clear() {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n this.storage.clear();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nexport class InMemoryStorage {\n constructor() {\n this.storage = new Map();\n }\n get length() {\n return this.storage.size;\n }\n key(index) {\n if (index > this.length - 1) {\n return null;\n }\n return Array.from(this.storage.keys())[index];\n }\n setItem(key, value) {\n this.storage.set(key, value);\n }\n getItem(key) {\n return this.storage.get(key) ?? null;\n }\n removeItem(key) {\n this.storage.delete(key);\n }\n clear() {\n this.storage.clear();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '../Logger';\nimport { InMemoryStorage } from './InMemoryStorage';\n/**\n * @internal\n * @returns Either a reference to window.localStorage or an in-memory storage as fallback\n */\nconst logger = new ConsoleLogger('CoreStorageUtils');\nexport const getLocalStorageWithFallback = () => {\n try {\n // Attempt to use localStorage directly\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage;\n }\n }\n catch (e) {\n // Handle any errors related to localStorage access\n logger.info('localStorage not found. InMemoryStorage is used as a fallback.');\n }\n // Return in-memory storage as a fallback if localStorage is not accessible\n return new InMemoryStorage();\n};\n/**\n * @internal\n * @returns Either a reference to window.sessionStorage or an in-memory storage as fallback\n */\nexport const getSessionStorageWithFallback = () => {\n try {\n // Attempt to use sessionStorage directly\n if (typeof window !== 'undefined' && window.sessionStorage) {\n // Verify we can actually use it by testing access\n window.sessionStorage.getItem('test');\n return window.sessionStorage;\n }\n throw new Error('sessionStorage is not defined');\n }\n catch (e) {\n // Handle any errors related to sessionStorage access\n logger.info('sessionStorage not found. InMemoryStorage is used as a fallback.');\n return new InMemoryStorage();\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { PlatformNotSupportedError } from '../errors';\n/**\n * @internal\n */\nexport class SyncKeyValueStorage {\n constructor(storage) {\n this._storage = storage;\n }\n get storage() {\n if (!this._storage)\n throw new PlatformNotSupportedError();\n return this._storage;\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n setItem(key, value) {\n this.storage.setItem(key, value);\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n getItem(key) {\n return this.storage.getItem(key);\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n removeItem(key) {\n this.storage.removeItem(key);\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n clear() {\n this.storage.clear();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DefaultStorage } from './DefaultStorage';\nimport { InMemoryStorage } from './InMemoryStorage';\nimport { KeyValueStorage } from './KeyValueStorage';\nimport { SessionStorage } from './SessionStorage';\nimport { SyncSessionStorage } from './SyncSessionStorage';\nexport { CookieStorage } from './CookieStorage';\nexport const defaultStorage = new DefaultStorage();\nexport const sessionStorage = new SessionStorage();\nexport const syncSessionStorage = new SyncSessionStorage();\nexport const sharedInMemoryStorage = new KeyValueStorage(new InMemoryStorage());\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KeyValueStorage } from './KeyValueStorage';\nimport { getLocalStorageWithFallback } from './utils';\n/**\n * @internal\n */\nexport class DefaultStorage extends KeyValueStorage {\n constructor() {\n super(getLocalStorageWithFallback());\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KeyValueStorage } from './KeyValueStorage';\nimport { getSessionStorageWithFallback } from './utils';\n/**\n * @internal\n */\nexport class SessionStorage extends KeyValueStorage {\n constructor() {\n super(getSessionStorageWithFallback());\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { SyncKeyValueStorage } from './SyncKeyValueStorage';\nimport { getSessionStorageWithFallback } from './utils';\n/**\n * @internal\n */\nexport class SyncSessionStorage extends SyncKeyValueStorage {\n constructor() {\n super(getSessionStorageWithFallback());\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError } from '../../errors';\nexport const getCrypto = () => {\n if (typeof window === 'object' && typeof window.crypto === 'object') {\n return window.crypto;\n }\n // Next.js global polyfill\n if (typeof crypto === 'object') {\n return crypto;\n }\n throw new AmplifyError({\n name: 'MissingPolyfill',\n message: 'Cannot resolve the `crypto` function from the environment.',\n });\n};\nexport const getBtoa = () => {\n // browser\n if (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n return window.btoa;\n }\n // Next.js global polyfill\n if (typeof btoa === 'function') {\n return btoa;\n }\n throw new AmplifyError({\n name: 'Base64EncoderError',\n message: 'Cannot resolve the `btoa` function from the environment.',\n });\n};\nexport const getAtob = () => {\n // browser\n if (typeof window !== 'undefined' && typeof window.atob === 'function') {\n return window.atob;\n }\n // Next.js global polyfill\n if (typeof atob === 'function') {\n return atob;\n }\n throw new AmplifyError({\n name: 'Base64EncoderError',\n message: 'Cannot resolve the `atob` function from the environment.',\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getAtob } from '../../globalHelpers';\nexport const base64Decoder = {\n convert(input, options) {\n let inputStr = input;\n // urlSafe character replacement options conform to the base64 url spec\n // https://datatracker.ietf.org/doc/html/rfc4648#page-7\n if (options?.urlSafe) {\n inputStr = inputStr.replace(/-/g, '+').replace(/_/g, '/');\n }\n return getAtob()(inputStr);\n },\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError } from './AmplifyError';\nexport const createAssertionFunction = (errorMap, AssertionError = AmplifyError) => (assertion, name, additionalContext) => {\n const { message, recoverySuggestion } = errorMap[name];\n if (!assertion) {\n throw new AssertionError({\n name,\n message: additionalContext\n ? `${message} ${additionalContext}`\n : message,\n recoverySuggestion,\n });\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createAssertionFunction } from '../../../errors';\nexport var AuthConfigurationErrorCode;\n(function (AuthConfigurationErrorCode) {\n AuthConfigurationErrorCode[\"AuthTokenConfigException\"] = \"AuthTokenConfigException\";\n AuthConfigurationErrorCode[\"AuthUserPoolAndIdentityPoolException\"] = \"AuthUserPoolAndIdentityPoolException\";\n AuthConfigurationErrorCode[\"AuthUserPoolException\"] = \"AuthUserPoolException\";\n AuthConfigurationErrorCode[\"InvalidIdentityPoolIdException\"] = \"InvalidIdentityPoolIdException\";\n AuthConfigurationErrorCode[\"OAuthNotConfigureException\"] = \"OAuthNotConfigureException\";\n})(AuthConfigurationErrorCode || (AuthConfigurationErrorCode = {}));\nconst authConfigurationErrorMap = {\n [AuthConfigurationErrorCode.AuthTokenConfigException]: {\n message: 'Auth Token Provider not configured.',\n recoverySuggestion: 'Make sure to call Amplify.configure in your app.',\n },\n [AuthConfigurationErrorCode.AuthUserPoolAndIdentityPoolException]: {\n message: 'Auth UserPool or IdentityPool not configured.',\n recoverySuggestion: 'Make sure to call Amplify.configure in your app with UserPoolId and IdentityPoolId.',\n },\n [AuthConfigurationErrorCode.AuthUserPoolException]: {\n message: 'Auth UserPool not configured.',\n recoverySuggestion: 'Make sure to call Amplify.configure in your app with userPoolId and userPoolClientId.',\n },\n [AuthConfigurationErrorCode.InvalidIdentityPoolIdException]: {\n message: 'Invalid identity pool id provided.',\n recoverySuggestion: 'Make sure a valid identityPoolId is given in the config.',\n },\n [AuthConfigurationErrorCode.OAuthNotConfigureException]: {\n message: 'oauth param not configured.',\n recoverySuggestion: 'Make sure to call Amplify.configure with oauth parameter in your app.',\n },\n};\nexport const assert = createAssertionFunction(authConfigurationErrorMap);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { base64Decoder } from '../../../utils/convert';\nimport { AuthConfigurationErrorCode, assert } from './errorHelpers';\nexport function assertTokenProviderConfig(cognitoConfig) {\n let assertionValid = true; // assume valid until otherwise proveed\n if (!cognitoConfig) {\n assertionValid = false;\n }\n else {\n assertionValid =\n !!cognitoConfig.userPoolId && !!cognitoConfig.userPoolClientId;\n }\n assert(assertionValid, AuthConfigurationErrorCode.AuthUserPoolException);\n}\nexport function assertOAuthConfig(cognitoConfig) {\n const validOAuthConfig = !!cognitoConfig?.loginWith?.oauth?.domain &&\n !!cognitoConfig?.loginWith?.oauth?.redirectSignOut &&\n !!cognitoConfig?.loginWith?.oauth?.redirectSignIn &&\n !!cognitoConfig?.loginWith?.oauth?.responseType;\n assert(validOAuthConfig, AuthConfigurationErrorCode.OAuthNotConfigureException);\n}\nexport function assertIdentityPoolIdConfig(cognitoConfig) {\n const validConfig = !!cognitoConfig?.identityPoolId;\n assert(validConfig, AuthConfigurationErrorCode.InvalidIdentityPoolIdException);\n}\n/**\n * Decodes payload of JWT token\n *\n * @param {String} token A string representing a token to be decoded\n * @throws {@link Error} - Throws error when token is invalid or payload malformed.\n */\nexport function decodeJWT(token) {\n const tokenParts = token.split('.');\n if (tokenParts.length !== 3) {\n throw new Error('Invalid token');\n }\n try {\n const base64WithUrlSafe = tokenParts[1];\n const base64 = base64WithUrlSafe.replace(/-/g, '+').replace(/_/g, '/');\n const jsonStr = decodeURIComponent(base64Decoder\n .convert(base64)\n .split('')\n .map(char => `%${`00${char.charCodeAt(0).toString(16)}`.slice(-2)}`)\n .join(''));\n const payload = JSON.parse(jsonStr);\n return {\n toString: () => token,\n payload,\n };\n }\n catch (err) {\n throw new Error('Invalid token payload');\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError, } from '@aws-amplify/core/internals/utils';\nexport class AuthError extends AmplifyError {\n constructor(params) {\n super(params);\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = AuthError;\n Object.setPrototypeOf(this, AuthError.prototype);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthError } from '../../errors/AuthError';\nexport function getRegionFromUserPoolId(userPoolId) {\n const region = userPoolId?.split('_')[0];\n if (!userPoolId ||\n userPoolId.indexOf('_') < 0 ||\n !region ||\n typeof region !== 'string')\n throw new AuthError({\n name: 'InvalidUserPoolId',\n message: 'Invalid user pool id provided.',\n });\n return region;\n}\nexport function getRegionFromIdentityPoolId(identityPoolId) {\n if (!identityPoolId || !identityPoolId.includes(':')) {\n throw new AuthError({\n name: 'InvalidIdentityPoolIdException',\n message: 'Invalid identity pool id provided.',\n recoverySuggestion: 'Make sure a valid identityPoolId is given in the config.',\n });\n }\n return identityPoolId.split(':')[0];\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthError } from './AuthError';\nexport const USER_UNAUTHENTICATED_EXCEPTION = 'UserUnAuthenticatedException';\nexport const USER_ALREADY_AUTHENTICATED_EXCEPTION = 'UserAlreadyAuthenticatedException';\nexport const DEVICE_METADATA_NOT_FOUND_EXCEPTION = 'DeviceMetadataNotFoundException';\nexport const AUTO_SIGN_IN_EXCEPTION = 'AutoSignInException';\nexport const INVALID_REDIRECT_EXCEPTION = 'InvalidRedirectException';\nexport const INVALID_APP_SCHEME_EXCEPTION = 'InvalidAppSchemeException';\nexport const INVALID_PREFERRED_REDIRECT_EXCEPTION = 'InvalidPreferredRedirectUrlException';\nexport const invalidRedirectException = new AuthError({\n name: INVALID_REDIRECT_EXCEPTION,\n message: 'signInRedirect or signOutRedirect had an invalid format or was not found.',\n recoverySuggestion: 'Please make sure the signIn/Out redirect in your oauth config is valid.',\n});\nexport const invalidAppSchemeException = new AuthError({\n name: INVALID_APP_SCHEME_EXCEPTION,\n message: 'A valid non-http app scheme was not found in the config.',\n recoverySuggestion: 'Please make sure a valid custom app scheme is present in the config.',\n});\nexport const invalidPreferredRedirectUrlException = new AuthError({\n name: INVALID_PREFERRED_REDIRECT_EXCEPTION,\n message: 'The given preferredRedirectUrl does not match any items in the redirectSignOutUrls array from the config.',\n recoverySuggestion: 'Please make sure a matching preferredRedirectUrl is provided.',\n});\nexport const INVALID_ORIGIN_EXCEPTION = 'InvalidOriginException';\nexport const invalidOriginException = new AuthError({\n name: INVALID_ORIGIN_EXCEPTION,\n message: 'redirect is coming from a different origin. The oauth flow needs to be initiated from the same origin',\n recoverySuggestion: 'Please call signInWithRedirect from the same origin.',\n});\nexport const OAUTH_SIGNOUT_EXCEPTION = 'OAuthSignOutException';\nexport const TOKEN_REFRESH_EXCEPTION = 'TokenRefreshException';\nexport const UNEXPECTED_SIGN_IN_INTERRUPTION_EXCEPTION = 'UnexpectedSignInInterruptionException';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthError } from '../../../errors/AuthError';\nimport { DEVICE_METADATA_NOT_FOUND_EXCEPTION, TOKEN_REFRESH_EXCEPTION, USER_UNAUTHENTICATED_EXCEPTION, } from '../../../errors/constants';\nexport function isTypeUserPoolConfig(authConfig) {\n if (authConfig &&\n authConfig.Cognito.userPoolId &&\n authConfig.Cognito.userPoolClientId) {\n return true;\n }\n return false;\n}\nexport function assertAuthTokens(tokens) {\n if (!tokens || !tokens.accessToken) {\n throw new AuthError({\n name: USER_UNAUTHENTICATED_EXCEPTION,\n message: 'User needs to be authenticated to call this API.',\n recoverySuggestion: 'Sign in before calling this API again.',\n });\n }\n}\nexport function assertIdTokenInAuthTokens(tokens) {\n if (!tokens || !tokens.idToken) {\n throw new AuthError({\n name: USER_UNAUTHENTICATED_EXCEPTION,\n message: 'User needs to be authenticated to call this API.',\n recoverySuggestion: 'Sign in before calling this API again.',\n });\n }\n}\nexport const oAuthTokenRefreshException = new AuthError({\n name: TOKEN_REFRESH_EXCEPTION,\n message: `Token refresh is not supported when authenticated with the 'implicit grant' (token) oauth flow. \n\tPlease change your oauth configuration to use 'code grant' flow.`,\n recoverySuggestion: `Please logout and change your Amplify configuration to use \"code grant\" flow. \n\tE.g { responseType: 'code' }`,\n});\nexport const tokenRefreshException = new AuthError({\n name: USER_UNAUTHENTICATED_EXCEPTION,\n message: 'User needs to be authenticated to call this API.',\n recoverySuggestion: 'Sign in before calling this API again.',\n});\nexport function assertAuthTokensWithRefreshToken(tokens) {\n if (isAuthenticatedWithImplicitOauthFlow(tokens)) {\n throw oAuthTokenRefreshException;\n }\n if (!isAuthenticatedWithRefreshToken(tokens)) {\n throw tokenRefreshException;\n }\n}\nexport function assertDeviceMetadata(deviceMetadata) {\n if (!deviceMetadata ||\n !deviceMetadata.deviceKey ||\n !deviceMetadata.deviceGroupKey ||\n !deviceMetadata.randomPassword) {\n throw new AuthError({\n name: DEVICE_METADATA_NOT_FOUND_EXCEPTION,\n message: 'Either deviceKey, deviceGroupKey or secretPassword were not found during the sign-in process.',\n recoverySuggestion: 'Make sure to not clear storage after calling the signIn API.',\n });\n }\n}\nexport const OAuthStorageKeys = {\n inflightOAuth: 'inflightOAuth',\n oauthSignIn: 'oauthSignIn',\n oauthPKCE: 'oauthPKCE',\n oauthState: 'oauthState',\n};\nfunction isAuthenticated(tokens) {\n return tokens?.accessToken || tokens?.idToken;\n}\nfunction isAuthenticatedWithRefreshToken(tokens) {\n return isAuthenticated(tokens) && tokens?.refreshToken;\n}\nfunction isAuthenticatedWithImplicitOauthFlow(tokens) {\n return isAuthenticated(tokens) && !tokens?.refreshToken;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Compose a service API handler that accepts input as defined shape and responds conforming to defined output shape.\n * A service API handler is composed with:\n * * A transfer handler\n * * A serializer function\n * * A deserializer function\n * * A default config object\n *\n * The returned service API handler, when called, will trigger the following workflow:\n * 1. When calling the service API handler function, the default config object is merged into the input config\n * object to assign the default values of some omitted configs, resulting to a resolved config object.\n * 2. The `endpointResolver` function from the default config object will be invoked with the resolved config object and\n * API input object resulting to an endpoint instance.\n * 3. The serializer function is invoked with API input object and the endpoint instance resulting to an HTTP request\n * instance.\n * 4. The HTTP request instance and the resolved config object is passed to the transfer handler function.\n * 5. The transfer handler function resolves to an HTTP response instance(can be either successful or failed status code).\n * 6. The deserializer function is invoked with the HTTP response instance resulting to the API output object, and\n * return to the caller.\n *\n *\n * @param transferHandler Async function for dispatching HTTP requests and returning HTTP response.\n * @param serializer Async function for converting object in defined input shape into HTTP request targeting a given\n * \tendpoint.\n * @param deserializer Async function for converting HTTP response into output object in defined output shape, or error\n * \tshape.\n * @param defaultConfig object containing default options to be consumed by transfer handler, serializer and\n * deserializer.\n * @returns a async service API handler function that accepts a config object and input object in defined shape, returns\n * \tan output object in defined shape. It may also throw error instance in defined shape in deserializer. The config\n * object type is composed with options type of transferHandler, endpointResolver function as well as endpointResolver\n * function's input options type, region string. The config object property will be marked as optional if it's also\n * \tdefined in defaultConfig.\n *\n * @internal\n */\nexport const composeServiceApi = (transferHandler, serializer, deserializer, defaultConfig) => {\n return async (config, input) => {\n const resolvedConfig = {\n ...defaultConfig,\n ...config,\n };\n // We need to allow different endpoints based on both given config(other than region) and input.\n // However for most of non-S3 services, region is the only input for endpoint resolver.\n const endpoint = await resolvedConfig.endpointResolver(resolvedConfig, input);\n // Unlike AWS SDK clients, a serializer should NOT populate the `host` or `content-length` headers.\n // Both of these headers are prohibited per Spec(https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name).\n // They will be populated automatically by browser, or node-fetch polyfill.\n const request = await serializer(input, endpoint);\n const response = await transferHandler(request, {\n ...resolvedConfig,\n });\n return deserializer(response);\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const createUserPoolSerializer = (operation) => (input, endpoint) => {\n const headers = getSharedHeaders(operation);\n const body = JSON.stringify(input);\n return buildHttpRpcRequest(endpoint, headers, body);\n};\nconst getSharedHeaders = (operation) => ({\n 'content-type': 'application/x-amz-json-1.1',\n 'x-amz-target': `AWSCognitoIdentityProviderService.${operation}`,\n});\nconst buildHttpRpcRequest = ({ url }, headers, body) => ({\n headers,\n url,\n body,\n method: 'POST',\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const parseMetadata = (response) => {\n const { headers, statusCode } = response;\n return {\n ...(isMetadataBearer(response) ? response.$metadata : {}),\n httpStatusCode: statusCode,\n requestId: headers['x-amzn-requestid'] ??\n headers['x-amzn-request-id'] ??\n headers['x-amz-request-id'],\n extendedRequestId: headers['x-amz-id-2'],\n cfId: headers['x-amz-cf-id'],\n };\n};\nconst isMetadataBearer = (response) => typeof response?.$metadata === 'object';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata } from './responseInfo';\n/**\n * Utility functions for serializing and deserializing of JSON protocol in general(including: REST-JSON, JSON-RPC, etc.)\n */\n/**\n * Error parser for AWS JSON protocol.\n */\nexport const parseJsonError = async (response) => {\n if (!response || response.statusCode < 300) {\n return;\n }\n const body = await parseJsonBody(response);\n const sanitizeErrorCode = (rawValue) => {\n const [cleanValue] = rawValue.toString().split(/[,:]+/);\n if (cleanValue.includes('#')) {\n return cleanValue.split('#')[1];\n }\n return cleanValue;\n };\n const code = sanitizeErrorCode(response.headers['x-amzn-errortype'] ??\n body.code ??\n body.__type ??\n 'UnknownError');\n const message = body.message ?? body.Message ?? 'Unknown error';\n const error = new Error(message);\n return Object.assign(error, {\n name: code,\n $metadata: parseMetadata(response),\n });\n};\n/**\n * Parse JSON response body to JavaScript object.\n */\nexport const parseJsonBody = async (response) => {\n if (!response.body) {\n throw new Error('Missing response payload');\n }\n const output = await response.body.json();\n return Object.assign(output, {\n $metadata: parseMetadata(response),\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyErrorCode, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../AuthError';\nexport function assertServiceError(error) {\n if (!error ||\n error.name === 'Error' ||\n error instanceof TypeError) {\n throw new AuthError({\n name: AmplifyErrorCode.Unknown,\n message: 'An unknown error has occurred.',\n underlyingError: error,\n });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseJsonBody, parseJsonError, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { assertServiceError } from '../../../../../../errors/utils/assertServiceError';\nimport { AuthError } from '../../../../../../errors/AuthError';\nexport const createUserPoolDeserializer = () => async (response) => {\n if (response.statusCode >= 300) {\n const error = await parseJsonError(response);\n assertServiceError(error);\n throw new AuthError({ name: error.name, message: error.message });\n }\n return parseJsonBody(response);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Compose a transfer handler with a core transfer handler and a list of middleware.\n * @param coreHandler Core transfer handler\n * @param middleware\tList of middleware\n * @returns A transfer handler whose option type is the union of the core\n * \ttransfer handler's option type and the middleware's option type.\n * @internal\n */\nexport const composeTransferHandler = (coreHandler, middleware) => (request, options) => {\n const context = {};\n let composedHandler = (composeHandlerRequest) => coreHandler(composeHandlerRequest, options);\n for (let i = middleware.length - 1; i >= 0; i--) {\n const m = middleware[i];\n const resolvedMiddleware = m(options);\n composedHandler = resolvedMiddleware(composedHandler, context);\n }\n return composedHandler(request);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst DEFAULT_RETRY_ATTEMPTS = 3;\n/**\n * Retry middleware\n */\nexport const retryMiddlewareFactory = ({ maxAttempts = DEFAULT_RETRY_ATTEMPTS, retryDecider, computeDelay, abortSignal, }) => {\n if (maxAttempts < 1) {\n throw new Error('maxAttempts must be greater than 0');\n }\n return (next, context) => async function retryMiddleware(request) {\n let error;\n let attemptsCount = context.attemptsCount ?? 0;\n let response;\n // When retry is not needed or max attempts is reached, either error or response will be set. This function handles either cases.\n const handleTerminalErrorOrResponse = () => {\n if (response) {\n addOrIncrementMetadataAttempts(response, attemptsCount);\n return response;\n }\n else {\n addOrIncrementMetadataAttempts(error, attemptsCount);\n throw error;\n }\n };\n while (!abortSignal?.aborted && attemptsCount < maxAttempts) {\n try {\n response = await next(request);\n error = undefined;\n }\n catch (e) {\n error = e;\n response = undefined;\n }\n // context.attemptsCount may be updated after calling next handler which may retry the request by itself.\n attemptsCount =\n (context.attemptsCount ?? 0) > attemptsCount\n ? (context.attemptsCount ?? 0)\n : attemptsCount + 1;\n context.attemptsCount = attemptsCount;\n const { isCredentialsExpiredError, retryable } = await retryDecider(response, error, context);\n if (retryable) {\n // Setting isCredentialsInvalid flag to notify signing middleware to forceRefresh credentials provider.\n context.isCredentialsExpired = !!isCredentialsExpiredError;\n if (!abortSignal?.aborted && attemptsCount < maxAttempts) {\n // prevent sleep for last attempt or cancelled request;\n const delay = computeDelay(attemptsCount);\n await cancellableSleep(delay, abortSignal);\n }\n continue;\n }\n else {\n return handleTerminalErrorOrResponse();\n }\n }\n if (abortSignal?.aborted) {\n throw new Error('Request aborted.');\n }\n else {\n return handleTerminalErrorOrResponse();\n }\n };\n};\nconst cancellableSleep = (timeoutMs, abortSignal) => {\n if (abortSignal?.aborted) {\n return Promise.resolve();\n }\n let timeoutId;\n let sleepPromiseResolveFn;\n const sleepPromise = new Promise(resolve => {\n sleepPromiseResolveFn = resolve;\n timeoutId = setTimeout(resolve, timeoutMs);\n });\n abortSignal?.addEventListener('abort', function cancelSleep(_) {\n clearTimeout(timeoutId);\n abortSignal?.removeEventListener('abort', cancelSleep);\n sleepPromiseResolveFn();\n });\n return sleepPromise;\n};\nconst addOrIncrementMetadataAttempts = (nextHandlerOutput, attempts) => {\n if (Object.prototype.toString.call(nextHandlerOutput) !== '[object Object]') {\n return;\n }\n nextHandlerOutput.$metadata = {\n ...(nextHandlerOutput.$metadata ?? {}),\n attempts,\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Middleware injects user agent string to specified header(default to 'x-amz-user-agent'),\n * if the header is not set already.\n *\n * TODO: incorporate new user agent design\n */\nexport const userAgentMiddlewareFactory = ({ userAgentHeader = 'x-amz-user-agent', userAgentValue = '', }) => next => {\n return async function userAgentMiddleware(request) {\n if (userAgentValue.trim().length === 0) {\n const result = await next(request);\n return result;\n }\n else {\n const headerName = userAgentHeader.toLowerCase();\n request.headers[headerName] = request.headers[headerName]\n ? `${request.headers[headerName]} ${userAgentValue}`\n : userAgentValue;\n const response = await next(request);\n return response;\n }\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Cache the payload of a response body. It allows multiple calls to the body,\n * for example, when reading the body in both retry decider and error deserializer.\n * Caching body is allowed here because we call the body accessor(blob(), json(),\n * etc.) when body is small or streaming implementation is not available(RN).\n *\n * @internal\n */\nexport const withMemoization = (payloadAccessor) => {\n let cached;\n return () => {\n if (!cached) {\n // Explicitly not awaiting. Intermediate await would add overhead and\n // introduce a possible race in the event that this wrapper is called\n // again before the first `payloadAccessor` call resolves.\n cached = payloadAccessor();\n }\n return cached;\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError } from '../../errors';\nimport { withMemoization } from '../utils/memoization';\nimport { AmplifyErrorCode } from '../../types';\nconst shouldSendBody = (method) => !['HEAD', 'GET', 'DELETE'].includes(method.toUpperCase());\n// TODO[AllanZhengYP]: we need to provide isCanceledError utility\nexport const fetchTransferHandler = async ({ url, method, headers, body }, { abortSignal, cache, withCrossDomainCredentials }) => {\n let resp;\n try {\n resp = await fetch(url, {\n method,\n headers,\n body: shouldSendBody(method) ? body : undefined,\n signal: abortSignal,\n cache,\n credentials: withCrossDomainCredentials ? 'include' : 'same-origin',\n });\n }\n catch (e) {\n if (e instanceof TypeError) {\n throw new AmplifyError({\n name: AmplifyErrorCode.NetworkError,\n message: 'A network error has occurred.',\n underlyingError: e,\n });\n }\n throw e;\n }\n const responseHeaders = {};\n resp.headers?.forEach((value, key) => {\n responseHeaders[key.toLowerCase()] = value;\n });\n const httpResponse = {\n statusCode: resp.status,\n headers: responseHeaders,\n body: null,\n };\n // resp.body is a ReadableStream according to Fetch API spec, but React Native\n // does not implement it.\n const bodyWithMixin = Object.assign(resp.body ?? {}, {\n text: withMemoization(() => resp.text()),\n blob: withMemoization(() => resp.blob()),\n json: withMemoization(() => resp.json()),\n });\n return {\n ...httpResponse,\n body: bodyWithMixin,\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { retryMiddlewareFactory } from '../middleware/retry';\nimport { userAgentMiddlewareFactory, } from '../middleware/userAgent';\nimport { composeTransferHandler } from '../internal/composeTransferHandler';\nimport { fetchTransferHandler } from './fetch';\nexport const unauthenticatedHandler = composeTransferHandler(fetchTransferHandler, [userAgentMiddlewareFactory, retryMiddlewareFactory]);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeTransferHandler } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { unauthenticatedHandler, } from '@aws-amplify/core/internals/aws-client-utils';\n/**\n * A Cognito Identity-specific middleware that disables caching for all requests.\n */\nconst disableCacheMiddlewareFactory = () => (next, _) => async function disableCacheMiddleware(request) {\n request.headers['cache-control'] = 'no-store';\n return next(request);\n};\n/**\n * A Cognito Identity-specific transfer handler that does NOT sign requests, and\n * disables caching.\n *\n * @internal\n */\nexport const cognitoUserPoolTransferHandler = composeTransferHandler(unauthenticatedHandler, [disableCacheMiddlewareFactory]);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// via https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L8\nconst CLOCK_SKEW_ERROR_CODES = [\n 'AuthFailure',\n 'InvalidSignatureException',\n 'RequestExpired',\n 'RequestInTheFuture',\n 'RequestTimeTooSkewed',\n 'SignatureDoesNotMatch',\n 'BadRequestException', // API Gateway\n];\n/**\n * Given an error code, returns true if it is related to a clock skew error.\n *\n * @param errorCode String representation of some error.\n * @returns True if given error is present in `CLOCK_SKEW_ERROR_CODES`, false otherwise.\n *\n * @internal\n */\nexport const isClockSkewError = (errorCode) => !!errorCode && CLOCK_SKEW_ERROR_CODES.includes(errorCode);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyErrorCode } from '../../../types';\nimport { isClockSkewError } from './isClockSkewError';\n/**\n * Get retry decider function\n * @param errorParser Function to load JavaScript error from HTTP response\n */\nexport const getRetryDecider = (errorParser) => async (response, error) => {\n const parsedError = error ??\n (await errorParser(response)) ??\n undefined;\n const errorCode = parsedError?.code || parsedError?.name;\n const statusCode = response?.statusCode;\n const isRetryable = isConnectionError(error) ||\n isThrottlingError(statusCode, errorCode) ||\n isClockSkewError(errorCode) ||\n isServerSideError(statusCode, errorCode);\n return {\n retryable: isRetryable,\n };\n};\n// reference: https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L22-L37\nconst THROTTLING_ERROR_CODES = [\n 'BandwidthLimitExceeded',\n 'EC2ThrottledException',\n 'LimitExceededException',\n 'PriorRequestNotComplete',\n 'ProvisionedThroughputExceededException',\n 'RequestLimitExceeded',\n 'RequestThrottled',\n 'RequestThrottledException',\n 'SlowDown',\n 'ThrottledException',\n 'Throttling',\n 'ThrottlingException',\n 'TooManyRequestsException',\n];\nconst TIMEOUT_ERROR_CODES = [\n 'TimeoutError',\n 'RequestTimeout',\n 'RequestTimeoutException',\n];\nconst isThrottlingError = (statusCode, errorCode) => statusCode === 429 ||\n (!!errorCode && THROTTLING_ERROR_CODES.includes(errorCode));\nconst isConnectionError = (error) => [\n AmplifyErrorCode.NetworkError,\n // TODO(vNext): unify the error code `ERR_NETWORK` used by the Storage XHR handler\n 'ERR_NETWORK',\n].includes(error?.name);\nconst isServerSideError = (statusCode, errorCode) => (!!statusCode && [500, 502, 503, 504].includes(statusCode)) ||\n (!!errorCode && TIMEOUT_ERROR_CODES.includes(errorCode));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { jitteredBackoff as jitteredBackoffUtil } from '../../../utils';\n// TODO: [v6] The separate retry utility is used by Data packages now and will replaced by retry middleware.\nconst DEFAULT_MAX_DELAY_MS = 5 * 60 * 1000;\nexport const jitteredBackoff = attempt => {\n const delayFunction = jitteredBackoffUtil(DEFAULT_MAX_DELAY_MS);\n const delay = delayFunction(attempt);\n // The delayFunction returns false when the delay is greater than the max delay(5 mins).\n // In this case, the retry middleware will delay 5 mins instead, as a ceiling of the delay.\n return delay === false ? DEFAULT_MAX_DELAY_MS : delay;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { MAX_DELAY_MS } from './constants';\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function jitteredBackoff(maxDelayMs = MAX_DELAY_MS) {\n const BASE_TIME_MS = 100;\n const JITTER_FACTOR = 100;\n return attempt => {\n const delay = 2 ** attempt * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const MAX_DELAY_MS = 5 * 60 * 1000;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var Framework;\n(function (Framework) {\n // < 100 - Web frameworks\n Framework[\"WebUnknown\"] = \"0\";\n Framework[\"React\"] = \"1\";\n Framework[\"NextJs\"] = \"2\";\n Framework[\"Angular\"] = \"3\";\n Framework[\"VueJs\"] = \"4\";\n Framework[\"Nuxt\"] = \"5\";\n Framework[\"Svelte\"] = \"6\";\n // 100s - Server side frameworks\n Framework[\"ServerSideUnknown\"] = \"100\";\n Framework[\"ReactSSR\"] = \"101\";\n Framework[\"NextJsSSR\"] = \"102\";\n Framework[\"AngularSSR\"] = \"103\";\n Framework[\"VueJsSSR\"] = \"104\";\n Framework[\"NuxtSSR\"] = \"105\";\n Framework[\"SvelteSSR\"] = \"106\";\n // 200s - Mobile framework\n Framework[\"ReactNative\"] = \"201\";\n Framework[\"Expo\"] = \"202\";\n})(Framework || (Framework = {}));\nexport var Category;\n(function (Category) {\n Category[\"AI\"] = \"ai\";\n Category[\"API\"] = \"api\";\n Category[\"Auth\"] = \"auth\";\n Category[\"Analytics\"] = \"analytics\";\n Category[\"DataStore\"] = \"datastore\";\n Category[\"Geo\"] = \"geo\";\n Category[\"InAppMessaging\"] = \"inappmessaging\";\n Category[\"Interactions\"] = \"interactions\";\n Category[\"Predictions\"] = \"predictions\";\n Category[\"PubSub\"] = \"pubsub\";\n Category[\"PushNotification\"] = \"pushnotification\";\n Category[\"Storage\"] = \"storage\";\n})(Category || (Category = {}));\nexport var AiAction;\n(function (AiAction) {\n AiAction[\"CreateConversation\"] = \"1\";\n AiAction[\"GetConversation\"] = \"2\";\n AiAction[\"ListConversations\"] = \"3\";\n AiAction[\"DeleteConversation\"] = \"4\";\n AiAction[\"SendMessage\"] = \"5\";\n AiAction[\"ListMessages\"] = \"6\";\n AiAction[\"OnMessage\"] = \"7\";\n AiAction[\"Generation\"] = \"8\";\n AiAction[\"UpdateConversation\"] = \"9\";\n})(AiAction || (AiAction = {}));\nexport var AnalyticsAction;\n(function (AnalyticsAction) {\n AnalyticsAction[\"Record\"] = \"1\";\n AnalyticsAction[\"IdentifyUser\"] = \"2\";\n})(AnalyticsAction || (AnalyticsAction = {}));\nexport var ApiAction;\n(function (ApiAction) {\n ApiAction[\"GraphQl\"] = \"1\";\n ApiAction[\"Get\"] = \"2\";\n ApiAction[\"Post\"] = \"3\";\n ApiAction[\"Put\"] = \"4\";\n ApiAction[\"Patch\"] = \"5\";\n ApiAction[\"Del\"] = \"6\";\n ApiAction[\"Head\"] = \"7\";\n})(ApiAction || (ApiAction = {}));\nexport var AuthAction;\n(function (AuthAction) {\n AuthAction[\"SignUp\"] = \"1\";\n AuthAction[\"ConfirmSignUp\"] = \"2\";\n AuthAction[\"ResendSignUpCode\"] = \"3\";\n AuthAction[\"SignIn\"] = \"4\";\n AuthAction[\"FetchMFAPreference\"] = \"6\";\n AuthAction[\"UpdateMFAPreference\"] = \"7\";\n AuthAction[\"SetUpTOTP\"] = \"10\";\n AuthAction[\"VerifyTOTPSetup\"] = \"11\";\n AuthAction[\"ConfirmSignIn\"] = \"12\";\n AuthAction[\"DeleteUserAttributes\"] = \"15\";\n AuthAction[\"DeleteUser\"] = \"16\";\n AuthAction[\"UpdateUserAttributes\"] = \"17\";\n AuthAction[\"FetchUserAttributes\"] = \"18\";\n AuthAction[\"ConfirmUserAttribute\"] = \"22\";\n AuthAction[\"SignOut\"] = \"26\";\n AuthAction[\"UpdatePassword\"] = \"27\";\n AuthAction[\"ResetPassword\"] = \"28\";\n AuthAction[\"ConfirmResetPassword\"] = \"29\";\n AuthAction[\"FederatedSignIn\"] = \"30\";\n AuthAction[\"RememberDevice\"] = \"32\";\n AuthAction[\"ForgetDevice\"] = \"33\";\n AuthAction[\"FetchDevices\"] = \"34\";\n AuthAction[\"SendUserAttributeVerificationCode\"] = \"35\";\n AuthAction[\"SignInWithRedirect\"] = \"36\";\n AuthAction[\"StartWebAuthnRegistration\"] = \"37\";\n AuthAction[\"CompleteWebAuthnRegistration\"] = \"38\";\n AuthAction[\"ListWebAuthnCredentials\"] = \"39\";\n AuthAction[\"DeleteWebAuthnCredential\"] = \"40\";\n})(AuthAction || (AuthAction = {}));\nexport var DataStoreAction;\n(function (DataStoreAction) {\n DataStoreAction[\"Subscribe\"] = \"1\";\n DataStoreAction[\"GraphQl\"] = \"2\";\n})(DataStoreAction || (DataStoreAction = {}));\nexport var GeoAction;\n(function (GeoAction) {\n GeoAction[\"SearchByText\"] = \"0\";\n GeoAction[\"SearchByCoordinates\"] = \"1\";\n GeoAction[\"SearchForSuggestions\"] = \"2\";\n GeoAction[\"SearchByPlaceId\"] = \"3\";\n GeoAction[\"SaveGeofences\"] = \"4\";\n GeoAction[\"GetGeofence\"] = \"5\";\n GeoAction[\"ListGeofences\"] = \"6\";\n GeoAction[\"DeleteGeofences\"] = \"7\";\n})(GeoAction || (GeoAction = {}));\nexport var InAppMessagingAction;\n(function (InAppMessagingAction) {\n InAppMessagingAction[\"SyncMessages\"] = \"1\";\n InAppMessagingAction[\"IdentifyUser\"] = \"2\";\n InAppMessagingAction[\"NotifyMessageInteraction\"] = \"3\";\n})(InAppMessagingAction || (InAppMessagingAction = {}));\nexport var InteractionsAction;\n(function (InteractionsAction) {\n InteractionsAction[\"None\"] = \"0\";\n})(InteractionsAction || (InteractionsAction = {}));\nexport var PredictionsAction;\n(function (PredictionsAction) {\n PredictionsAction[\"Convert\"] = \"1\";\n PredictionsAction[\"Identify\"] = \"2\";\n PredictionsAction[\"Interpret\"] = \"3\";\n})(PredictionsAction || (PredictionsAction = {}));\nexport var PubSubAction;\n(function (PubSubAction) {\n PubSubAction[\"Subscribe\"] = \"1\";\n})(PubSubAction || (PubSubAction = {}));\nexport var PushNotificationAction;\n(function (PushNotificationAction) {\n PushNotificationAction[\"InitializePushNotifications\"] = \"1\";\n PushNotificationAction[\"IdentifyUser\"] = \"2\";\n})(PushNotificationAction || (PushNotificationAction = {}));\nexport var StorageAction;\n(function (StorageAction) {\n StorageAction[\"UploadData\"] = \"1\";\n StorageAction[\"DownloadData\"] = \"2\";\n StorageAction[\"List\"] = \"3\";\n StorageAction[\"Copy\"] = \"4\";\n StorageAction[\"Remove\"] = \"5\";\n StorageAction[\"GetProperties\"] = \"6\";\n StorageAction[\"GetUrl\"] = \"7\";\n StorageAction[\"GetDataAccess\"] = \"8\";\n StorageAction[\"ListCallerAccessGrants\"] = \"9\";\n})(StorageAction || (StorageAction = {}));\n","// generated by genversion\nexport const version = '6.12.0';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const globalExists = () => {\n return typeof global !== 'undefined';\n};\nexport const globalThisExists = () => {\n return typeof globalThis !== 'undefined';\n};\nexport const windowExists = () => {\n return typeof window !== 'undefined';\n};\nexport const documentExists = () => {\n return typeof document !== 'undefined';\n};\nexport const processExists = () => {\n return typeof process !== 'undefined';\n};\nexport const keyPrefixMatch = (object, prefix) => {\n return !!Object.keys(object).find(key => key.startsWith(prefix));\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from '../types';\nimport { reactSSRDetect, reactWebDetect } from './React';\nimport { vueSSRDetect, vueWebDetect } from './Vue';\nimport { svelteSSRDetect, svelteWebDetect } from './Svelte';\nimport { nextSSRDetect, nextWebDetect } from './Next';\nimport { nuxtSSRDetect, nuxtWebDetect } from './Nuxt';\nimport { angularSSRDetect, angularWebDetect } from './Angular';\nimport { reactNativeDetect } from './ReactNative';\nimport { expoDetect } from './Expo';\nimport { webDetect } from './Web';\n// These are in the order of detection where when both are detectable, the early Framework will be reported\nconst detectionMap = [\n // First, detect mobile\n { platform: Framework.Expo, detectionMethod: expoDetect },\n { platform: Framework.ReactNative, detectionMethod: reactNativeDetect },\n // Next, detect web frameworks\n { platform: Framework.NextJs, detectionMethod: nextWebDetect },\n { platform: Framework.Nuxt, detectionMethod: nuxtWebDetect },\n { platform: Framework.Angular, detectionMethod: angularWebDetect },\n { platform: Framework.React, detectionMethod: reactWebDetect },\n { platform: Framework.VueJs, detectionMethod: vueWebDetect },\n { platform: Framework.Svelte, detectionMethod: svelteWebDetect },\n { platform: Framework.WebUnknown, detectionMethod: webDetect },\n // Last, detect ssr frameworks\n { platform: Framework.NextJsSSR, detectionMethod: nextSSRDetect },\n { platform: Framework.NuxtSSR, detectionMethod: nuxtSSRDetect },\n { platform: Framework.ReactSSR, detectionMethod: reactSSRDetect },\n { platform: Framework.VueJsSSR, detectionMethod: vueSSRDetect },\n { platform: Framework.AngularSSR, detectionMethod: angularSSRDetect },\n { platform: Framework.SvelteSSR, detectionMethod: svelteSSRDetect },\n];\nexport function detect() {\n return (detectionMap.find(detectionEntry => detectionEntry.detectionMethod())\n ?.platform || Framework.ServerSideUnknown);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists } from './helpers';\n// Tested with expo 48 / react-native 0.71.3\nexport function expoDetect() {\n return globalExists() && typeof global.expo !== 'undefined';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with react-native 0.17.7\nexport function reactNativeDetect() {\n return (typeof navigator !== 'undefined' &&\n typeof navigator.product !== 'undefined' &&\n navigator.product === 'ReactNative');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, keyPrefixMatch, windowExists } from './helpers';\n// Tested with next 13.4 / react 18.2\nexport function nextWebDetect() {\n return (windowExists() &&\n window.next &&\n typeof window.next === 'object');\n}\nexport function nextSSRDetect() {\n return (globalExists() &&\n (keyPrefixMatch(global, '__next') || keyPrefixMatch(global, '__NEXT')));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, windowExists } from './helpers';\n// Tested with nuxt 2.15 / vue 2.7\nexport function nuxtWebDetect() {\n return (windowExists() &&\n (window.__NUXT__ !== undefined ||\n window.$nuxt !== undefined));\n}\nexport function nuxtSSRDetect() {\n return (globalExists() && typeof global.__NUXT_PATHS__ !== 'undefined');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { documentExists, processExists, windowExists } from './helpers';\n// Tested with @angular/core 16.0.0\nexport function angularWebDetect() {\n const angularVersionSetInDocument = Boolean(documentExists() && document.querySelector('[ng-version]'));\n const angularContentSetInWindow = Boolean(windowExists() && typeof window.ng !== 'undefined');\n return angularVersionSetInDocument || angularContentSetInWindow;\n}\nexport function angularSSRDetect() {\n return ((processExists() &&\n typeof process.env === 'object' &&\n process.env.npm_lifecycle_script?.startsWith('ng ')) ||\n false);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { documentExists, processExists } from './helpers';\n// Tested with react 18.2 - built using Vite\nexport function reactWebDetect() {\n const elementKeyPrefixedWithReact = (key) => {\n return key.startsWith('_react') || key.startsWith('__react');\n };\n const elementIsReactEnabled = (element) => {\n return Object.keys(element).find(elementKeyPrefixedWithReact);\n };\n const allElementsWithId = () => Array.from(document.querySelectorAll('[id]'));\n return documentExists() && allElementsWithId().some(elementIsReactEnabled);\n}\nexport function reactSSRDetect() {\n return (processExists() &&\n typeof process.env !== 'undefined' &&\n !!Object.keys(process.env).find(key => key.includes('react')));\n}\n// use the some\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, keyPrefixMatch, windowExists } from './helpers';\n// Tested with vue 3.3.2\nexport function vueWebDetect() {\n return windowExists() && keyPrefixMatch(window, '__VUE');\n}\nexport function vueSSRDetect() {\n return globalExists() && keyPrefixMatch(global, '__VUE');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { keyPrefixMatch, processExists, windowExists } from './helpers';\n// Tested with svelte 3.59\nexport function svelteWebDetect() {\n return windowExists() && keyPrefixMatch(window, '__SVELTE');\n}\nexport function svelteSSRDetect() {\n return (processExists() &&\n typeof process.env !== 'undefined' &&\n !!Object.keys(process.env).find(key => key.includes('svelte')));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { windowExists } from './helpers';\nexport function webDetect() {\n return windowExists();\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from './types';\nimport { detect } from './detection';\n// We want to cache detection since the framework won't change\nlet frameworkCache;\nexport const frameworkChangeObservers = [];\n// Setup the detection reset tracking / timeout delays\nlet resetTriggered = false;\nconst SSR_RESET_TIMEOUT = 10; // ms\nconst WEB_RESET_TIMEOUT = 10; // ms\nconst PRIME_FRAMEWORK_DELAY = 1000; // ms\nexport const detectFramework = () => {\n if (!frameworkCache) {\n frameworkCache = detect();\n if (resetTriggered) {\n // The final run of detectFramework:\n // Starting from this point, the `frameworkCache` becomes \"final\".\n // So we don't need to notify the observers again so the observer\n // can be removed after the final notice.\n while (frameworkChangeObservers.length) {\n frameworkChangeObservers.pop()?.();\n }\n }\n else {\n // The first run of detectFramework:\n // Every time we update the cache, call each observer function\n frameworkChangeObservers.forEach(fcn => {\n fcn();\n });\n }\n // Retry once for either Unknown type after a delay (explained below)\n resetTimeout(Framework.ServerSideUnknown, SSR_RESET_TIMEOUT);\n resetTimeout(Framework.WebUnknown, WEB_RESET_TIMEOUT);\n }\n return frameworkCache;\n};\n/**\n * @internal Setup observer callback that will be called everytime the framework changes\n */\nexport const observeFrameworkChanges = (fcn) => {\n // When the `frameworkCache` won't be updated again, we ignore all incoming\n // observers.\n if (resetTriggered) {\n return;\n }\n frameworkChangeObservers.push(fcn);\n};\nexport function clearCache() {\n frameworkCache = undefined;\n}\n// For a framework type and a delay amount, setup the event to re-detect\n// During the runtime boot, it is possible that framework detection will\n// be triggered before the framework has made modifications to the\n// global/window/etc needed for detection. When no framework is detected\n// we will reset and try again to ensure we don't use a cached\n// non-framework detection result for all requests.\nfunction resetTimeout(framework, delay) {\n if (frameworkCache === framework && !resetTriggered) {\n setTimeout(() => {\n clearCache();\n resetTriggered = true;\n setTimeout(detectFramework, PRIME_FRAMEWORK_DELAY);\n }, delay);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Maintains custom user-agent state set by external consumers.\nconst customUserAgentState = {};\n/**\n * Sets custom user agent state which will be appended to applicable requests. Returns a function that can be used to\n * clean up any custom state set with this API.\n *\n * @note\n * This API operates globally. Calling this API multiple times will result in the most recently set values for a\n * particular API being used.\n *\n * @note\n * This utility IS NOT compatible with SSR.\n *\n * @param input - SetCustomUserAgentInput that defines custom state to apply to the specified APIs.\n */\nexport const setCustomUserAgent = (input) => {\n // Save custom user-agent state & increment reference counter\n // TODO Remove `any` when we upgrade to TypeScript 5.2, see: https://github.com/microsoft/TypeScript/issues/44373\n customUserAgentState[input.category] = input.apis.reduce((acc, api) => ({\n ...acc,\n [api]: {\n refCount: acc[api]?.refCount ? acc[api].refCount + 1 : 1,\n additionalDetails: input.additionalDetails,\n },\n }), customUserAgentState[input.category] ?? {});\n // Callback that cleans up state for APIs recorded by this call\n let cleanUpCallbackCalled = false;\n const cleanUpCallback = () => {\n // Only allow the cleanup callback to be called once\n if (cleanUpCallbackCalled) {\n return;\n }\n cleanUpCallbackCalled = true;\n input.apis.forEach(api => {\n const apiRefCount = customUserAgentState[input.category][api].refCount;\n if (apiRefCount > 1) {\n customUserAgentState[input.category][api].refCount = apiRefCount - 1;\n }\n else {\n delete customUserAgentState[input.category][api];\n // Clean up category if no more APIs set\n if (!Object.keys(customUserAgentState[input.category]).length) {\n delete customUserAgentState[input.category];\n }\n }\n });\n };\n return cleanUpCallback;\n};\nexport const getCustomUserAgent = (category, api) => customUserAgentState[category]?.[api]?.additionalDetails;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from './types';\nimport { version } from './version';\nimport { detectFramework, observeFrameworkChanges } from './detectFramework';\nimport { getCustomUserAgent } from './customUserAgent';\nconst BASE_USER_AGENT = `aws-amplify`;\n/** Sanitize Amplify version string be removing special character + and character post the special character */\nexport const sanitizeAmplifyVersion = (amplifyVersion) => amplifyVersion.replace(/\\+.*/, '');\nclass PlatformBuilder {\n constructor() {\n this.userAgent = `${BASE_USER_AGENT}/${sanitizeAmplifyVersion(version)}`;\n }\n get framework() {\n return detectFramework();\n }\n get isReactNative() {\n return (this.framework === Framework.ReactNative ||\n this.framework === Framework.Expo);\n }\n observeFrameworkChanges(fcn) {\n observeFrameworkChanges(fcn);\n }\n}\nexport const Platform = new PlatformBuilder();\nexport const getAmplifyUserAgentObject = ({ category, action, } = {}) => {\n const userAgent = [\n [BASE_USER_AGENT, sanitizeAmplifyVersion(version)],\n ];\n if (category) {\n userAgent.push([category, action]);\n }\n userAgent.push(['framework', detectFramework()]);\n if (category && action) {\n const customState = getCustomUserAgent(category, action);\n if (customState) {\n customState.forEach(state => {\n userAgent.push(state);\n });\n }\n }\n return userAgent;\n};\nexport const getAmplifyUserAgent = (customUserAgentDetails) => {\n const userAgent = getAmplifyUserAgentObject(customUserAgentDetails);\n const userAgentString = userAgent\n .map(([agentKey, agentValue]) => agentKey && agentValue ? `${agentKey}/${agentValue}` : agentKey)\n .join(' ');\n return userAgentString;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nexport const COGNITO_IDP_SERVICE_NAME = 'cognito-idp';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getRetryDecider, jitteredBackoff, parseJsonError, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { getAmplifyUserAgent } from '@aws-amplify/core/internals/utils';\nimport { COGNITO_IDP_SERVICE_NAME } from '../../../constants';\nexport const DEFAULT_SERVICE_CLIENT_API_CONFIG = {\n service: COGNITO_IDP_SERVICE_NAME,\n retryDecider: getRetryDecider(parseJsonError),\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n cache: 'no-store',\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createInitiateAuthClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('InitiateAuth'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst AmplifyUrl = URL;\nconst AmplifyUrlSearchParams = URLSearchParams;\nexport { AmplifyUrl, AmplifyUrlSearchParams };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Default partition for AWS services. This is used when the region is not provided or the region is not recognized.\n *\n * @internal\n */\nexport const defaultPartition = {\n id: 'aws',\n outputs: {\n dnsSuffix: 'amazonaws.com',\n },\n regionRegex: '^(us|eu|ap|sa|ca|me|af)\\\\-\\\\w+\\\\-\\\\d+$',\n regions: ['aws-global'],\n};\n/**\n * This data is adapted from the partition file from AWS SDK shared utilities but remove some contents for bundle size\n * concern. Information removed are `dualStackDnsSuffix`, `supportDualStack`, `supportFIPS`, restricted partitions, and\n * list of regions for each partition other than global regions.\n *\n * * Ref: https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints\n * * Ref: https://github.com/aws/aws-sdk-js-v3/blob/0201baef03c2379f1f6f7150b9d401d4b230d488/packages/util-endpoints/src/lib/aws/partitions.json#L1\n *\n * @internal\n */\nexport const partitionsInfo = {\n partitions: [\n defaultPartition,\n {\n id: 'aws-cn',\n outputs: {\n dnsSuffix: 'amazonaws.com.cn',\n },\n regionRegex: '^cn\\\\-\\\\w+\\\\-\\\\d+$',\n regions: ['aws-cn-global'],\n },\n ],\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultPartition, partitionsInfo } from './partitions';\n/**\n * Get the AWS Services endpoint URL's DNS suffix for a given region. A typical AWS regional service endpoint URL will\n * follow this pattern: {endpointPrefix}.{region}.{dnsSuffix}. For example, the endpoint URL for Cognito Identity in\n * us-east-1 will be cognito-identity.us-east-1.amazonaws.com. Here the DnsSuffix is `amazonaws.com`.\n *\n * @param region\n * @returns The DNS suffix\n *\n * @internal\n */\nexport const getDnsSuffix = (region) => {\n const { partitions } = partitionsInfo;\n for (const { regions, outputs, regionRegex } of partitions) {\n const regex = new RegExp(regionRegex);\n if (regions.includes(region) || regex.test(region)) {\n return outputs.dnsSuffix;\n }\n }\n return defaultPartition.outputs.dnsSuffix;\n};\n","import { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { cognitoUserPoolEndpointResolver } from '../../../foundation/cognitoUserPoolEndpointResolver';\nexport const createCognitoUserPoolEndpointResolver = ({ endpointOverride }) => (input) => {\n if (endpointOverride) {\n return { url: new AmplifyUrl(endpointOverride) };\n }\n return cognitoUserPoolEndpointResolver(input);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getDnsSuffix, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { COGNITO_IDP_SERVICE_NAME } from './constants';\nexport const cognitoUserPoolEndpointResolver = ({ region, }) => ({\n url: new AmplifyUrl(`https://${COGNITO_IDP_SERVICE_NAME}.${region}.${getDnsSuffix(region)}`),\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function getUserContextData({ username, userPoolId, userPoolClientId, }) {\n if (typeof window === 'undefined') {\n return undefined;\n }\n const amazonCognitoAdvancedSecurityData = window\n .AmazonCognitoAdvancedSecurityData;\n if (typeof amazonCognitoAdvancedSecurityData === 'undefined') {\n return undefined;\n }\n const advancedSecurityData = amazonCognitoAdvancedSecurityData.getData(username, userPoolId, userPoolClientId);\n if (advancedSecurityData) {\n const userContextData = {\n EncodedData: advancedSecurityData,\n };\n return userContextData;\n }\n return {};\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertTokenProviderConfig, deDupeAsyncFunction, decodeJWT, } from '@aws-amplify/core/internals/utils';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { assertAuthTokensWithRefreshToken } from '../utils/types';\nimport { AuthError } from '../../../errors/AuthError';\nimport { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { getUserContextData } from './userContextData';\nconst refreshAuthTokensFunction = async ({ tokens, authConfig, username, }) => {\n assertTokenProviderConfig(authConfig?.Cognito);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = authConfig.Cognito;\n const region = getRegionFromUserPoolId(userPoolId);\n assertAuthTokensWithRefreshToken(tokens);\n const refreshTokenString = tokens.refreshToken;\n const AuthParameters = {\n REFRESH_TOKEN: refreshTokenString,\n };\n if (tokens.deviceMetadata?.deviceKey) {\n AuthParameters.DEVICE_KEY = tokens.deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { AuthenticationResult } = await initiateAuth({ region }, {\n ClientId: userPoolClientId,\n AuthFlow: 'REFRESH_TOKEN_AUTH',\n AuthParameters,\n UserContextData,\n });\n const accessToken = decodeJWT(AuthenticationResult?.AccessToken ?? '');\n const idToken = AuthenticationResult?.IdToken\n ? decodeJWT(AuthenticationResult.IdToken)\n : undefined;\n const { iat } = accessToken.payload;\n // This should never happen. If it does, it's a bug from the service.\n if (!iat) {\n throw new AuthError({\n name: 'iatNotFoundException',\n message: 'iat not found in access token',\n });\n }\n const clockDrift = iat * 1000 - new Date().getTime();\n return {\n accessToken,\n idToken,\n clockDrift,\n refreshToken: refreshTokenString,\n username,\n };\n};\nexport const refreshAuthTokens = deDupeAsyncFunction(refreshAuthTokensFunction);\nexport const refreshAuthTokensWithoutDedupe = refreshAuthTokensFunction;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * returns in-flight promise if there is one\n *\n * @param asyncFunction - asyncFunction to be deduped.\n * @returns - the return type of the callback\n */\nexport const deDupeAsyncFunction = (asyncFunction) => {\n let inflightPromise;\n return async (...args) => {\n if (inflightPromise)\n return inflightPromise;\n inflightPromise = new Promise((resolve, reject) => {\n asyncFunction(...args)\n .then(result => {\n resolve(result);\n })\n .catch(error => {\n reject(error);\n })\n .finally(() => {\n inflightPromise = undefined;\n });\n });\n return inflightPromise;\n };\n};\n","export const AuthTokenStorageKeys = {\n accessToken: 'accessToken',\n idToken: 'idToken',\n oidcProvider: 'oidcProvider',\n clockDrift: 'clockDrift',\n refreshToken: 'refreshToken',\n deviceKey: 'deviceKey',\n randomPasswordKey: 'randomPasswordKey',\n deviceGroupKey: 'deviceGroupKey',\n signInDetails: 'signInDetails',\n oauthMetadata: 'oauthMetadata',\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createAssertionFunction, } from '@aws-amplify/core/internals/utils';\nexport var TokenProviderErrorCode;\n(function (TokenProviderErrorCode) {\n TokenProviderErrorCode[\"InvalidAuthTokens\"] = \"InvalidAuthTokens\";\n})(TokenProviderErrorCode || (TokenProviderErrorCode = {}));\nconst tokenValidationErrorMap = {\n [TokenProviderErrorCode.InvalidAuthTokens]: {\n message: 'Invalid tokens.',\n recoverySuggestion: 'Make sure the tokens are valid.',\n },\n};\nexport const assert = createAssertionFunction(tokenValidationErrorMap);\n","import { assertTokenProviderConfig, decodeJWT, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { AuthTokenStorageKeys, } from './types';\nimport { TokenProviderErrorCode, assert } from './errorHelpers';\nexport class DefaultTokenStore {\n constructor() {\n this.name = 'CognitoIdentityServiceProvider'; // To be backwards compatible with V5, no migration needed\n }\n getKeyValueStorage() {\n if (!this.keyValueStorage) {\n throw new AuthError({\n name: 'KeyValueStorageNotFoundException',\n message: 'KeyValueStorage was not found in TokenStore',\n });\n }\n return this.keyValueStorage;\n }\n setKeyValueStorage(keyValueStorage) {\n this.keyValueStorage = keyValueStorage;\n }\n setAuthConfig(authConfig) {\n this.authConfig = authConfig;\n }\n async loadTokens() {\n // TODO(v6): migration logic should be here\n // Reading V5 tokens old format\n try {\n const authKeys = await this.getAuthKeys();\n const accessTokenString = await this.getKeyValueStorage().getItem(authKeys.accessToken);\n if (!accessTokenString) {\n throw new AuthError({\n name: 'NoSessionFoundException',\n message: 'Auth session was not found. Make sure to call signIn.',\n });\n }\n const accessToken = decodeJWT(accessTokenString);\n const itString = await this.getKeyValueStorage().getItem(authKeys.idToken);\n const idToken = itString ? decodeJWT(itString) : undefined;\n const refreshToken = (await this.getKeyValueStorage().getItem(authKeys.refreshToken)) ??\n undefined;\n const clockDriftString = (await this.getKeyValueStorage().getItem(authKeys.clockDrift)) ?? '0';\n const clockDrift = Number.parseInt(clockDriftString);\n const signInDetails = await this.getKeyValueStorage().getItem(authKeys.signInDetails);\n const tokens = {\n accessToken,\n idToken,\n refreshToken,\n deviceMetadata: (await this.getDeviceMetadata()) ?? undefined,\n clockDrift,\n username: await this.getLastAuthUser(),\n };\n if (signInDetails) {\n tokens.signInDetails = JSON.parse(signInDetails);\n }\n return tokens;\n }\n catch (err) {\n return null;\n }\n }\n async storeTokens(tokens) {\n assert(tokens !== undefined, TokenProviderErrorCode.InvalidAuthTokens);\n await this.clearTokens();\n const lastAuthUser = tokens.username;\n await this.getKeyValueStorage().setItem(this.getLastAuthUserKey(), lastAuthUser);\n const authKeys = await this.getAuthKeys();\n await this.getKeyValueStorage().setItem(authKeys.accessToken, tokens.accessToken.toString());\n if (tokens.idToken) {\n await this.getKeyValueStorage().setItem(authKeys.idToken, tokens.idToken.toString());\n }\n if (tokens.refreshToken) {\n await this.getKeyValueStorage().setItem(authKeys.refreshToken, tokens.refreshToken);\n }\n if (tokens.deviceMetadata) {\n if (tokens.deviceMetadata.deviceKey) {\n await this.getKeyValueStorage().setItem(authKeys.deviceKey, tokens.deviceMetadata.deviceKey);\n }\n if (tokens.deviceMetadata.deviceGroupKey) {\n await this.getKeyValueStorage().setItem(authKeys.deviceGroupKey, tokens.deviceMetadata.deviceGroupKey);\n }\n await this.getKeyValueStorage().setItem(authKeys.randomPasswordKey, tokens.deviceMetadata.randomPassword);\n }\n if (tokens.signInDetails) {\n await this.getKeyValueStorage().setItem(authKeys.signInDetails, JSON.stringify(tokens.signInDetails));\n }\n await this.getKeyValueStorage().setItem(authKeys.clockDrift, `${tokens.clockDrift}`);\n }\n async clearTokens() {\n const authKeys = await this.getAuthKeys();\n // Not calling clear because it can remove data that is not managed by AuthTokenStore\n await Promise.all([\n this.getKeyValueStorage().removeItem(authKeys.accessToken),\n this.getKeyValueStorage().removeItem(authKeys.idToken),\n this.getKeyValueStorage().removeItem(authKeys.clockDrift),\n this.getKeyValueStorage().removeItem(authKeys.refreshToken),\n this.getKeyValueStorage().removeItem(authKeys.signInDetails),\n this.getKeyValueStorage().removeItem(this.getLastAuthUserKey()),\n this.getKeyValueStorage().removeItem(authKeys.oauthMetadata),\n ]);\n }\n async getDeviceMetadata(username) {\n const authKeys = await this.getAuthKeys(username);\n const deviceKey = await this.getKeyValueStorage().getItem(authKeys.deviceKey);\n const deviceGroupKey = await this.getKeyValueStorage().getItem(authKeys.deviceGroupKey);\n const randomPassword = await this.getKeyValueStorage().getItem(authKeys.randomPasswordKey);\n return randomPassword && deviceGroupKey && deviceKey\n ? {\n deviceKey,\n deviceGroupKey,\n randomPassword,\n }\n : null;\n }\n async clearDeviceMetadata(username) {\n const authKeys = await this.getAuthKeys(username);\n await Promise.all([\n this.getKeyValueStorage().removeItem(authKeys.deviceKey),\n this.getKeyValueStorage().removeItem(authKeys.deviceGroupKey),\n this.getKeyValueStorage().removeItem(authKeys.randomPasswordKey),\n ]);\n }\n async getAuthKeys(username) {\n assertTokenProviderConfig(this.authConfig?.Cognito);\n const lastAuthUser = username ?? (await this.getLastAuthUser());\n return createKeysForAuthStorage(this.name, `${this.authConfig.Cognito.userPoolClientId}.${lastAuthUser}`);\n }\n getLastAuthUserKey() {\n assertTokenProviderConfig(this.authConfig?.Cognito);\n const identifier = this.authConfig.Cognito.userPoolClientId;\n return `${this.name}.${identifier}.LastAuthUser`;\n }\n async getLastAuthUser() {\n const lastAuthUser = (await this.getKeyValueStorage().getItem(this.getLastAuthUserKey())) ??\n 'username';\n return lastAuthUser;\n }\n async setOAuthMetadata(metadata) {\n const { oauthMetadata: oauthMetadataKey } = await this.getAuthKeys();\n await this.getKeyValueStorage().setItem(oauthMetadataKey, JSON.stringify(metadata));\n }\n async getOAuthMetadata() {\n const { oauthMetadata: oauthMetadataKey } = await this.getAuthKeys();\n const oauthMetadata = await this.getKeyValueStorage().getItem(oauthMetadataKey);\n return oauthMetadata && JSON.parse(oauthMetadata);\n }\n}\nexport const createKeysForAuthStorage = (provider, identifier) => {\n return getAuthStorageKeys(AuthTokenStorageKeys)(`${provider}`, identifier);\n};\nexport function getAuthStorageKeys(authKeys) {\n const keys = Object.values({ ...authKeys });\n return (prefix, identifier) => keys.reduce((acc, authKey) => ({\n ...acc,\n [authKey]: `${prefix}.${identifier}.${authKey}`,\n }), {});\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const isBrowser = () => typeof window !== 'undefined' && typeof window.document !== 'undefined';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function isTokenExpired({ expiresAt, clockDrift, tolerance = 5000, }) {\n const currentTime = Date.now();\n return currentTime + clockDrift + tolerance > expiresAt;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { getAuthStorageKeys } from '../tokenProvider/TokenStore';\nimport { OAuthStorageKeys } from './types';\nconst V5_HOSTED_UI_KEY = 'amplify-signin-with-hostedUI';\nconst name = 'CognitoIdentityServiceProvider';\nexport class DefaultOAuthStore {\n constructor(keyValueStorage) {\n this.keyValueStorage = keyValueStorage;\n }\n async clearOAuthInflightData() {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n await Promise.all([\n this.keyValueStorage.removeItem(authKeys.inflightOAuth),\n this.keyValueStorage.removeItem(authKeys.oauthPKCE),\n this.keyValueStorage.removeItem(authKeys.oauthState),\n ]);\n }\n async clearOAuthData() {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n await this.clearOAuthInflightData();\n await this.keyValueStorage.removeItem(V5_HOSTED_UI_KEY); // remove in case a customer migrated an App from v5 to v6\n return this.keyValueStorage.removeItem(authKeys.oauthSignIn);\n }\n loadOAuthState() {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n return this.keyValueStorage.getItem(authKeys.oauthState);\n }\n storeOAuthState(state) {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n return this.keyValueStorage.setItem(authKeys.oauthState, state);\n }\n loadPKCE() {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n return this.keyValueStorage.getItem(authKeys.oauthPKCE);\n }\n storePKCE(pkce) {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n return this.keyValueStorage.setItem(authKeys.oauthPKCE, pkce);\n }\n setAuthConfig(authConfigParam) {\n this.cognitoConfig = authConfigParam;\n }\n async loadOAuthInFlight() {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n return ((await this.keyValueStorage.getItem(authKeys.inflightOAuth)) === 'true');\n }\n async storeOAuthInFlight(inflight) {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n await this.keyValueStorage.setItem(authKeys.inflightOAuth, `${inflight}`);\n }\n async loadOAuthSignIn() {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n const isLegacyHostedUISignIn = await this.keyValueStorage.getItem(V5_HOSTED_UI_KEY);\n const [isOAuthSignIn, preferPrivateSession] = (await this.keyValueStorage.getItem(authKeys.oauthSignIn))?.split(',') ??\n [];\n return {\n isOAuthSignIn: isOAuthSignIn === 'true' || isLegacyHostedUISignIn === 'true',\n preferPrivateSession: preferPrivateSession === 'true',\n };\n }\n async storeOAuthSignIn(oauthSignIn, preferPrivateSession = false) {\n assertTokenProviderConfig(this.cognitoConfig);\n const authKeys = createKeysForAuthStorage(name, this.cognitoConfig.userPoolClientId);\n await this.keyValueStorage.setItem(authKeys.oauthSignIn, `${oauthSignIn},${preferPrivateSession}`);\n }\n}\nconst createKeysForAuthStorage = (provider, identifier) => {\n return getAuthStorageKeys(OAuthStorageKeys)(provider, identifier);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage } from '@aws-amplify/core';\nimport { DefaultOAuthStore } from '../signInWithRedirectStore';\nexport const oAuthStore = new DefaultOAuthStore(defaultStorage);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst inflightPromises = [];\nexport const addInflightPromise = (resolver) => {\n inflightPromises.push(resolver);\n};\nexport const resolveAndClearInflightPromises = () => {\n while (inflightPromises.length) {\n inflightPromises.pop()?.();\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Hub, } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL, AmplifyErrorCode, assertTokenProviderConfig, isBrowser, isTokenExpired, } from '@aws-amplify/core/internals/utils';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { AuthError } from '../../../errors/AuthError';\nimport { oAuthStore } from '../utils/oauth/oAuthStore';\nimport { addInflightPromise } from '../utils/oauth/inflightPromise';\nexport class TokenOrchestrator {\n constructor() {\n this.waitForInflightOAuth = isBrowser()\n ? async () => {\n if (!(await oAuthStore.loadOAuthInFlight())) {\n return;\n }\n if (this.inflightPromise) {\n return this.inflightPromise;\n }\n // when there is valid oauth config and there is an inflight oauth flow, try\n // to block async calls that require fetching tokens before the oauth flow completes\n // e.g. getCurrentUser, fetchAuthSession etc.\n this.inflightPromise = new Promise((resolve, _reject) => {\n addInflightPromise(resolve);\n });\n return this.inflightPromise;\n }\n : async () => {\n // no-op for non-browser environments\n };\n }\n setAuthConfig(authConfig) {\n oAuthStore.setAuthConfig(authConfig.Cognito);\n this.authConfig = authConfig;\n }\n setTokenRefresher(tokenRefresher) {\n this.tokenRefresher = tokenRefresher;\n }\n setAuthTokenStore(tokenStore) {\n this.tokenStore = tokenStore;\n }\n getTokenStore() {\n if (!this.tokenStore) {\n throw new AuthError({\n name: 'EmptyTokenStoreException',\n message: 'TokenStore not set',\n });\n }\n return this.tokenStore;\n }\n getTokenRefresher() {\n if (!this.tokenRefresher) {\n throw new AuthError({\n name: 'EmptyTokenRefresherException',\n message: 'TokenRefresher not set',\n });\n }\n return this.tokenRefresher;\n }\n async getTokens(options) {\n let tokens;\n try {\n assertTokenProviderConfig(this.authConfig?.Cognito);\n }\n catch (_err) {\n // Token provider not configured\n return null;\n }\n await this.waitForInflightOAuth();\n this.inflightPromise = undefined;\n tokens = await this.getTokenStore().loadTokens();\n const username = await this.getTokenStore().getLastAuthUser();\n if (tokens === null) {\n return null;\n }\n const idTokenExpired = !!tokens?.idToken &&\n isTokenExpired({\n expiresAt: (tokens.idToken?.payload?.exp ?? 0) * 1000,\n clockDrift: tokens.clockDrift ?? 0,\n });\n const accessTokenExpired = isTokenExpired({\n expiresAt: (tokens.accessToken?.payload?.exp ?? 0) * 1000,\n clockDrift: tokens.clockDrift ?? 0,\n });\n if (options?.forceRefresh || idTokenExpired || accessTokenExpired) {\n tokens = await this.refreshTokens({\n tokens,\n username,\n });\n if (tokens === null) {\n return null;\n }\n }\n return {\n accessToken: tokens?.accessToken,\n idToken: tokens?.idToken,\n signInDetails: tokens?.signInDetails,\n };\n }\n async refreshTokens({ tokens, username, }) {\n try {\n const { signInDetails } = tokens;\n const newTokens = await this.getTokenRefresher()({\n tokens,\n authConfig: this.authConfig,\n username,\n });\n newTokens.signInDetails = signInDetails;\n await this.setTokens({ tokens: newTokens });\n Hub.dispatch('auth', { event: 'tokenRefresh' }, 'Auth', AMPLIFY_SYMBOL);\n return newTokens;\n }\n catch (err) {\n return this.handleErrors(err);\n }\n }\n handleErrors(err) {\n assertServiceError(err);\n if (err.name !== AmplifyErrorCode.NetworkError) {\n // TODO(v6): Check errors on client\n this.clearTokens();\n }\n Hub.dispatch('auth', {\n event: 'tokenRefresh_failure',\n data: { error: err },\n }, 'Auth', AMPLIFY_SYMBOL);\n if (err.name.startsWith('NotAuthorizedException')) {\n return null;\n }\n throw err;\n }\n async setTokens({ tokens }) {\n return this.getTokenStore().storeTokens(tokens);\n }\n async clearTokens() {\n return this.getTokenStore().clearTokens();\n }\n getDeviceMetadata(username) {\n return this.getTokenStore().getDeviceMetadata(username);\n }\n clearDeviceMetadata(username) {\n return this.getTokenStore().clearDeviceMetadata(username);\n }\n setOAuthMetadata(metadata) {\n return this.getTokenStore().setOAuthMetadata(metadata);\n }\n getOAuthMetadata() {\n return this.getTokenStore().getOAuthMetadata();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CognitoUserPoolsTokenProvider } from './CognitoUserPoolsTokenProvider';\n/**\n * The default provider for the JWT access token and ID token issued from the configured Cognito user pool. It manages\n * the refresh and storage of the tokens. It stores the tokens in `window.localStorage` if available, and falls back to\n * in-memory storage if not.\n */\nexport const cognitoUserPoolsTokenProvider = new CognitoUserPoolsTokenProvider();\nexport const { tokenOrchestrator } = cognitoUserPoolsTokenProvider;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage, } from '@aws-amplify/core';\nimport { refreshAuthTokens } from '../utils/refreshAuthTokens';\nimport { DefaultTokenStore } from './TokenStore';\nimport { TokenOrchestrator } from './TokenOrchestrator';\nexport class CognitoUserPoolsTokenProvider {\n constructor() {\n this.authTokenStore = new DefaultTokenStore();\n this.authTokenStore.setKeyValueStorage(defaultStorage);\n this.tokenOrchestrator = new TokenOrchestrator();\n this.tokenOrchestrator.setAuthTokenStore(this.authTokenStore);\n this.tokenOrchestrator.setTokenRefresher(refreshAuthTokens);\n }\n getTokens({ forceRefresh } = { forceRefresh: false }) {\n return this.tokenOrchestrator.getTokens({ forceRefresh });\n }\n setKeyValueStorage(keyValueStorage) {\n this.authTokenStore.setKeyValueStorage(keyValueStorage);\n }\n setAuthConfig(authConfig) {\n this.authTokenStore.setAuthConfig(authConfig);\n this.tokenOrchestrator.setAuthConfig(authConfig);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const IdentityIdStorageKeys = {\n identityId: 'identityId',\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger, } from '@aws-amplify/core';\nimport { assertIdentityPoolIdConfig } from '@aws-amplify/core/internals/utils';\nimport { getAuthStorageKeys } from '../tokenProvider/TokenStore';\nimport { IdentityIdStorageKeys } from './types';\nconst logger = new ConsoleLogger('DefaultIdentityIdStore');\nexport class DefaultIdentityIdStore {\n setAuthConfig(authConfigParam) {\n assertIdentityPoolIdConfig(authConfigParam.Cognito);\n this.authConfig = authConfigParam;\n this._authKeys = createKeysForAuthStorage('Cognito', authConfigParam.Cognito.identityPoolId);\n }\n constructor(keyValueStorage) {\n this._authKeys = {};\n this._hasGuestIdentityId = false;\n this.keyValueStorage = keyValueStorage;\n }\n async loadIdentityId() {\n assertIdentityPoolIdConfig(this.authConfig?.Cognito);\n try {\n if (this._primaryIdentityId) {\n return {\n id: this._primaryIdentityId,\n type: 'primary',\n };\n }\n else {\n const storedIdentityId = await this.keyValueStorage.getItem(this._authKeys.identityId);\n if (storedIdentityId) {\n this._hasGuestIdentityId = true;\n return {\n id: storedIdentityId,\n type: 'guest',\n };\n }\n return null;\n }\n }\n catch (err) {\n logger.log('Error getting stored IdentityId.', err);\n return null;\n }\n }\n async storeIdentityId(identity) {\n assertIdentityPoolIdConfig(this.authConfig?.Cognito);\n if (identity.type === 'guest') {\n this.keyValueStorage.setItem(this._authKeys.identityId, identity.id);\n // Clear in-memory storage of primary identityId\n this._primaryIdentityId = undefined;\n this._hasGuestIdentityId = true;\n }\n else {\n this._primaryIdentityId = identity.id;\n // Clear locally stored guest id\n if (this._hasGuestIdentityId) {\n this.keyValueStorage.removeItem(this._authKeys.identityId);\n this._hasGuestIdentityId = false;\n }\n }\n }\n async clearIdentityId() {\n this._primaryIdentityId = undefined;\n await this.keyValueStorage.removeItem(this._authKeys.identityId);\n }\n}\nconst createKeysForAuthStorage = (provider, identifier) => {\n return getAuthStorageKeys(IdentityIdStorageKeys)(`com.amplify.${provider}`, identifier);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getDnsSuffix, parseJsonError, unauthenticatedHandler, } from '../../clients';\nimport { composeTransferHandler } from '../../clients/internal/composeTransferHandler';\nimport { getRetryDecider, jitteredBackoff, } from '../../clients/middleware/retry';\nimport { getAmplifyUserAgent } from '../../Platform';\nimport { observeFrameworkChanges } from '../../Platform/detectFramework';\nimport { AmplifyUrl } from '../../utils/amplifyUrl';\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nconst SERVICE_NAME = 'cognito-identity';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region.\n */\nconst endpointResolver = ({ region }) => ({\n url: new AmplifyUrl(`https://cognito-identity.${region}.${getDnsSuffix(region)}`),\n});\n/**\n * A Cognito Identity-specific middleware that disables caching for all requests.\n */\nconst disableCacheMiddlewareFactory = () => next => async function disableCacheMiddleware(request) {\n request.headers['cache-control'] = 'no-store';\n return next(request);\n};\n/**\n * A Cognito Identity-specific transfer handler that does NOT sign requests, and\n * disables caching.\n *\n * @internal\n */\nexport const cognitoIdentityTransferHandler = composeTransferHandler(unauthenticatedHandler, [disableCacheMiddlewareFactory]);\n/**\n * @internal\n */\nexport const defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver,\n retryDecider: getRetryDecider(parseJsonError),\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n cache: 'no-store',\n};\nobserveFrameworkChanges(() => {\n defaultConfig.userAgentValue = getAmplifyUserAgent();\n});\n/**\n * @internal\n */\nexport const getSharedHeaders = (operation) => ({\n 'content-type': 'application/x-amz-json-1.1',\n 'x-amz-target': `AWSCognitoIdentityService.${operation}`,\n});\n/**\n * @internal\n */\nexport const buildHttpRpcRequest = ({ url }, headers, body) => ({\n headers,\n url,\n body,\n method: 'POST',\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseJsonBody, parseJsonError, parseMetadata, } from '../../clients';\nimport { composeServiceApi } from '../../clients/internal';\nimport { buildHttpRpcRequest, cognitoIdentityTransferHandler, defaultConfig, getSharedHeaders, } from './base';\nconst getCredentialsForIdentitySerializer = (input, endpoint) => {\n const headers = getSharedHeaders('GetCredentialsForIdentity');\n const body = JSON.stringify(input);\n return buildHttpRpcRequest(endpoint, headers, body);\n};\nconst getCredentialsForIdentityDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = await parseJsonError(response);\n throw error;\n }\n else {\n const body = await parseJsonBody(response);\n return {\n IdentityId: body.IdentityId,\n Credentials: deserializeCredentials(body.Credentials),\n $metadata: parseMetadata(response),\n };\n }\n};\nconst deserializeCredentials = ({ AccessKeyId, SecretKey, SessionToken, Expiration, } = {}) => {\n return {\n AccessKeyId,\n SecretKey,\n SessionToken,\n Expiration: Expiration && new Date(Expiration * 1000),\n };\n};\n/**\n * @internal\n */\nexport const getCredentialsForIdentity = composeServiceApi(cognitoIdentityTransferHandler, getCredentialsForIdentitySerializer, getCredentialsForIdentityDeserializer, defaultConfig);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseJsonBody, parseJsonError, parseMetadata, } from '../../clients';\nimport { composeServiceApi } from '../../clients/internal';\nimport { buildHttpRpcRequest, cognitoIdentityTransferHandler, defaultConfig, getSharedHeaders, } from './base';\nconst getIdSerializer = (input, endpoint) => {\n const headers = getSharedHeaders('GetId');\n const body = JSON.stringify(input);\n return buildHttpRpcRequest(endpoint, headers, body);\n};\nconst getIdDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = await parseJsonError(response);\n throw error;\n }\n else {\n const body = await parseJsonBody(response);\n return {\n IdentityId: body.IdentityId,\n $metadata: parseMetadata(response),\n };\n }\n};\n/**\n * @internal\n */\nexport const getId = composeServiceApi(cognitoIdentityTransferHandler, getIdSerializer, getIdDeserializer, defaultConfig);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { decodeJWT } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nexport function formLoginsMap(idToken) {\n const issuer = decodeJWT(idToken).payload.iss;\n const res = {};\n if (!issuer) {\n throw new AuthError({\n name: 'InvalidIdTokenException',\n message: 'Invalid Idtoken.',\n });\n }\n const domainName = issuer.replace(/(^\\w+:|^)\\/\\//, '');\n res[domainName] = idToken;\n return res;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger, getId } from '@aws-amplify/core';\nimport { AuthError } from '../../../errors/AuthError';\nimport { getRegionFromIdentityPoolId } from '../../../foundation/parsers';\nimport { formLoginsMap } from './utils';\nconst logger = new ConsoleLogger('CognitoIdentityIdProvider');\n/**\n * Provides a Cognito identityId\n *\n * @param tokens - The AuthTokens received after SignIn\n * @returns string\n * @throws configuration exceptions: `InvalidIdentityPoolIdException`\n * - Auth errors that may arise from misconfiguration.\n * @throws service exceptions: {@link GetIdException }\n */\nexport async function cognitoIdentityIdProvider({ tokens, authConfig, identityIdStore, }) {\n identityIdStore.setAuthConfig({ Cognito: authConfig });\n // will return null only if there is no identityId cached or if there is an error retrieving it\n let identityId = await identityIdStore.loadIdentityId();\n // Tokens are available so return primary identityId\n if (tokens) {\n // If there is existing primary identityId in-memory return that\n if (identityId && identityId.type === 'primary') {\n return identityId.id;\n }\n else {\n const logins = tokens.idToken\n ? formLoginsMap(tokens.idToken.toString())\n : {};\n const generatedIdentityId = await generateIdentityId(logins, authConfig);\n if (identityId && identityId.id === generatedIdentityId) {\n logger.debug(`The guest identity ${identityId.id} has become the primary identity.`);\n }\n identityId = {\n id: generatedIdentityId,\n type: 'primary',\n };\n }\n }\n else {\n // If there is existing guest identityId cached return that\n if (identityId && identityId.type === 'guest') {\n return identityId.id;\n }\n else {\n identityId = {\n id: await generateIdentityId({}, authConfig),\n type: 'guest',\n };\n }\n }\n // Store in-memory or local storage depending on guest or primary identityId\n identityIdStore.storeIdentityId(identityId);\n return identityId.id;\n}\nasync function generateIdentityId(logins, authConfig) {\n const identityPoolId = authConfig?.identityPoolId;\n const region = getRegionFromIdentityPoolId(identityPoolId);\n // IdentityId is absent so get it using IdentityPoolId with Cognito's GetId API\n const idResult = \n // for a first-time user, this will return a brand new identity\n // for a returning user, this will retrieve the previous identity assocaited with the logins\n (await getId({\n region,\n }, {\n IdentityPoolId: identityPoolId,\n Logins: logins,\n })).IdentityId;\n if (!idResult) {\n throw new AuthError({\n name: 'GetIdResponseException',\n message: 'Received undefined response from getId operation',\n recoverySuggestion: 'Make sure to pass a valid identityPoolId in the configuration.',\n });\n }\n return idResult;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger, getCredentialsForIdentity, } from '@aws-amplify/core';\nimport { assertIdentityPoolIdConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { getRegionFromIdentityPoolId } from '../../../foundation/parsers';\nimport { assertIdTokenInAuthTokens } from '../utils/types';\nimport { cognitoIdentityIdProvider } from './IdentityIdProvider';\nimport { formLoginsMap } from './utils';\nconst logger = new ConsoleLogger('CognitoCredentialsProvider');\nconst CREDENTIALS_TTL = 50 * 60 * 1000; // 50 min, can be modified on config if required in the future\nexport class CognitoAWSCredentialsAndIdentityIdProvider {\n constructor(identityIdStore) {\n this._nextCredentialsRefresh = 0;\n this._identityIdStore = identityIdStore;\n }\n async clearCredentialsAndIdentityId() {\n logger.debug('Clearing out credentials and identityId');\n this._credentialsAndIdentityId = undefined;\n await this._identityIdStore.clearIdentityId();\n }\n async clearCredentials() {\n logger.debug('Clearing out in-memory credentials');\n this._credentialsAndIdentityId = undefined;\n }\n async getCredentialsAndIdentityId(getCredentialsOptions) {\n const isAuthenticated = getCredentialsOptions.authenticated;\n const { tokens } = getCredentialsOptions;\n const { authConfig } = getCredentialsOptions;\n try {\n assertIdentityPoolIdConfig(authConfig?.Cognito);\n }\n catch {\n // No identity pool configured, skipping\n return;\n }\n if (!isAuthenticated && !authConfig.Cognito.allowGuestAccess) {\n // TODO(V6): return partial result like Native platforms\n return;\n }\n const { forceRefresh } = getCredentialsOptions;\n const tokenHasChanged = this.hasTokenChanged(tokens);\n const identityId = await cognitoIdentityIdProvider({\n tokens,\n authConfig: authConfig.Cognito,\n identityIdStore: this._identityIdStore,\n });\n // Clear cached credentials when forceRefresh is true OR the cache token has changed\n if (forceRefresh || tokenHasChanged) {\n this.clearCredentials();\n }\n if (!isAuthenticated) {\n return this.getGuestCredentials(identityId, authConfig.Cognito);\n }\n else {\n assertIdTokenInAuthTokens(tokens);\n return this.credsForOIDCTokens(authConfig.Cognito, tokens, identityId);\n }\n }\n async getGuestCredentials(identityId, authConfig) {\n // Return existing in-memory cached credentials only if it exists, is not past it's lifetime and is unauthenticated credentials\n if (this._credentialsAndIdentityId &&\n !this.isPastTTL() &&\n this._credentialsAndIdentityId.isAuthenticatedCreds === false) {\n logger.info('returning stored credentials as they neither past TTL nor expired.');\n return this._credentialsAndIdentityId;\n }\n // Clear to discard if any authenticated credentials are set and start with a clean slate\n this.clearCredentials();\n const region = getRegionFromIdentityPoolId(authConfig.identityPoolId);\n // use identityId to obtain guest credentials\n // save credentials in-memory\n // No logins params should be passed for guest creds:\n // https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html\n const clientResult = await getCredentialsForIdentity({ region }, {\n IdentityId: identityId,\n });\n if (clientResult.Credentials &&\n clientResult.Credentials.AccessKeyId &&\n clientResult.Credentials.SecretKey) {\n this._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n const res = {\n credentials: {\n accessKeyId: clientResult.Credentials.AccessKeyId,\n secretAccessKey: clientResult.Credentials.SecretKey,\n sessionToken: clientResult.Credentials.SessionToken,\n expiration: clientResult.Credentials.Expiration,\n },\n identityId,\n };\n const identityIdRes = clientResult.IdentityId;\n if (identityIdRes) {\n res.identityId = identityIdRes;\n this._identityIdStore.storeIdentityId({\n id: identityIdRes,\n type: 'guest',\n });\n }\n this._credentialsAndIdentityId = {\n ...res,\n isAuthenticatedCreds: false,\n };\n return res;\n }\n else {\n throw new AuthError({\n name: 'CredentialsNotFoundException',\n message: `Cognito did not respond with either Credentials, AccessKeyId or SecretKey.`,\n });\n }\n }\n async credsForOIDCTokens(authConfig, authTokens, identityId) {\n if (this._credentialsAndIdentityId &&\n !this.isPastTTL() &&\n this._credentialsAndIdentityId.isAuthenticatedCreds === true) {\n logger.debug('returning stored credentials as they neither past TTL nor expired.');\n return this._credentialsAndIdentityId;\n }\n // Clear to discard if any unauthenticated credentials are set and start with a clean slate\n this.clearCredentials();\n const logins = authTokens.idToken\n ? formLoginsMap(authTokens.idToken.toString())\n : {};\n const region = getRegionFromIdentityPoolId(authConfig.identityPoolId);\n const clientResult = await getCredentialsForIdentity({ region }, {\n IdentityId: identityId,\n Logins: logins,\n });\n if (clientResult.Credentials &&\n clientResult.Credentials.AccessKeyId &&\n clientResult.Credentials.SecretKey) {\n const res = {\n credentials: {\n accessKeyId: clientResult.Credentials.AccessKeyId,\n secretAccessKey: clientResult.Credentials.SecretKey,\n sessionToken: clientResult.Credentials.SessionToken,\n expiration: clientResult.Credentials.Expiration,\n },\n identityId,\n };\n // Store the credentials in-memory along with the expiration\n this._credentialsAndIdentityId = {\n ...res,\n isAuthenticatedCreds: true,\n associatedIdToken: authTokens.idToken?.toString(),\n };\n this._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n const identityIdRes = clientResult.IdentityId;\n if (identityIdRes) {\n res.identityId = identityIdRes;\n this._identityIdStore.storeIdentityId({\n id: identityIdRes,\n type: 'primary',\n });\n }\n return res;\n }\n else {\n throw new AuthError({\n name: 'CredentialsException',\n message: `Cognito did not respond with either Credentials, AccessKeyId or SecretKey.`,\n });\n }\n }\n isPastTTL() {\n return this._nextCredentialsRefresh === undefined\n ? true\n : this._nextCredentialsRefresh <= Date.now();\n }\n hasTokenChanged(tokens) {\n return (!!tokens &&\n !!this._credentialsAndIdentityId?.associatedIdToken &&\n tokens.idToken?.toString() !==\n this._credentialsAndIdentityId.associatedIdToken);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { defaultStorage } from '@aws-amplify/core';\nimport { DefaultIdentityIdStore } from './IdentityIdStore';\nimport { CognitoAWSCredentialsAndIdentityIdProvider } from './credentialsProvider';\n/**\n * Cognito specific implmentation of the CredentialsProvider interface\n * that manages setting and getting of AWS Credentials.\n *\n * @throws configuration expections: `InvalidIdentityPoolIdException`\n * - Auth errors that may arise from misconfiguration.\n * @throws service expections: {@link GetCredentialsForIdentityException}, {@link GetIdException}\n *\n */\nexport const cognitoCredentialsProvider = new CognitoAWSCredentialsAndIdentityIdProvider(new DefaultIdentityIdStore(defaultStorage));\nexport { CognitoAWSCredentialsAndIdentityIdProvider, DefaultIdentityIdStore };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify, CookieStorage, defaultStorage, } from '@aws-amplify/core';\nimport { parseAmplifyConfig, } from '@aws-amplify/core/internals/utils';\nimport { cognitoCredentialsProvider, cognitoUserPoolsTokenProvider, } from './auth/cognito';\nexport const DefaultAmplify = {\n /**\n * Configures Amplify with the {@link resourceConfig} and {@link libraryOptions}.\n *\n * @param resourceConfig The {@link ResourcesConfig} object that is typically imported from the\n * `amplifyconfiguration.json` file. It can also be an object literal created inline when calling `Amplify.configure`.\n * @param libraryOptions The {@link LibraryOptions} additional options for the library.\n *\n * @example\n * import config from './amplifyconfiguration.json';\n *\n * Amplify.configure(config);\n */\n configure(resourceConfig, libraryOptions) {\n const resolvedResourceConfig = parseAmplifyConfig(resourceConfig);\n // If no Auth config is provided, no special handling will be required, configure as is.\n // Otherwise, we can assume an Auth config is provided from here on.\n if (!resolvedResourceConfig.Auth) {\n Amplify.configure(resolvedResourceConfig, libraryOptions);\n return;\n }\n // If Auth options are provided, always just configure as is.\n // Otherwise, we can assume no Auth libraryOptions were provided from here on.\n if (libraryOptions?.Auth) {\n Amplify.configure(resolvedResourceConfig, libraryOptions);\n return;\n }\n // If no Auth libraryOptions were previously configured, then always add default providers.\n if (!Amplify.libraryOptions.Auth) {\n cognitoUserPoolsTokenProvider.setAuthConfig(resolvedResourceConfig.Auth);\n cognitoUserPoolsTokenProvider.setKeyValueStorage(\n // TODO: allow configure with a public interface\n libraryOptions?.ssr\n ? new CookieStorage({ sameSite: 'lax' })\n : defaultStorage);\n Amplify.configure(resolvedResourceConfig, {\n ...libraryOptions,\n Auth: {\n tokenProvider: cognitoUserPoolsTokenProvider,\n credentialsProvider: cognitoCredentialsProvider,\n },\n });\n return;\n }\n // At this point, Auth libraryOptions would have been previously configured and no overriding\n // Auth options were given, so we should preserve the currently configured Auth libraryOptions.\n if (libraryOptions) {\n // If ssr is provided through libraryOptions, we should respect the intentional reconfiguration.\n if (libraryOptions.ssr !== undefined) {\n cognitoUserPoolsTokenProvider.setKeyValueStorage(\n // TODO: allow configure with a public interface\n libraryOptions.ssr\n ? new CookieStorage({ sameSite: 'lax' })\n : defaultStorage);\n }\n Amplify.configure(resolvedResourceConfig, {\n Auth: Amplify.libraryOptions.Auth,\n ...libraryOptions,\n });\n return;\n }\n // Finally, if there were no libraryOptions given at all, we should simply not touch the currently\n // configured libraryOptions.\n Amplify.configure(resolvedResourceConfig);\n },\n /**\n * Returns the {@link ResourcesConfig} object passed in as the `resourceConfig` parameter when calling\n * `Amplify.configure`.\n *\n * @returns An {@link ResourcesConfig} object.\n */\n getConfig() {\n return Amplify.getConfig();\n },\n};\n","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;","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import 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","\"use client\";\n\nimport * 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;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarBrand = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n const Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, bsPrefix)\n });\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","/**\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}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import * as React from 'react';\nexport function isEscKey(e) {\n return e.code === 'Escape' || e.keyCode === 27;\n}\nexport function getReactVersion() {\n const parts = React.version.split('.');\n return {\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2]\n };\n}\nexport function getChildRef(element) {\n if (!element || typeof element === 'function') {\n return null;\n }\n const {\n major\n } = getReactVersion();\n const childRef = major >= 19 ? element.props.ref : element.ref;\n return childRef;\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* 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;","/**\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;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nfunction parseDuration(node, property) {\n const str = css(node, property) || '';\n const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\nexport default function transitionEndListener(element, handler) {\n const duration = parseDuration(element, 'transitionDuration');\n const delay = parseDuration(element, 'transitionDelay');\n const remove = transitionEnd(element, e => {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction(...funcs) {\n return funcs.filter(f => f != null).reduce((acc, f) => {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n if (acc === null) return f;\n return function chainedFunction(...args) {\n // @ts-ignore\n acc.apply(this, args);\n // @ts-ignore\n f.apply(this, args);\n };\n }, null);\n}\nexport default createChainedFunction;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\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 */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n return componentOrElement != null ? componentOrElement : null;\n}","\"use client\";\n\nimport React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children,\n childRef,\n ...props\n}, ref) => {\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, childRef);\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n\n /* eslint-disable react-hooks/exhaustive-deps */\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n return /*#__PURE__*/_jsx(Transition, {\n ref: ref,\n ...props,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n children: typeof children === 'function' ? (status, innerProps) =>\n // TODO: Types for RTG missing innerProps, so need to cast.\n children(status, {\n ...innerProps,\n ref: attachRef\n }) : /*#__PURE__*/React.cloneElement(children, {\n ref: attachRef\n })\n });\n});\nexport default TransitionWrapper;","import classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\nfunction getDefaultDimensionValue(dimension, elem) {\n const offset = `offset${dimension[0].toUpperCase()}${dimension.slice(1)}`;\n const value = elem[offset];\n const margins = MARGINS[dimension];\n return value +\n // @ts-ignore\n parseInt(css(elem, margins[0]), 10) +\n // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\nconst collapseStyles = {\n [EXITED]: 'collapse',\n [EXITING]: 'collapsing',\n [ENTERING]: 'collapsing',\n [ENTERED]: 'collapse show'\n};\nconst Collapse = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n className,\n children,\n dimension = 'height',\n in: inProp = false,\n timeout = 300,\n mountOnEnter = false,\n unmountOnExit = false,\n appear = false,\n getDimensionValue = getDefaultDimensionValue,\n ...props\n}, ref) => {\n /* Compute dimension */\n const computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n\n /* -- Expanding -- */\n const handleEnter = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = '0';\n }, onEnter), [computedDimension, onEnter]);\n const handleEntering = useMemo(() => createChainedFunction(elem => {\n const scroll = `scroll${computedDimension[0].toUpperCase()}${computedDimension.slice(1)}`;\n elem.style[computedDimension] = `${elem[scroll]}px`;\n }, onEntering), [computedDimension, onEntering]);\n const handleEntered = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onEntered), [computedDimension, onEntered]);\n\n /* -- Collapsing -- */\n const handleExit = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = `${getDimensionValue(computedDimension, elem)}px`;\n triggerBrowserReflow(elem);\n }, onExit), [onExit, getDimensionValue, computedDimension]);\n const handleExiting = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onExiting), [computedDimension, onExiting]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n \"aria-expanded\": props.role ? inProp : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting,\n childRef: getChildRef(children),\n in: inProp,\n timeout: timeout,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n appear: appear,\n children: (state, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'collapse-horizontal')\n })\n });\n});\n\n// @ts-ignore\n\nexport default Collapse;","\"use client\";\n\nimport * as React from 'react';\n\n// TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarCollapse = /*#__PURE__*/React.forwardRef(({\n children,\n bsPrefix,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n const context = useContext(NavbarContext);\n return /*#__PURE__*/_jsx(Collapse, {\n in: !!(context && context.expanded),\n ...props,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: bsPrefix,\n children: children\n })\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import { useEffect, useRef } from 'react';\n\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 */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n label = 'Toggle navigation',\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 onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n const {\n onToggle,\n expanded\n } = useContext(NavbarContext) || {};\n const handleClick = useEventCallback(e => {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n if (Component === 'button') {\n props.type = 'button';\n }\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed'),\n children: children || /*#__PURE__*/_jsx(\"span\", {\n className: `${bsPrefix}-icon`\n })\n });\n});\nNavbarToggle.displayName = 'NavbarToggle';\nexport default NavbarToggle;","import { useEffect, useLayoutEffect } from 'react';\nconst isReactNative = typeof global !== 'undefined' &&\n// @ts-ignore\nglobal.navigator &&\n// @ts-ignore\nglobal.navigator.product === 'ReactNative';\nconst isDOM = typeof document !== 'undefined';\n\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 */\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;","import useEffect from './useIsomorphicEffect';\nimport { useState } from 'react';\nconst matchersByWindow = new WeakMap();\nconst getMatcher = (query, targetWindow) => {\n if (!query || !targetWindow) return undefined;\n const matchers = matchersByWindow.get(targetWindow) || new Map();\n matchersByWindow.set(targetWindow, matchers);\n let mql = matchers.get(query);\n if (!mql) {\n mql = targetWindow.matchMedia(query);\n mql.refCount = 0;\n matchers.set(mql.media, mql);\n }\n return mql;\n};\n/**\n * Match a media query and get updates as the match changes. The media string is\n * passed directly to `window.matchMedia` and run as a Layout Effect, so initial\n * matches are returned before the browser has a chance to paint.\n *\n * ```tsx\n * function Page() {\n * const isWide = useMediaQuery('min-width: 1000px')\n *\n * return isWide ? \"very wide\" : 'not so wide'\n * }\n * ```\n *\n * Media query lists are also reused globally, hook calls for the same query\n * will only create a matcher once under the hood.\n *\n * @param query A media query\n * @param targetWindow The window to match against, uses the globally available one as a default.\n */\nexport default function useMediaQuery(query, targetWindow = typeof window === 'undefined' ? undefined : window) {\n const mql = getMatcher(query, targetWindow);\n const [matches, setMatches] = useState(() => mql ? mql.matches : false);\n useEffect(() => {\n let mql = getMatcher(query, targetWindow);\n if (!mql) {\n return setMatches(false);\n }\n let matchers = matchersByWindow.get(targetWindow);\n const handleChange = () => {\n setMatches(mql.matches);\n };\n mql.refCount++;\n mql.addListener(handleChange);\n handleChange();\n return () => {\n mql.removeListener(handleChange);\n mql.refCount--;\n if (mql.refCount <= 0) {\n matchers == null ? void 0 : matchers.delete(mql.media);\n }\n mql = undefined;\n };\n }, [query]);\n return matches;\n}","import useMediaQuery from './useMediaQuery';\nimport { useMemo } from 'react';\n/**\n * Create a responsive hook we a set of breakpoint names and widths.\n * You can use any valid css units as well as a numbers (for pixels).\n *\n * **NOTE:** The object key order is important! it's assumed to be in order from smallest to largest\n *\n * ```ts\n * const useBreakpoint = createBreakpointHook({\n * xs: 0,\n * sm: 576,\n * md: 768,\n * lg: 992,\n * xl: 1200,\n * })\n * ```\n *\n * **Watch out!** using string values will sometimes construct media queries using css `calc()` which\n * is NOT supported in media queries by all browsers at the moment. use numbers for\n * the widest range of browser support.\n *\n * @param breakpointValues A object hash of names to breakpoint dimensions\n */\nexport function createBreakpointHook(breakpointValues) {\n const names = Object.keys(breakpointValues);\n function and(query, next) {\n if (query === next) {\n return next;\n }\n return query ? `${query} and ${next}` : next;\n }\n function getNext(breakpoint) {\n return names[Math.min(names.indexOf(breakpoint) + 1, names.length - 1)];\n }\n function getMaxQuery(breakpoint) {\n const next = getNext(breakpoint);\n let value = breakpointValues[next];\n if (typeof value === 'number') value = `${value - 0.2}px`;else value = `calc(${value} - 0.2px)`;\n return `(max-width: ${value})`;\n }\n function getMinQuery(breakpoint) {\n let value = breakpointValues[breakpoint];\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n return `(min-width: ${value})`;\n }\n\n /**\n * Match a set of breakpoints\n *\n * ```tsx\n * const MidSizeOnly = () => {\n * const isMid = useBreakpoint({ lg: 'down', sm: 'up' });\n *\n * if (isMid) return <div>On a Reasonable sized Screen!</div>\n * return null;\n * }\n * ```\n * @param breakpointMap An object map of breakpoints and directions, queries are constructed using \"and\" to join\n * breakpoints together\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n /**\n * Match a single breakpoint exactly, up, or down.\n *\n * ```tsx\n * const PhoneOnly = () => {\n * const isSmall = useBreakpoint('sm', 'down');\n *\n * if (isSmall) return <div>On a Small Screen!</div>\n * return null;\n * }\n * ```\n *\n * @param breakpoint The breakpoint key\n * @param direction A direction 'up' for a max, 'down' for min, true to match only the breakpoint\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n function useBreakpoint(breakpointOrMap, direction, window) {\n let breakpointMap;\n if (typeof breakpointOrMap === 'object') {\n breakpointMap = breakpointOrMap;\n window = direction;\n direction = true;\n } else {\n direction = direction || true;\n breakpointMap = {\n [breakpointOrMap]: direction\n };\n }\n let query = useMemo(() => Object.entries(breakpointMap).reduce((query, [key, direction]) => {\n if (direction === 'up' || direction === true) {\n query = and(query, getMinQuery(key));\n }\n if (direction === 'down' || direction === true) {\n query = and(query, getMaxQuery(key));\n }\n return query;\n }, ''), [JSON.stringify(breakpointMap)]);\n return useMediaQuery(query, window);\n }\n return useBreakpoint;\n}\nconst useBreakpoint = createBreakpointHook({\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n});\nexport default useBreakpoint;","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","/* 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 { useRef, useEffect } from 'react';\n\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 */\nexport default function useMounted() {\n const mounted = useRef(true);\n const isMounted = useRef(() => mounted.current);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @deprecated Use `useMounted` and normal effects, this is not StrictMode safe\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n const onUnmount = useUpdatedRef(fn);\n useEffect(() => () => onUnmount.current(), []);\n}","import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n const valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import { useEffect, useRef } from 'react';\n\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 */\nexport default function usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import { useEffect, useRef } from 'react';\n\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 */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","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}","import css from 'dom-helpers/css';\nimport { dataAttr } from './DataKey';\nimport getBodyScrollbarWidth from './getScrollbarWidth';\nexport const OPEN_DATA_ATTRIBUTE = dataAttr('modal-open');\n\n/**\n * Manages a stack of Modals as well as ensuring\n * body scrolling is is disabled and padding accounted for\n */\nclass ModalManager {\n constructor({\n ownerDocument,\n handleContainerOverflow = true,\n isRTL = false\n } = {}) {\n this.handleContainerOverflow = handleContainerOverflow;\n this.isRTL = isRTL;\n this.modals = [];\n this.ownerDocument = ownerDocument;\n }\n getScrollbarWidth() {\n return getBodyScrollbarWidth(this.ownerDocument);\n }\n getElement() {\n return (this.ownerDocument || document).body;\n }\n setModalAttributes(_modal) {\n // For overriding\n }\n removeModalAttributes(_modal) {\n // For overriding\n }\n setContainerStyle(containerState) {\n const style = {\n overflow: 'hidden'\n };\n\n // we are only interested in the actual `style` here\n // because we will override it\n const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n const container = this.getElement();\n containerState.style = {\n overflow: container.style.overflow,\n [paddingProp]: container.style[paddingProp]\n };\n if (containerState.scrollBarWidth) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style[paddingProp] = `${parseInt(css(container, paddingProp) || '0', 10) + containerState.scrollBarWidth}px`;\n }\n container.setAttribute(OPEN_DATA_ATTRIBUTE, '');\n css(container, style);\n }\n reset() {\n [...this.modals].forEach(m => this.remove(m));\n }\n removeContainerStyle(containerState) {\n const container = this.getElement();\n container.removeAttribute(OPEN_DATA_ATTRIBUTE);\n Object.assign(container.style, containerState.style);\n }\n add(modal) {\n let modalIdx = this.modals.indexOf(modal);\n if (modalIdx !== -1) {\n return modalIdx;\n }\n modalIdx = this.modals.length;\n this.modals.push(modal);\n this.setModalAttributes(modal);\n if (modalIdx !== 0) {\n return modalIdx;\n }\n this.state = {\n scrollBarWidth: this.getScrollbarWidth(),\n style: {}\n };\n if (this.handleContainerOverflow) {\n this.setContainerStyle(this.state);\n }\n return modalIdx;\n }\n remove(modal) {\n const modalIdx = this.modals.indexOf(modal);\n if (modalIdx === -1) {\n return;\n }\n this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (!this.modals.length && this.handleContainerOverflow) {\n this.removeContainerStyle(this.state);\n }\n this.removeModalAttributes(modal);\n }\n isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n }\n}\nexport default ModalManager;","/**\n * Get the width of the vertical window scrollbar if it's visible\n */\nexport default function getBodyScrollbarWidth(ownerDocument = document) {\n const window = ownerDocument.defaultView;\n return Math.abs(window.innerWidth - ownerDocument.documentElement.clientWidth);\n}","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 ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport { useState, useEffect } from 'react';\nimport useWindow from './useWindow';\nexport const resolveContainerRef = (ref, document) => {\n if (!canUseDOM) return null;\n if (ref == null) return (document || ownerDocument()).body;\n if (typeof ref === 'function') ref = ref();\n if (ref && 'current' in ref) ref = ref.current;\n if (ref && ('nodeType' in ref || ref.getBoundingClientRect)) return ref;\n return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n const window = useWindow();\n const [resolvedRef, setRef] = useState(() => resolveContainerRef(ref, window == null ? void 0 : window.document));\n if (!resolvedRef) {\n const earlyRef = resolveContainerRef(ref);\n if (earlyRef) setRef(earlyRef);\n }\n useEffect(() => {\n if (onResolved && resolvedRef) {\n onResolved(resolvedRef);\n }\n }, [onResolved, resolvedRef]);\n useEffect(() => {\n const nextRef = resolveContainerRef(ref);\n if (nextRef !== resolvedRef) {\n setRef(nextRef);\n }\n }, [ref, resolvedRef]);\n return resolvedRef;\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\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 */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import { useEffect, useLayoutEffect } from 'react';\nconst isReactNative = typeof global !== 'undefined' &&\n// @ts-ignore\nglobal.navigator &&\n// @ts-ignore\nglobal.navigator.product === 'ReactNative';\nconst isDOM = typeof document !== 'undefined';\n\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 */\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;","import useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { cloneElement, useEffect, useRef } from 'react';\nfunction NoopTransition({\n children,\n in: inProp,\n onExited,\n mountOnEnter,\n unmountOnExit\n}) {\n const ref = useRef(null);\n const hasEnteredRef = useRef(inProp);\n const handleExited = useEventCallback(onExited);\n useEffect(() => {\n if (inProp) hasEnteredRef.current = true;else {\n handleExited(ref.current);\n }\n }, [inProp, handleExited]);\n const combinedRef = useMergedRefs(ref, children.ref);\n const child = /*#__PURE__*/cloneElement(children, {\n ref: combinedRef\n });\n if (inProp) return child;\n if (unmountOnExit) {\n return null;\n }\n if (!hasEnteredRef.current && mountOnEnter) {\n return null;\n }\n return child;\n}\nexport default NoopTransition;","const _excluded = [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"addEndListener\", \"children\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport { cloneElement, useCallback, useRef } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { getChildRef } from './utils';\n/**\n * Normalizes RTG transition callbacks with nodeRef to better support\n * strict mode.\n *\n * @param props Transition props.\n * @returns Normalized transition props.\n */\nexport default function useRTGTransitionProps(_ref) {\n let {\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, getChildRef(children));\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n\n /* eslint-disable react-hooks/exhaustive-deps */\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n return Object.assign({}, props, {\n nodeRef\n }, onEnter && {\n onEnter: handleEnter\n }, onEntering && {\n onEntering: handleEntering\n }, onEntered && {\n onEntered: handleEntered\n }, onExit && {\n onExit: handleExit\n }, onExiting && {\n onExiting: handleExiting\n }, onExited && {\n onExited: handleExited\n }, addEndListener && {\n addEndListener: handleAddEndListener\n }, {\n children: typeof children === 'function' ? (status, innerProps) =>\n // TODO: Types for RTG missing innerProps, so need to cast.\n children(status, Object.assign({}, innerProps, {\n ref: mergedRef\n })) : /*#__PURE__*/cloneElement(children, {\n ref: mergedRef\n })\n });\n}","const _excluded = [\"component\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport useRTGTransitionProps from './useRTGTransitionProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst RTGTransition = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n component: Component\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const transitionProps = useRTGTransitionProps(props);\n return /*#__PURE__*/_jsx(Component, Object.assign({\n ref: ref\n }, transitionProps));\n});\nexport default RTGTransition;","import useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport React, { useRef, cloneElement, useState } from 'react';\nimport NoopTransition from './NoopTransition';\nimport RTGTransition from './RTGTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useTransition({\n in: inProp,\n onTransition\n}) {\n const ref = useRef(null);\n const isInitialRef = useRef(true);\n const handleTransition = useEventCallback(onTransition);\n useIsomorphicEffect(() => {\n if (!ref.current) {\n return undefined;\n }\n let stale = false;\n handleTransition({\n in: inProp,\n element: ref.current,\n initial: isInitialRef.current,\n isStale: () => stale\n });\n return () => {\n stale = true;\n };\n }, [inProp, handleTransition]);\n useIsomorphicEffect(() => {\n isInitialRef.current = false;\n // this is for strict mode\n return () => {\n isInitialRef.current = true;\n };\n }, []);\n return ref;\n}\n/**\n * Adapts an imperative transition function to a subset of the RTG `<Transition>` component API.\n *\n * ImperativeTransition does not support mounting options or `appear` at the moment, meaning\n * that it always acts like: `mountOnEnter={true} unmountOnExit={true} appear={true}`\n */\nexport default function ImperativeTransition({\n children,\n in: inProp,\n onExited,\n onEntered,\n transition\n}) {\n const [exited, setExited] = useState(!inProp);\n\n // TODO: I think this needs to be in an effect\n if (inProp && exited) {\n setExited(false);\n }\n const ref = useTransition({\n in: !!inProp,\n onTransition: options => {\n const onFinish = () => {\n if (options.isStale()) return;\n if (options.in) {\n onEntered == null ? void 0 : onEntered(options.element, options.initial);\n } else {\n setExited(true);\n onExited == null ? void 0 : onExited(options.element);\n }\n };\n Promise.resolve(transition(options)).then(onFinish, error => {\n if (!options.in) setExited(true);\n throw error;\n });\n }\n });\n const combinedRef = useMergedRefs(ref, children.ref);\n return exited && !inProp ? null : /*#__PURE__*/cloneElement(children, {\n ref: combinedRef\n });\n}\nexport function renderTransition(component, runTransition, props) {\n if (component) {\n return /*#__PURE__*/_jsx(RTGTransition, Object.assign({}, props, {\n component: component\n }));\n }\n if (runTransition) {\n return /*#__PURE__*/_jsx(ImperativeTransition, Object.assign({}, props, {\n transition: runTransition\n }));\n }\n return /*#__PURE__*/_jsx(NoopTransition, Object.assign({}, props));\n}","const _excluded = [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"runTransition\", \"backdropTransition\", \"runBackdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\n\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport useWindow from './useWindow';\nimport { renderTransition } from './ImperativeTransition';\nimport { isEscKey } from './utils';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nlet manager;\n\n/*\n Modal props are split into a version with and without index signature so that you can fully use them in another projects\n This is due to Typescript not playing well with index signatures e.g. when using Omit\n*/\n\nfunction getManager(window) {\n if (!manager) manager = new ModalManager({\n ownerDocument: window == null ? void 0 : window.document\n });\n return manager;\n}\nfunction useModalManager(provided) {\n const window = useWindow();\n const modalManager = provided || getManager(window);\n const modal = useRef({\n dialog: null,\n backdrop: null\n });\n return Object.assign(modal.current, {\n add: () => modalManager.add(modal.current),\n remove: () => modalManager.remove(modal.current),\n isTopModal: () => modalManager.isTopModal(modal.current),\n setDialogRef: useCallback(ref => {\n modal.current.dialog = ref;\n }, []),\n setBackdropRef: useCallback(ref => {\n modal.current.backdrop = ref;\n }, [])\n });\n}\nconst Modal = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n show = false,\n role = 'dialog',\n className,\n style,\n children,\n backdrop = true,\n keyboard = true,\n onBackdropClick,\n onEscapeKeyDown,\n transition,\n runTransition,\n backdropTransition,\n runBackdropTransition,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n renderDialog,\n renderBackdrop = props => /*#__PURE__*/_jsx(\"div\", Object.assign({}, props)),\n manager: providedManager,\n container: containerRef,\n onShow,\n onHide = () => {},\n onExit,\n onExited,\n onExiting,\n onEnter,\n onEntering,\n onEntered\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n const ownerWindow = useWindow();\n const container = useWaitForDOMRef(containerRef);\n const modal = useModalManager(providedManager);\n const isMounted = useMounted();\n const prevShow = usePrevious(show);\n const [exited, setExited] = useState(!show);\n const lastFocusRef = useRef(null);\n useImperativeHandle(ref, () => modal, [modal]);\n if (canUseDOM && !prevShow && show) {\n lastFocusRef.current = activeElement(ownerWindow == null ? void 0 : ownerWindow.document);\n }\n\n // TODO: I think this needs to be in an effect\n if (show && exited) {\n setExited(false);\n }\n const handleShow = useEventCallback(() => {\n modal.add();\n removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n removeFocusListenerRef.current = listen(document, 'focus',\n // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n () => setTimeout(handleEnforceFocus), true);\n if (onShow) {\n onShow();\n }\n\n // autofocus after onShow to not trigger a focus event for previous\n // modals before this one is shown.\n if (autoFocus) {\n var _modal$dialog$ownerDo, _modal$dialog;\n const currentActiveElement = activeElement((_modal$dialog$ownerDo = (_modal$dialog = modal.dialog) == null ? void 0 : _modal$dialog.ownerDocument) != null ? _modal$dialog$ownerDo : ownerWindow == null ? void 0 : ownerWindow.document);\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n lastFocusRef.current = currentActiveElement;\n modal.dialog.focus();\n }\n }\n });\n const handleHide = useEventCallback(() => {\n modal.remove();\n removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n if (restoreFocus) {\n var _lastFocusRef$current;\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n lastFocusRef.current = null;\n }\n });\n\n // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n\n // Show logic when:\n // - show is `true` _and_ `container` has resolved\n useEffect(() => {\n if (!show || !container) return;\n handleShow();\n }, [show, container, /* should never change: */handleShow]);\n\n // Hide cleanup logic when:\n // - `exited` switches to true\n // - component unmounts;\n useEffect(() => {\n if (!exited) return;\n handleHide();\n }, [exited, handleHide]);\n useWillUnmount(() => {\n handleHide();\n });\n\n // --------------------------------\n\n const handleEnforceFocus = useEventCallback(() => {\n if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n return;\n }\n const currentActiveElement = activeElement(ownerWindow == null ? void 0 : ownerWindow.document);\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n modal.dialog.focus();\n }\n });\n const handleBackdropClick = useEventCallback(e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n onBackdropClick == null ? void 0 : onBackdropClick(e);\n if (backdrop === true) {\n onHide();\n }\n });\n const handleDocumentKeyDown = useEventCallback(e => {\n if (keyboard && isEscKey(e) && modal.isTopModal()) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n if (!e.defaultPrevented) {\n onHide();\n }\n }\n });\n const removeFocusListenerRef = useRef();\n const removeKeydownListenerRef = useRef();\n const handleHidden = (...args) => {\n setExited(true);\n onExited == null ? void 0 : onExited(...args);\n };\n if (!container) {\n return null;\n }\n const dialogProps = Object.assign({\n role,\n ref: modal.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, rest, {\n style,\n className,\n tabIndex: -1\n });\n let dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/_jsx(\"div\", Object.assign({}, dialogProps, {\n children: /*#__PURE__*/React.cloneElement(children, {\n role: 'document'\n })\n }));\n dialog = renderTransition(transition, runTransition, {\n unmountOnExit: true,\n mountOnEnter: true,\n appear: true,\n in: !!show,\n onExit,\n onExiting,\n onExited: handleHidden,\n onEnter,\n onEntering,\n onEntered,\n children: dialog\n });\n let backdropElement = null;\n if (backdrop) {\n backdropElement = renderBackdrop({\n ref: modal.setBackdropRef,\n onClick: handleBackdropClick\n });\n backdropElement = renderTransition(backdropTransition, runBackdropTransition, {\n in: !!show,\n appear: true,\n mountOnEnter: true,\n unmountOnExit: true,\n children: backdropElement\n });\n }\n return /*#__PURE__*/_jsx(_Fragment, {\n children: /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsxs(_Fragment, {\n children: [backdropElement, dialog]\n }), container)\n });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n Manager: ModalManager\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n transitionClasses = {},\n onEnter,\n ...rest\n}, ref) => {\n const props = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n ...rest\n };\n const handleEnter = useCallback((node, isAppearing) => {\n triggerBrowserReflow(node);\n onEnter == null || onEnter(node, isAppearing);\n }, [onEnter]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: getChildRef(children),\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n })\n });\n});\nFade.displayName = 'Fade';\nexport default Fade;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OffcanvasBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nOffcanvasBody.displayName = 'OffcanvasBody';\nexport default OffcanvasBody;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ENTERED, ENTERING, EXITING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport TransitionWrapper from './TransitionWrapper';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst transitionStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst OffcanvasToggling = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n in: inProp = false,\n mountOnEnter = false,\n unmountOnExit = false,\n appear = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n in: inProp,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n appear: appear,\n ...props,\n childRef: getChildRef(children),\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames(className, children.props.className, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, transitionStyles[status])\n })\n });\n});\nOffcanvasToggling.displayName = 'OffcanvasToggling';\nexport default OffcanvasToggling;","\"use client\";\n\nimport * as React from 'react';\nconst ModalContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onHide() {}\n});\nexport default ModalContext;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /** An accessible label indicating the relevant information about the Close Button. */\n 'aria-label': PropTypes.string,\n /** A callback fired after the Close Button is clicked. */\n onClick: PropTypes.func,\n /**\n * Render different color variant for the button.\n *\n * Omitting this will render the default dark color.\n */\n variant: PropTypes.oneOf(['white'])\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n className,\n variant,\n 'aria-label': ariaLabel = 'Close',\n ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n \"aria-label\": ariaLabel,\n ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nexport default CloseButton;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst AbstractModalHeader = /*#__PURE__*/React.forwardRef(({\n closeLabel = 'Close',\n closeVariant,\n closeButton = false,\n onHide,\n children,\n ...props\n}, ref) => {\n const context = useContext(ModalContext);\n const handleClick = useEventCallback(() => {\n context == null || context.onHide();\n onHide == null || onHide();\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n ...props,\n children: [children, closeButton && /*#__PURE__*/_jsx(CloseButton, {\n \"aria-label\": closeLabel,\n variant: closeVariant,\n onClick: handleClick\n })]\n });\n});\nexport default AbstractModalHeader;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OffcanvasHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n closeLabel = 'Close',\n closeButton = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n closeLabel: closeLabel,\n closeButton: closeButton\n });\n});\nOffcanvasHeader.displayName = 'OffcanvasHeader';\nexport default OffcanvasHeader;","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", {\n ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport divWithClassName from './divWithClassName';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst OffcanvasTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH5,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nOffcanvasTitle.displayName = 'OffcanvasTitle';\nexport default OffcanvasTitle;","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","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}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import addClass from 'dom-helpers/addClass';\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport removeClass from 'dom-helpers/removeClass';\nimport ModalManager from '@restart/ui/ModalManager';\nconst Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\nclass BootstrapModalManager extends ModalManager {\n adjustAndStore(prop, element, adjust) {\n const actual = element.style[prop];\n // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n // @ts-ignore\n element.dataset[prop] = actual;\n css(element, {\n [prop]: `${parseFloat(css(element, prop)) + adjust}px`\n });\n }\n restore(prop, element) {\n const value = element.dataset[prop];\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, {\n [prop]: value\n });\n }\n }\n setContainerStyle(containerState) {\n super.setContainerStyle(containerState);\n const container = this.getElement();\n addClass(container, 'modal-open');\n if (!containerState.scrollBarWidth) return;\n const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n qsa(container, Selector.FIXED_CONTENT).forEach(el => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth));\n qsa(container, Selector.STICKY_CONTENT).forEach(el => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth));\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth));\n }\n removeContainerStyle(containerState) {\n super.removeContainerStyle(containerState);\n const container = this.getElement();\n removeClass(container, 'modal-open');\n const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n qsa(container, Selector.FIXED_CONTENT).forEach(el => this.restore(paddingProp, el));\n qsa(container, Selector.STICKY_CONTENT).forEach(el => this.restore(marginProp, el));\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.restore(marginProp, el));\n }\n}\nlet sharedManager;\nexport function getSharedManager(options) {\n if (!sharedManager) sharedManager = new BootstrapModalManager(options);\n return sharedManager;\n}\nexport default BootstrapModalManager;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport useBreakpoint from '@restart/hooks/useBreakpoint';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport * as React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport Fade from './Fade';\nimport OffcanvasBody from './OffcanvasBody';\nimport OffcanvasToggling from './OffcanvasToggling';\nimport ModalContext from './ModalContext';\nimport OffcanvasHeader from './OffcanvasHeader';\nimport OffcanvasTitle from './OffcanvasTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport BootstrapModalManager, { getSharedManager } from './BootstrapModalManager';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(OffcanvasToggling, {\n ...props\n });\n}\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props\n });\n}\nconst Offcanvas = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n 'aria-labelledby': ariaLabelledby,\n placement = 'start',\n responsive,\n /* BaseModal props */\n\n show = false,\n backdrop = true,\n keyboard = true,\n scroll = false,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n renderStaticNode = false,\n ...props\n}, ref) => {\n const modalManager = useRef();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n const [showOffcanvas, setShowOffcanvas] = useState(false);\n const handleHide = useEventCallback(onHide);\n const hideResponsiveOffcanvas = useBreakpoint(responsive || 'xs', 'up');\n useEffect(() => {\n // Handles the case where screen is resized while the responsive\n // offcanvas is shown. If `responsive` not provided, just use `show`.\n setShowOffcanvas(responsive ? show && !hideResponsiveOffcanvas : show);\n }, [show, responsive, hideResponsiveOffcanvas]);\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n function getModalManager() {\n if (propsManager) return propsManager;\n if (scroll) {\n // Have to use a different modal manager since the shared\n // one handles overflow.\n if (!modalManager.current) modalManager.current = new BootstrapModalManager({\n handleContainerOverflow: false\n });\n return modalManager.current;\n }\n return getSharedManager();\n }\n const handleEnter = (node, ...args) => {\n if (node) node.style.visibility = 'visible';\n onEnter == null || onEnter(node, ...args);\n };\n const handleExited = (node, ...args) => {\n if (node) node.style.visibility = '';\n onExited == null || onExited(...args);\n };\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", {\n ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName)\n }), [backdropClassName, bsPrefix]);\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n ...dialogProps,\n ...props,\n className: classNames(className, responsive ? `${bsPrefix}-${responsive}` : bsPrefix, `${bsPrefix}-${placement}`),\n \"aria-labelledby\": ariaLabelledby,\n children: children\n });\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [!showOffcanvas && (responsive || renderStaticNode) && renderDialog({}), /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: showOffcanvas,\n ref: ref,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus && !scroll,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: handleHide,\n onEnter: handleEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: DialogTransition,\n backdropTransition: BackdropTransition,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n })]\n });\n});\nOffcanvas.displayName = 'Offcanvas';\nexport default Object.assign(Offcanvas, {\n Body: OffcanvasBody,\n Header: OffcanvasHeader,\n Title: OffcanvasTitle\n});","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport Offcanvas from './Offcanvas';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarOffcanvas = /*#__PURE__*/React.forwardRef(({\n onHide,\n ...props\n}, ref) => {\n const context = useContext(NavbarContext);\n const handleHide = useEventCallback(() => {\n context == null || context.onToggle == null || context.onToggle();\n onHide == null || onHide();\n });\n return /*#__PURE__*/_jsx(Offcanvas, {\n ref: ref,\n show: !!(context != null && context.expanded),\n ...props,\n renderStaticNode: true,\n onHide: handleHide\n });\n});\nNavbarOffcanvas.displayName = 'NavbarOffcanvas';\nexport default NavbarOffcanvas;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'span',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavbarText.displayName = 'NavbarText';\nexport default NavbarText;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport { useUncontrolled } from 'uncontrollable';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport NavbarOffcanvas from './NavbarOffcanvas';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport NavbarText from './NavbarText';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Navbar = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n bsPrefix: initialBsPrefix,\n expand = true,\n variant = 'light',\n bg,\n fixed,\n sticky,\n className,\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 = 'nav',\n expanded,\n onToggle,\n onSelect,\n collapseOnSelect = false,\n ...controlledProps\n } = useUncontrolled(props, {\n expanded: 'onToggle'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n const handleCollapse = useCallback((...args) => {\n onSelect == null || onSelect(...args);\n if (collapseOnSelect && expanded) {\n onToggle == null || onToggle(false);\n }\n }, [onSelect, collapseOnSelect, expanded, onToggle]);\n\n // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n let expandClass = `${bsPrefix}-expand`;\n if (typeof expand === 'string') expandClass = `${expandClass}-${expand}`;\n const navbarContext = useMemo(() => ({\n onToggle: () => onToggle == null ? void 0 : onToggle(!expanded),\n bsPrefix,\n expanded: !!expanded,\n expand\n }), [bsPrefix, expanded, expand, onToggle]);\n return /*#__PURE__*/_jsx(NavbarContext.Provider, {\n value: navbarContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleCollapse,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, bsPrefix, expand && expandClass, variant && `${bsPrefix}-${variant}`, bg && `bg-${bg}`, sticky && `sticky-${sticky}`, fixed && `fixed-${fixed}`)\n })\n })\n });\n});\nNavbar.displayName = 'Navbar';\nexport default Object.assign(Navbar, {\n Brand: NavbarBrand,\n Collapse: NavbarCollapse,\n Offcanvas: NavbarOffcanvas,\n Text: NavbarText,\n Toggle: NavbarToggle\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid = false,\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 className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nexport default Container;","import { useReducer } from 'react';\n\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 */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(revision => revision + 1, 0);\n return dispatch;\n}","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","const _excluded = [\"as\", \"disabled\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\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;","const _excluded = [\"as\", \"active\", \"eventKey\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport TabContext from './TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n key,\n onClick,\n active,\n id,\n role,\n disabled\n}) {\n const parentOnSelect = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const tabContext = useContext(TabContext);\n let isActive = active;\n const props = {\n role\n };\n if (navContext) {\n if (!role && navContext.role === 'tablist') props.role = 'tab';\n const contextControllerId = navContext.getControllerId(key != null ? key : null);\n const contextControlledId = navContext.getControlledId(key != null ? key : null);\n\n // @ts-ignore\n props[dataAttr('event-key')] = key;\n props.id = contextControllerId || id;\n isActive = active == null && key != null ? navContext.activeKey === key : active;\n\n /**\n * Simplified scenario for `mountOnEnter`.\n *\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\n * once, it would also complicate the code quite a bit, for very little gain.\n * The following implementation is probably good enough.\n *\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\n */\n if (isActive || !(tabContext != null && tabContext.unmountOnExit) && !(tabContext != null && tabContext.mountOnEnter)) props['aria-controls'] = contextControlledId;\n }\n if (props.role === 'tab') {\n props['aria-selected'] = isActive;\n if (!isActive) {\n props.tabIndex = -1;\n }\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n }\n props.onClick = useEventCallback(e => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(e);\n if (key == null) {\n return;\n }\n if (parentOnSelect && !e.isPropagationStopped()) {\n parentOnSelect(key, e);\n }\n });\n return [props, {\n isActive\n }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: Component = Button,\n active,\n eventKey\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [props, meta] = useNavItem(Object.assign({\n key: makeEventKey(eventKey, options.href),\n active\n }, options));\n\n // @ts-ignore\n props[dataAttr('active')] = meta.isActive;\n return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n ref: ref\n }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\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 onSelect,\n activeKey,\n role,\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n const forceUpdate = useForceUpdate();\n const needsRefocusRef = useRef(false);\n const parentOnSelect = useContext(SelectableContext);\n const tabContext = useContext(TabContext);\n let getControlledId, getControllerId;\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n // TODO: do we need to duplicate these?\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n const listNode = useRef(null);\n const getNextActiveTab = offset => {\n const currentListNode = listNode.current;\n if (!currentListNode) return null;\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n const activeChild = currentListNode.querySelector('[aria-selected=true]');\n if (!activeChild || activeChild !== document.activeElement) return null;\n const index = items.indexOf(activeChild);\n if (index === -1) return null;\n let nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n const handleSelect = (key, event) => {\n if (key == null) return;\n onSelect == null ? void 0 : onSelect(key, event);\n parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n };\n const handleKeyDown = event => {\n onKeyDown == null ? void 0 : onKeyDown(event);\n if (!tabContext) {\n return;\n }\n let nextActiveChild;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveTab(-1);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveTab(1);\n break;\n default:\n return;\n }\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n useEffect(() => {\n if (listNode.current && needsRefocusRef.current) {\n const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n activeChild == null ? void 0 : activeChild.focus();\n }\n needsRefocusRef.current = false;\n });\n const mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(NavContext.Provider, {\n value: {\n role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n },\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))\n })\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem\n});","\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavItem = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import { useState } from 'react';\n\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 */\nexport default function useCallbackRef() {\n return useState(null);\n}","import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nconst targetMap = new WeakMap();\nlet resizeObserver;\nfunction getResizeObserver() {\n // eslint-disable-next-line no-return-assign\n return resizeObserver = resizeObserver || new window.ResizeObserver(entries => {\n entries.forEach(entry => {\n const handler = targetMap.get(entry.target);\n if (handler) handler(entry.contentRect);\n });\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 */\nexport default function useResizeObserver(element) {\n const [rect, setRect] = useState(null);\n useEffect(() => {\n if (!element) return;\n getResizeObserver().observe(element);\n setRect(element.getBoundingClientRect());\n targetMap.set(element, rect => {\n setRect(rect);\n });\n return () => {\n targetMap.delete(element);\n };\n }, [element]);\n return rect;\n}","const _excluded = [\"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\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;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as: Component = Anchor,\n active,\n eventKey,\n disabled = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n disabled,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ...navItemProps,\n ref: ref,\n disabled: disabled,\n className: classNames(className, bsPrefix, disabled && 'disabled', meta.isActive && 'active')\n });\n});\nNavLink.displayName = 'NavLink';\nexport default NavLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n as = 'div',\n bsPrefix: initialBsPrefix,\n variant,\n fill = false,\n justify = false,\n navbar,\n navbarScroll,\n className,\n activeKey,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n let navbarBsPrefix;\n let cardHeaderBsPrefix;\n let isNavbar = false;\n const navbarContext = useContext(NavbarContext);\n const cardHeaderContext = useContext(CardHeaderContext);\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardHeaderContext) {\n ({\n cardHeaderBsPrefix\n } = cardHeaderContext);\n }\n return /*#__PURE__*/_jsx(BaseNav, {\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, {\n [bsPrefix]: !isNavbar,\n [`${navbarBsPrefix}-nav`]: isNavbar,\n [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n [`${bsPrefix}-${variant}`]: !!variant,\n [`${bsPrefix}-fill`]: fill,\n [`${bsPrefix}-justified`]: justify\n }),\n ...props\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem,\n Link: NavLink\n});","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { getCurrentUser as getCurrentUserInternal } from './internal/getCurrentUser';\n/**\n * Gets the current user from the idToken.\n *\n * @param input - The GetCurrentUserInput object.\n * @returns GetCurrentUserOutput\n * @throws - {@link InitiateAuthException} - Thrown when the service fails to refresh the tokens.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport const getCurrentUser = async () => {\n return getCurrentUserInternal(Amplify);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { assertAuthTokens } from '../../utils/types';\nexport const getCurrentUser = async (amplify) => {\n const authConfig = amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const tokens = await amplify.Auth.getTokens({ forceRefresh: false });\n assertAuthTokens(tokens);\n const { 'cognito:username': username, sub } = tokens.idToken?.payload ?? {};\n const authUser = {\n username: username,\n userId: sub,\n };\n const signInDetails = getSignInDetailsFromTokens(tokens);\n if (signInDetails) {\n authUser.signInDetails = signInDetails;\n }\n return authUser;\n};\nfunction getSignInDetailsFromTokens(tokens) {\n return tokens?.signInDetails;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const fetchAuthSession = (amplify, options) => {\n return amplify.Auth.fetchAuthSession(options);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Transforms a user attributes object into an array of AttributeType objects.\n * @param attributes user attributes to be mapped to AttributeType objects.\n * @returns an array of AttributeType objects.\n */\nexport function toAttributeType(attributes) {\n return Object.entries(attributes).map(([key, value]) => ({\n Name: key,\n Value: value,\n }));\n}\n/**\n * Transforms an array of AttributeType objects into a user attributes object.\n *\n * @param attributes - an array of AttributeType objects.\n * @returns AuthUserAttributes object.\n */\nexport function toAuthUserAttribute(attributes) {\n const userAttributes = {};\n attributes?.forEach(attribute => {\n if (attribute.Name)\n userAttributes[attribute.Name] = attribute.Value;\n });\n return userAttributes;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Category, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nexport const getAuthUserAgentValue = (action, customUserAgentDetails) => getAmplifyUserAgent({\n category: Category.Auth,\n action,\n ...customUserAgentDetails,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction, assertTokenProviderConfig, fetchAuthSession, } from '@aws-amplify/core/internals/utils';\nimport { getRegionFromUserPoolId } from '../../../../foundation/parsers';\nimport { assertAuthTokens } from '../../utils/types';\nimport { toAuthUserAttribute } from '../../utils/apiHelpers';\nimport { getAuthUserAgentValue } from '../../../../utils';\nimport { createGetUserClient } from '../../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../factories';\nexport const fetchUserAttributes = async (amplify) => {\n const authConfig = amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { userPoolEndpoint, userPoolId } = authConfig;\n const { tokens } = await fetchAuthSession(amplify, {\n forceRefresh: false,\n });\n assertAuthTokens(tokens);\n const getUser = createGetUserClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { UserAttributes } = await getUser({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.FetchUserAttributes),\n }, {\n AccessToken: tokens.accessToken.toString(),\n });\n return toAuthUserAttribute(UserAttributes);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createGetUserClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('GetUser'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { fetchUserAttributes as fetchUserAttributesInternal } from './internal/fetchUserAttributes';\n/**\n * Fetches the current user attributes while authenticated.\n *\n * @throws - {@link GetUserException} - Cognito service errors thrown when the service is not able to get the user.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport const fetchUserAttributes = () => {\n return fetchUserAttributesInternal(Amplify);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '../Amplify';\nexport function clearCredentials() {\n return Amplify.Auth.clearCredentials();\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Hub, clearCredentials } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL } from '@aws-amplify/core/internals/utils';\nimport { tokenOrchestrator } from '../../tokenProvider';\nexport const completeOAuthSignOut = async (store) => {\n await store.clearOAuthData();\n tokenOrchestrator.clearTokens();\n await clearCredentials();\n Hub.dispatch('auth', { event: 'signedOut' }, 'Auth', AMPLIFY_SYMBOL);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { invalidOriginException, invalidPreferredRedirectUrlException, invalidRedirectException, } from '../../../../errors/constants';\n/** @internal */\nexport function getRedirectUrl(redirects, preferredRedirectUrl) {\n if (preferredRedirectUrl) {\n const redirectUrl = redirects?.find(redirect => redirect === preferredRedirectUrl);\n if (!redirectUrl) {\n throw invalidPreferredRedirectUrlException;\n }\n return redirectUrl;\n }\n else {\n const redirectUrlFromTheSameOrigin = redirects?.find(isSameOriginAndPathName) ??\n redirects?.find(isTheSameDomain);\n const redirectUrlFromDifferentOrigin = redirects?.find(isHttps) ?? redirects?.find(isHttp);\n if (redirectUrlFromTheSameOrigin) {\n return redirectUrlFromTheSameOrigin;\n }\n else if (redirectUrlFromDifferentOrigin) {\n throw invalidOriginException;\n }\n throw invalidRedirectException;\n }\n}\n// origin + pathname => https://example.com/app\nconst isSameOriginAndPathName = (redirect) => redirect.startsWith(\n// eslint-disable-next-line no-constant-binary-expression\nString(window.location.origin + window.location.pathname ?? '/'));\n// domain => outlook.live.com, github.com\nconst isTheSameDomain = (redirect) => redirect.includes(String(window.location.hostname));\nconst isHttp = (redirect) => redirect.startsWith('http://');\nconst isHttps = (redirect) => redirect.startsWith('https://');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertOAuthConfig } from '@aws-amplify/core/internals/utils';\nimport { openAuthSession } from '../../../../utils';\nimport { getRedirectUrl } from './getRedirectUrl';\nexport const oAuthSignOutRedirect = async (authConfig, preferPrivateSession = false, redirectUrl) => {\n assertOAuthConfig(authConfig);\n const { loginWith, userPoolClientId } = authConfig;\n const { domain, redirectSignOut } = loginWith.oauth;\n const signoutUri = getRedirectUrl(redirectSignOut, redirectUrl);\n const oAuthLogoutEndpoint = `https://${domain}/logout?${Object.entries({\n client_id: userPoolClientId,\n logout_uri: encodeURIComponent(signoutUri),\n })\n .map(([k, v]) => `${k}=${v}`)\n .join('&')}`;\n return openAuthSession(oAuthLogoutEndpoint, redirectSignOut, preferPrivateSession);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const openAuthSession = async (url) => {\n if (!window?.location) {\n return;\n }\n // enforce HTTPS\n window.location.href = url.replace('http://', 'https://');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify, ConsoleLogger, Hub, clearCredentials, defaultStorage, } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL, AuthAction, assertOAuthConfig, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { assertAuthTokens, assertAuthTokensWithRefreshToken, } from '../utils/types';\nimport { handleOAuthSignOut } from '../utils/oauth';\nimport { DefaultOAuthStore } from '../utils/signInWithRedirectStore';\nimport { AuthError } from '../../../errors/AuthError';\nimport { OAUTH_SIGNOUT_EXCEPTION } from '../../../errors/constants';\nimport { createGlobalSignOutClient, createRevokeTokenClient, } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nconst logger = new ConsoleLogger('Auth');\n/**\n * Signs a user out\n *\n * @param input - The SignOutInput object\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signOut(input) {\n const cognitoConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(cognitoConfig);\n if (input?.global) {\n await globalSignOut(cognitoConfig);\n }\n else {\n await clientSignOut(cognitoConfig);\n }\n let hasOAuthConfig;\n try {\n assertOAuthConfig(cognitoConfig);\n hasOAuthConfig = true;\n }\n catch (err) {\n hasOAuthConfig = false;\n }\n if (hasOAuthConfig) {\n const oAuthStore = new DefaultOAuthStore(defaultStorage);\n oAuthStore.setAuthConfig(cognitoConfig);\n const { type } = (await handleOAuthSignOut(cognitoConfig, oAuthStore, tokenOrchestrator, input?.oauth?.redirectUrl)) ?? {};\n if (type === 'error') {\n throw new AuthError({\n name: OAUTH_SIGNOUT_EXCEPTION,\n message: `An error occurred when attempting to log out from OAuth provider.`,\n });\n }\n }\n else {\n // complete sign out\n tokenOrchestrator.clearTokens();\n await clearCredentials();\n Hub.dispatch('auth', { event: 'signedOut' }, 'Auth', AMPLIFY_SYMBOL);\n }\n}\nasync function clientSignOut(cognitoConfig) {\n try {\n const { userPoolEndpoint, userPoolId, userPoolClientId } = cognitoConfig;\n const authTokens = await tokenOrchestrator.getTokenStore().loadTokens();\n assertAuthTokensWithRefreshToken(authTokens);\n if (isSessionRevocable(authTokens.accessToken)) {\n const revokeToken = createRevokeTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n await revokeToken({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignOut),\n }, {\n ClientId: userPoolClientId,\n Token: authTokens.refreshToken,\n });\n }\n }\n catch (err) {\n // this shouldn't throw\n logger.debug('Client signOut error caught but will proceed with token removal');\n }\n}\nasync function globalSignOut(cognitoConfig) {\n try {\n const { userPoolEndpoint, userPoolId } = cognitoConfig;\n const authTokens = await tokenOrchestrator.getTokenStore().loadTokens();\n assertAuthTokens(authTokens);\n const globalSignOutClient = createGlobalSignOutClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n await globalSignOutClient({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignOut),\n }, {\n AccessToken: authTokens.accessToken.toString(),\n });\n }\n catch (err) {\n // it should not throw\n logger.debug('Global signOut error caught but will proceed with token removal');\n }\n}\nconst isSessionRevocable = (token) => !!token?.payload?.origin_jti;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createGlobalSignOutClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('GlobalSignOut'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createRevokeTokenClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('RevokeToken'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { completeOAuthSignOut } from './completeOAuthSignOut';\nimport { oAuthSignOutRedirect } from './oAuthSignOutRedirect';\nexport const handleOAuthSignOut = async (cognitoConfig, store, tokenOrchestrator, redirectUrl) => {\n const { isOAuthSignIn } = await store.loadOAuthSignIn();\n const oauthMetadata = await tokenOrchestrator.getOAuthMetadata();\n // Clear everything before attempting to visted logout endpoint since the current application\n // state could be wiped away on redirect\n await completeOAuthSignOut(store);\n // The isOAuthSignIn flag is propagated by the oAuthToken store which manages oauth keys in local storage only.\n // These keys are used to determine if a user is in an inflight or signedIn oauth states.\n // However, this behavior represents an issue when 2 apps share the same set of tokens in Cookie storage because the app that didn't\n // start the OAuth will not have access to the oauth keys.\n // A heuristic solution is to add oauth metadata to the tokenOrchestrator which will have access to the underlying\n // storage mechanism that is used by Amplify.\n if (isOAuthSignIn || oauthMetadata?.oauthSignIn) {\n // On web, this will always end up being a void action\n return oAuthSignOutRedirect(cognitoConfig, false, redirectUrl);\n }\n};\n","import { useContext, createContext } from \"react\";\n\nexport const AppContext = createContext(null);\n\nexport function useAppContext() {\n return useContext(AppContext);\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n const onUnmount = useUpdatedRef(fn);\n useEffect(() => () => onUnmount.current(), []);\n}","import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n const valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\nconst MAX_DELAY_MS = 2 ** 31 - 1;\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n const delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(() => setChainedTimeout(handleRef, fn, timeoutAtMs), MAX_DELAY_MS);\n}\n\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n * <div className=\"App\">\n * {hello ? <h3>Hello</h3> : null}\n * </div>\n * );\n * ```\n */\nexport default function useTimeout() {\n const isMounted = useMounted();\n\n // types are confused between node and web here IDK\n const handleRef = useRef();\n useWillUnmount(() => clearTimeout(handleRef.current));\n return useMemo(() => {\n const clear = () => clearTimeout(handleRef.current);\n function set(fn, delayMs = 0) {\n if (!isMounted()) return;\n clear();\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n return {\n set,\n clear,\n handleRef\n };\n }, []);\n}","import { useRef, useEffect } from 'react';\n\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 */\nexport default function useMounted() {\n const mounted = useRef(true);\n const isMounted = useRef(() => mounted.current);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import * as React from 'react';\nimport { ENTERING, EXITING } from 'react-transition-group/Transition';\nimport Fade from './Fade';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n [ENTERING]: 'showing',\n [EXITING]: 'showing show'\n};\nconst ToastFade = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(Fade, {\n ...props,\n ref: ref,\n transitionClasses: fadeStyles\n}));\nToastFade.displayName = 'ToastFade';\nexport default ToastFade;","\"use client\";\n\nimport * as React from 'react';\nconst ToastContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClose() {}\n});\nexport default ToastContext;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ToastContext from './ToastContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst ToastHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n closeLabel = 'Close',\n closeVariant,\n closeButton = true,\n className,\n children,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'toast-header');\n const context = useContext(ToastContext);\n const handleClick = useEventCallback(e => {\n context == null || context.onClose == null || context.onClose(e);\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n ...props,\n className: classNames(bsPrefix, className),\n children: [children, closeButton && /*#__PURE__*/_jsx(CloseButton, {\n \"aria-label\": closeLabel,\n variant: closeVariant,\n onClick: handleClick,\n \"data-dismiss\": \"toast\"\n })]\n });\n});\nToastHeader.displayName = 'ToastHeader';\nexport default ToastHeader;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ToastBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'toast-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nToastBody.displayName = 'ToastBody';\nexport default ToastBody;","\"use client\";\n\nimport * as React from 'react';\nimport { useEffect, useMemo, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport ToastFade from './ToastFade';\nimport ToastHeader from './ToastHeader';\nimport ToastBody from './ToastBody';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport ToastContext from './ToastContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Toast = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n transition: Transition = ToastFade,\n show = true,\n animation = true,\n delay = 5000,\n autohide = false,\n onClose,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n bg,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'toast');\n\n // We use refs for these, because we don't want to restart the autohide\n // timer in case these values change.\n const delayRef = useRef(delay);\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n delayRef.current = delay;\n onCloseRef.current = onClose;\n }, [delay, onClose]);\n const autohideTimeout = useTimeout();\n const autohideToast = !!(autohide && show);\n const autohideFunc = useCallback(() => {\n if (autohideToast) {\n onCloseRef.current == null || onCloseRef.current();\n }\n }, [autohideToast]);\n useEffect(() => {\n // Only reset timer if show or autohide changes.\n autohideTimeout.set(autohideFunc, delayRef.current);\n }, [autohideTimeout, autohideFunc]);\n const toastContext = useMemo(() => ({\n onClose\n }), [onClose]);\n const hasAnimation = !!(Transition && animation);\n const toast = /*#__PURE__*/_jsx(\"div\", {\n ...props,\n ref: ref,\n className: classNames(bsPrefix, className, bg && `bg-${bg}`, !hasAnimation && (show ? 'show' : 'hide')),\n role: \"alert\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\"\n });\n return /*#__PURE__*/_jsx(ToastContext.Provider, {\n value: toastContext,\n children: hasAnimation && Transition ? /*#__PURE__*/_jsx(Transition, {\n in: show,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n unmountOnExit: true,\n children: toast\n }) : toast\n });\n});\nToast.displayName = 'Toast';\nexport default Object.assign(Toast, {\n Body: ToastBody,\n Header: ToastHeader\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nModalBody.displayName = 'ModalBody';\nexport default ModalBody;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalDialog = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n contentClassName,\n centered,\n size,\n fullscreen,\n children,\n scrollable,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const dialogClass = `${bsPrefix}-dialog`;\n const fullScreenClass = typeof fullscreen === 'string' ? `${bsPrefix}-fullscreen-${fullscreen}` : `${bsPrefix}-fullscreen`;\n return /*#__PURE__*/_jsx(\"div\", {\n ...props,\n ref: ref,\n className: classNames(dialogClass, className, size && `${bsPrefix}-${size}`, centered && `${dialogClass}-centered`, scrollable && `${dialogClass}-scrollable`, fullscreen && fullScreenClass),\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames(`${bsPrefix}-content`, contentClassName),\n children: children\n })\n });\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalFooter = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-footer');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nModalFooter.displayName = 'ModalFooter';\nexport default ModalFooter;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n closeLabel = 'Close',\n closeButton = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n closeLabel: closeLabel,\n closeButton: closeButton\n });\n});\nModalHeader.displayName = 'ModalHeader';\nexport default ModalHeader;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport divWithClassName from './divWithClassName';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nconst ModalTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nModalTitle.displayName = 'ModalTitle';\nexport default ModalTitle;","\"use client\";\n\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport * as React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport { getSharedManager } from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/* eslint-disable no-use-before-define, react/no-multi-comp */\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props,\n timeout: null\n });\n}\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props,\n timeout: null\n });\n}\n\n/* eslint-enable no-use-before-define */\nconst Modal = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n style,\n dialogClassName,\n contentClassName,\n children,\n dialogAs: Dialog = ModalDialog,\n 'data-bs-theme': dataBsTheme,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n /* BaseModal props */\n\n show = false,\n animation = true,\n backdrop = true,\n keyboard = true,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n ...props\n}, ref) => {\n const [modalStyle, setStyle] = useState({});\n const [animateStaticModal, setAnimateStaticModal] = useState(false);\n const waitingForMouseUpRef = useRef(false);\n const ignoreBackdropClickRef = useRef(false);\n const removeStaticModalAnimationRef = useRef(null);\n const [modal, setModalRef] = useCallbackRef();\n const mergedRef = useMergedRefs(ref, setModalRef);\n const handleHide = useEventCallback(onHide);\n const isRTL = useIsRTL();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n function getModalManager() {\n if (propsManager) return propsManager;\n return getSharedManager({\n isRTL\n });\n }\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n const containerIsOverflowing = getModalManager().getScrollbarWidth() > 0;\n const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n const handleWindowResize = useEventCallback(() => {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(() => {\n removeEventListener(window, 'resize', handleWindowResize);\n removeStaticModalAnimationRef.current == null || removeStaticModalAnimationRef.current();\n });\n\n // We prevent the modal from closing during a drag by detecting where the\n // click originates from. If it starts in the modal and then ends outside\n // don't close.\n const handleDialogMouseDown = () => {\n waitingForMouseUpRef.current = true;\n };\n const handleMouseUp = e => {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n waitingForMouseUpRef.current = false;\n };\n const handleStaticModalAnimation = () => {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, () => {\n setAnimateStaticModal(false);\n });\n };\n const handleStaticBackdropClick = e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n handleStaticModalAnimation();\n };\n const handleClick = e => {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n onHide == null || onHide();\n };\n const handleEscapeKeyDown = e => {\n if (keyboard) {\n onEscapeKeyDown == null || onEscapeKeyDown(e);\n } else {\n // Call preventDefault to stop modal from closing in @restart/ui.\n e.preventDefault();\n if (backdrop === 'static') {\n // Play static modal animation.\n handleStaticModalAnimation();\n }\n }\n };\n const handleEnter = (node, isAppearing) => {\n if (node) {\n updateDialogStyle(node);\n }\n onEnter == null || onEnter(node, isAppearing);\n };\n const handleExit = node => {\n removeStaticModalAnimationRef.current == null || removeStaticModalAnimationRef.current();\n onExit == null || onExit(node);\n };\n const handleEntering = (node, isAppearing) => {\n onEntering == null || onEntering(node, isAppearing);\n\n // FIXME: This should work even when animation is disabled.\n addEventListener(window, 'resize', handleWindowResize);\n };\n const handleExited = node => {\n if (node) node.style.display = ''; // RHL removes it sometimes\n onExited == null || onExited(node);\n\n // FIXME: This should work even when animation is disabled.\n removeEventListener(window, 'resize', handleWindowResize);\n };\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", {\n ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName, !animation && 'show')\n }), [animation, backdropClassName, bsPrefix]);\n const baseModalStyle = {\n ...style,\n ...modalStyle\n };\n\n // If `display` is not set to block, autoFocus inside the modal fails\n // https://github.com/react-bootstrap/react-bootstrap/issues/5102\n baseModalStyle.display = 'block';\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n role: \"dialog\",\n ...dialogProps,\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && `${bsPrefix}-static`, !animation && 'show'),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"data-bs-theme\": dataBsTheme,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby,\n children: /*#__PURE__*/_jsx(Dialog, {\n ...props,\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName,\n children: children\n })\n });\n return /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: show,\n ref: mergedRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n Body: ModalBody,\n Header: ModalHeader,\n Title: ModalTitle,\n Footer: ModalFooter,\n Dialog: ModalDialog,\n TRANSITION_DURATION: 300,\n BACKDROP_TRANSITION_DURATION: 150\n});","import { useState } from 'react';\n\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 */\nexport default function useCallbackRef() {\n return useState(null);\n}","\"use client\";\n\nimport 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 Button = /*#__PURE__*/React.forwardRef(({\n as,\n bsPrefix,\n variant = 'primary',\n size,\n active = false,\n disabled = false,\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const [buttonProps, {\n tagName\n }] = useButtonProps({\n tagName: as,\n disabled,\n ...props\n });\n const Component = tagName;\n return /*#__PURE__*/_jsx(Component, {\n ...buttonProps,\n ...props,\n ref: ref,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && disabled && 'disabled')\n });\n});\nButton.displayName = 'Button';\nexport default Button;","import { useContext, createContext, useState, useCallback } from \"react\";\nimport { Alert, Button, CloseButton, Modal, Toast } from \"react-bootstrap\";\n\nexport const NotificationStatus = {\n Primary: \"primary\",\n Secondary: \"secondary\",\n Success: \"success\",\n Danger: \"danger\",\n Warning: \"warning\",\n Info: \"info\",\n Dark: \"dark\"\n}\n\nconst NotificationLimit = 5\n\nconst NotificationContext = createContext({\n notification: null,\n notificationText: null,\n success: () => {},\n error: () => {}\n})\n\nexport function useNotificationContext() {\n return useContext(NotificationContext)\n}\n\nexport const NotificationProvider = (props) => {\n const [toastList, setToastList] = useState([])\n const [alertList, setAlertList] = useState([])\n const [showModal, setShowModal] = useState(false)\n const [confirmModal, setConfirmModal] = useState({})\n\n const removeToast = (timestamp) => {\n setToastList( tl => tl.filter(t => t.timestamp !== timestamp))\n }\n\n const clearToasts = useCallback(() => {\n setToastList([])\n }, [])\n\n const sendToast = useCallback((toast) => {\n if(!toast.message) return\n\n const timestamp = new Date().getTime()\n const newToast = {\n status: toast.status ?? NotificationStatus.Dark,\n message: toast.message,\n delay: toast.delay ?? 4000,\n timestamp,\n autohide: toast.autohide ?? true,\n dismissible: toast.dismissible ?? (toast.autohide !== undefined ? !toast.autohide : false)\n }\n\n if(newToast.autohide){\n setTimeout(() => {removeToast(newToast.timestamp)}, newToast.delay)\n }\n\n setToastList(tl => {\n const list = [...tl, newToast]\n list.splice(0, list.length - NotificationLimit)\n return list\n })\n }, [])\n\n const removeAlert = useCallback((timestamp) => {\n setAlertList( al => al.filter(a => a.timestamp !== timestamp))\n }, [])\n\n const clearAlerts = useCallback(() => {\n setAlertList([])\n }, [])\n\n const sendAlert = useCallback((alert) => {\n if(!alert.message) return\n\n const timestamp = new Date().getTime()\n const newAlert = {\n status: alert.status ?? NotificationStatus.Dark,\n message: alert.message,\n delay: alert.delay ?? 4000,\n timestamp,\n autohide: alert.autohide ?? true,\n dismissible: alert.dismissible ?? (alert.autohide !== undefined ? !alert.autohide : false)\n }\n\n if(newAlert.autohide){\n setTimeout(() => {removeAlert(newAlert.timestamp)}, newAlert.delay)\n }\n\n setAlertList(al => {\n const list = [...al, newAlert]\n list.splice(0, list.length - NotificationLimit)\n return list\n })\n }, [removeAlert])\n\n const clearNotifications = useCallback(() => {\n clearAlerts()\n clearToasts()\n }, [clearAlerts, clearToasts])\n\n const sendConfirmModal = useCallback((modal) => {\n if(showModal) return false\n setConfirmModal(modal)\n setShowModal(true)\n return true\n }, [showModal])\n\n const modalConfirm = useCallback(() => {\n setShowModal(false)\n if(typeof confirmModal.confirm === 'function') {\n confirmModal.confirm()\n }\n }, [confirmModal])\n\n const modalReject = useCallback(() => {\n setShowModal(false)\n if(typeof confirmModal.reject === 'function') {\n confirmModal.reject()\n }\n }, [confirmModal])\n\n const textColor = (status) => {\n if([NotificationStatus.Warning, NotificationStatus.Info].includes(status)) {\n return \"text-black\"\n }\n return \"text-white\"\n }\n\n return (\n <NotificationContext.Provider\n value={{\n sendToast, clearToasts, sendAlert, clearAlerts, clearNotifications, sendConfirmModal\n }}\n >\n{/* PAGE CONTENT */}\n\n {props.children}\n\n{/* NOTIFICATION TOASTS AND ALERTS */}\n\n <div className=\"position-fixed bottom-0 start-50 translate-middle-x mb-4 d-flex flex-column align-items-center gap-2 w-100 px-3\" style={{maxWidth: \"40rem\", zIndex: 3000}}>\n {toastList.map((toast, i) => (\n <Toast\n key={i}\n bg={toast.status}\n className=\"w-auto\"\n >\n <Toast.Body className={`${textColor(toast.status)} d-flex flex-row align-items-center column-gap-2 justify-content-between`}>\n <span>{toast.message}</span>\n {toast.dismissible && <CloseButton onClick={() => removeToast(toast.timestamp)} />}\n </Toast.Body>\n </Toast>\n ))}\n {alertList.map((alert, i) => (\n <Alert\n key={i}\n variant={alert.status}\n className=\"mb-0 w-100 d-flex flex-row align-items-center column-gap-2 justify-content-between\"\n >\n <span className=\"w-100\">{alert.message}</span>\n {alert.dismissible && <CloseButton onClick={() => removeAlert(alert.timestamp)} />}\n </Alert>\n ))}\n </div>\n\n{/* CONFIRMATION MODAL */}\n\n <Modal\n style={{zIndex: 2001}}\n backdropClassName=\"top-z-index\"\n show={showModal}\n centered={confirmModal.center === true}\n onHide={() => setShowModal(false)}\n >\n {confirmModal.heading &&\n <Modal.Header closeButton>\n <Modal.Title>{confirmModal.heading}</Modal.Title>\n </Modal.Header>\n }\n <Modal.Body>{confirmModal.body}</Modal.Body>\n <Modal.Footer>\n <Button variant={confirmModal.rejectColor ?? \"secondary\"} onClick={modalReject}>\n {confirmModal.rejectText ?? \"No\"}\n </Button>\n <Button variant={confirmModal.confirmColor ?? \"primary\"} onClick={modalConfirm} disabled={confirmModal.confirmDisabled ?? false}>\n {confirmModal.confirmText ?? \"Yes\"}\n </Button>\n </Modal.Footer>\n </Modal>\n </NotificationContext.Provider>\n );\n};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport warning from 'warning';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ListGroupItem = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n active,\n disabled,\n eventKey,\n className,\n variant,\n action,\n as,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'list-group-item');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n ...props\n });\n const handleClick = useEventCallback(event => {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n navItemProps.onClick(event);\n });\n if (disabled && props.tabIndex === undefined) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n // eslint-disable-next-line no-nested-ternary\n const Component = as || (action ? props.href ? 'a' : 'button' : 'div');\n process.env.NODE_ENV !== \"production\" ? warning(as || !(!action && props.href), '`action=false` and `href` should not be used together.') : void 0;\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n ...navItemProps,\n onClick: handleClick,\n className: classNames(className, bsPrefix, meta.isActive && 'active', disabled && 'disabled', variant && `${bsPrefix}-${variant}`, action && `${bsPrefix}-action`)\n });\n});\nListGroupItem.displayName = 'ListGroupItem';\nexport default ListGroupItem;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport warning from 'warning';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport ListGroupItem from './ListGroupItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ListGroup = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n className,\n bsPrefix: initialBsPrefix,\n variant,\n horizontal,\n numbered,\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 = 'div',\n ...controlledProps\n } = useUncontrolled(props, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'list-group');\n let horizontalVariant;\n if (horizontal) {\n horizontalVariant = horizontal === true ? 'horizontal' : `horizontal-${horizontal}`;\n }\n process.env.NODE_ENV !== \"production\" ? warning(!(horizontal && variant === 'flush'), '`variant=\"flush\"` and `horizontal` should not be used together.') : void 0;\n return /*#__PURE__*/_jsx(BaseNav, {\n ref: ref,\n ...controlledProps,\n as: as,\n className: classNames(className, bsPrefix, variant && `${bsPrefix}-${variant}`, horizontalVariant && `${bsPrefix}-${horizontalVariant}`, numbered && `${bsPrefix}-numbered`)\n });\n});\nListGroup.displayName = 'ListGroup';\nexport default Object.assign(ListGroup, {\n Item: ListGroupItem\n});","export function onError(error) {\n let message = error.toString();\n \n // Auth errors\n if (!(error instanceof Error) && error.message) {\n message = error.message;\n }\n \n console.log(\"Error\", error)\n alert(message);\n }","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError } from './AmplifyError';\n/**\n * Error class for errors that associated with unsuccessful HTTP responses.\n * It's throw by API category REST API handlers and GraphQL query handlers for now.\n */\nexport class ApiError extends AmplifyError {\n /**\n * The unwrapped HTTP response causing the given API error.\n */\n get response() {\n return this._response\n ? replicateApiErrorResponse(this._response)\n : undefined;\n }\n constructor(params) {\n super(params);\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = ApiError;\n Object.setPrototypeOf(this, ApiError.prototype);\n if (params.response) {\n this._response = params.response;\n }\n }\n}\nconst replicateApiErrorResponse = (response) => ({\n ...response,\n headers: { ...response.headers },\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ApiError } from '@aws-amplify/core/internals/utils';\nexport class RestApiError extends ApiError {\n constructor(params) {\n super(params);\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = RestApiError;\n Object.setPrototypeOf(this, RestApiError.prototype);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RestApiError } from './RestApiError';\n/**\n * Internal-only class for CanceledError.\n *\n * @internal\n */\nexport class CanceledError extends RestApiError {\n constructor(params = {}) {\n super({\n name: 'CanceledError',\n message: 'Request is canceled by user',\n ...params,\n });\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = CanceledError;\n Object.setPrototypeOf(this, CanceledError.prototype);\n }\n}\n/**\n * Check if an error is caused by user calling `cancel()` in REST API.\n *\n * @note This function works **ONLY** for errors thrown by REST API. For GraphQL APIs, use `client.isCancelError(error)`\n * instead. `client` is generated from `generateClient()` API from `aws-amplify/api`.\n *\n * @param {unknown} error The unknown exception to be checked.\n * @returns - A boolean indicating if the error was from an upload cancellation\n */\nexport const isCancelError = (error) => !!error && error instanceof CanceledError;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var RestApiValidationErrorCode;\n(function (RestApiValidationErrorCode) {\n RestApiValidationErrorCode[\"InvalidApiName\"] = \"InvalidApiName\";\n})(RestApiValidationErrorCode || (RestApiValidationErrorCode = {}));\nexport const validationErrorMap = {\n [RestApiValidationErrorCode.InvalidApiName]: {\n message: 'API name is invalid.',\n recoverySuggestion: 'Check if the API name matches the one in your configuration or `aws-exports.js`',\n },\n};\n","import { parseJsonError as parseAwsJsonError, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { RestApiError } from '../errors';\n/**\n * Parses both AWS and non-AWS error responses coming from the users' backend code.\n * * AWS errors generated by the AWS services(e.g. API Gateway, Bedrock). They can be Signature errors,\n * ClockSkew errors, etc. These responses will be parsed to errors with proper name and message from the AWS\n * services.\n * * non-AWS errors thrown by the user code. They can contain any headers or body. Users need to access the\n * error.response to get the headers and body and parse them accordingly. The JS error name and message will\n * be `UnknownError` and `Unknown error` respectively.\n */\nexport const parseRestApiServiceError = async (response) => {\n if (!response) {\n // Response is not considered an error.\n return;\n }\n const parsedAwsError = await parseAwsJsonError(stubErrorResponse(response));\n if (!parsedAwsError) {\n // Response is not considered an error.\n }\n else {\n const bodyText = await response.body?.text();\n return buildRestApiError(parsedAwsError, {\n statusCode: response.statusCode,\n headers: response.headers,\n body: bodyText,\n });\n }\n};\n/**\n * The response object needs to be stub here because the parseAwsJsonError assumes the response body to be valid JSON.\n * Although this is true for AWS services, it is not true for responses from user's code. Once the response body is\n * unwrapped as JSON(and fail), it cannot be read as text again. Therefore, we need to stub the response body here to\n * make sure we can read the error response body as a JSON, and may fall back to read as text if it is not a valid JSON.\n */\nconst stubErrorResponse = (response) => {\n let bodyTextPromise;\n const bodyProxy = new Proxy(response.body, {\n get(target, prop, receiver) {\n if (prop === 'json') {\n // For potential AWS errors, error parser will try to parse the body as JSON first.\n return async () => {\n if (!bodyTextPromise) {\n bodyTextPromise = target.text();\n }\n try {\n return JSON.parse(await bodyTextPromise);\n }\n catch (error) {\n // If response body is not a valid JSON, we stub it to be an empty object and eventually parsed\n // as an unknown error\n return {};\n }\n };\n }\n else if (prop === 'text') {\n // For non-AWS errors, users can access the body as a string as a fallback.\n return async () => {\n if (!bodyTextPromise) {\n bodyTextPromise = target.text();\n }\n return bodyTextPromise;\n };\n }\n else {\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n const responseProxy = new Proxy(response, {\n get(target, prop, receiver) {\n if (prop === 'body') {\n return bodyProxy;\n }\n else {\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n return responseProxy;\n};\n/**\n * Utility to create a new RestApiError from a service error.\n */\nconst buildRestApiError = (error, response) => {\n const restApiError = new RestApiError({\n name: error?.name,\n message: error.message,\n underlyingError: error,\n response,\n });\n // $metadata is only required for backwards compatibility.\n return Object.assign(restApiError, { $metadata: error.$metadata });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nexport const logger = new ConsoleLogger('RestApis');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const DEFAULT_REST_IAM_SIGNING_SERVICE = 'execute-api';\nexport const DEFAULT_APPSYNC_API_SERVICE = 'appsync-api';\nexport const DEFAULT_IAM_SIGNING_REGION = 'us-east-1';\n/**\n * The REST endpoints generated by API Gateway\n * @see {@link https://docs.aws.amazon.com/general/latest/gr/apigateway.html#apigateway_region_data_plane}\n */\nexport const APIG_HOSTNAME_PATTERN = /^.+\\.([a-z0-9-]+)\\.([a-z0-9-]+)\\.amazonaws\\.com/;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { APIG_HOSTNAME_PATTERN, DEFAULT_IAM_SIGNING_REGION, DEFAULT_REST_IAM_SIGNING_SERVICE, } from './constants';\n/**\n * Infer the signing service and region from the given URL, and for REST API only, from the Amplify configuration.\n * It supports raw API Gateway endpoint and AppSync endpoint.\n *\n * @internal\n */\nexport const parseSigningInfo = (url, restApiOptions) => {\n const { service: signingService = DEFAULT_REST_IAM_SIGNING_SERVICE, region: signingRegion = DEFAULT_IAM_SIGNING_REGION, } = restApiOptions?.amplify.getConfig()?.API?.REST?.[restApiOptions?.apiName] ??\n {};\n const { hostname } = url;\n const [, service, region] = APIG_HOSTNAME_PATTERN.exec(hostname) ?? [];\n if (service === DEFAULT_REST_IAM_SIGNING_SERVICE) {\n // The configured endpoint is an API Gateway endpoint\n // @see: https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-call-api.html\n return {\n service,\n region: region ?? signingRegion,\n };\n }\n else if (service === 'appsync-api') {\n // AppSync endpoint is internally supported because GraphQL operation will send request using POST handler.\n // example: https://xxxx.appsync-api.us-east-1.amazonaws.com/graphql\n return {\n service: 'appsync',\n region: region ?? signingRegion,\n };\n }\n else {\n return {\n service: signingService,\n region: signingRegion,\n };\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { RestApiError, RestApiValidationErrorCode, assertValidationError, validationErrorMap, } from '../errors';\n/**\n * Resolve the REST API request URL by:\n * 1. Loading the REST API endpoint from the Amplify configuration with corresponding API name.\n * 2. Appending the path to the endpoint.\n * 3. Merge the query parameters from path and the queryParameter argument which is taken from the public REST API\n * options.\n * 4. Validating the resulting URL string.\n *\n * @internal\n */\nexport const resolveApiUrl = (amplify, apiName, path, queryParams) => {\n const urlStr = amplify.getConfig()?.API?.REST?.[apiName]?.endpoint;\n assertValidationError(!!urlStr, RestApiValidationErrorCode.InvalidApiName);\n try {\n const url = new AmplifyUrl(urlStr + path);\n if (queryParams) {\n const mergedQueryParams = new AmplifyUrlSearchParams(url.searchParams);\n Object.entries(queryParams).forEach(([key, value]) => {\n mergedQueryParams.set(key, value);\n });\n url.search = new AmplifyUrlSearchParams(mergedQueryParams).toString();\n }\n return url;\n }\n catch (error) {\n throw new RestApiError({\n name: RestApiValidationErrorCode.InvalidApiName,\n ...validationErrorMap[RestApiValidationErrorCode.InvalidApiName],\n recoverySuggestion: `Please make sure the REST endpoint URL is a valid URL string. Got ${urlStr}`,\n });\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RestApiError } from './RestApiError';\nimport { validationErrorMap } from './validation';\n/**\n * @internal\n */\nexport function assertValidationError(assertion, name) {\n const { message, recoverySuggestion } = validationErrorMap[name];\n if (!assertion) {\n throw new RestApiError({ name, message, recoverySuggestion });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Determines if IAM authentication should be applied for a GraphQL request.\n *\n * This function checks the `headers` of the HTTP request to determine if IAM authentication\n * is applicable. IAM authentication is considered applicable if there is no `authorization`\n * header, no `x-api-key` header, and `signingServiceInfo` is provided.\n *\n * @param request - The HTTP request object containing headers.\n * @param signingServiceInfo - Optional signing service information,\n * including service and region.\n * @returns A boolean `true` if IAM authentication should be applied.\n *\n * @internal\n */\nexport const isIamAuthApplicableForGraphQL = ({ headers }, signingServiceInfo) => !headers.authorization && !headers['x-api-key'] && !!signingServiceInfo;\n/**\n * Determines if IAM authentication should be applied for a REST request.\n *\n * This function checks the `headers` of the HTTP request to determine if IAM authentication\n * is applicable. IAM authentication is considered applicable if there is no `authorization`\n * header and `signingServiceInfo` is provided.\n *\n * @param request - The HTTP request object containing headers.\n * @param signingServiceInfo - Optional signing service information,\n * including service and region.\n * @returns A boolean `true` if IAM authentication should be applied.\n *\n * @internal\n */\nexport const isIamAuthApplicableForRest = ({ headers }, signingServiceInfo) => !headers.authorization && !!signingServiceInfo;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns signed headers.\n *\n * @param headers `headers` from the request.\n * @returns List of headers included in canonical headers, separated by semicolons (;). This indicates which headers\n * are part of the signing process. Header names must use lowercase characters and must appear in alphabetical order.\n *\n * @internal\n */\nexport const getSignedHeaders = (headers) => Object.keys(headers)\n .map(key => key.toLowerCase())\n .sort()\n .join(';');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// query params\nexport const ALGORITHM_QUERY_PARAM = 'X-Amz-Algorithm';\nexport const AMZ_DATE_QUERY_PARAM = 'X-Amz-Date';\nexport const CREDENTIAL_QUERY_PARAM = 'X-Amz-Credential';\nexport const EXPIRES_QUERY_PARAM = 'X-Amz-Expires';\nexport const REGION_SET_PARAM = 'X-Amz-Region-Set';\nexport const SIGNATURE_QUERY_PARAM = 'X-Amz-Signature';\nexport const SIGNED_HEADERS_QUERY_PARAM = 'X-Amz-SignedHeaders';\nexport const TOKEN_QUERY_PARAM = 'X-Amz-Security-Token';\n// headers\nexport const AUTH_HEADER = 'authorization';\nexport const HOST_HEADER = 'host';\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\n// identifiers\nexport const KEY_TYPE_IDENTIFIER = 'aws4_request';\nexport const SHA256_ALGORITHM_IDENTIFIER = 'AWS4-HMAC-SHA256';\nexport const SIGNATURE_IDENTIFIER = 'AWS4';\n// preset values\nexport const EMPTY_HASH = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';\nexport const UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getCredentialScope } from './getCredentialScope';\nimport { getFormattedDates } from './getFormattedDates';\n/**\n * Extracts common values used for signing both requests and urls.\n *\n * @param options `SignRequestOptions` object containing values used to construct the signature.\n * @returns Common `SigningValues` used for signing.\n *\n * @internal\n */\nexport const getSigningValues = ({ credentials, signingDate = new Date(), signingRegion, signingService, uriEscapePath = true, }) => {\n // get properties from credentials\n const { accessKeyId, secretAccessKey, sessionToken } = credentials;\n // get formatted dates for signing\n const { longDate, shortDate } = getFormattedDates(signingDate);\n // copy header and set signing properties\n const credentialScope = getCredentialScope(shortDate, signingRegion, signingService);\n return {\n accessKeyId,\n credentialScope,\n longDate,\n secretAccessKey,\n sessionToken,\n shortDate,\n signingRegion,\n signingService,\n uriEscapePath,\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns expected date strings to be used in signing.\n *\n * @param date JavaScript `Date` object.\n * @returns `FormattedDates` object containing the following:\n * - longDate: A date string in 'YYYYMMDDThhmmssZ' format\n * - shortDate: A date string in 'YYYYMMDD' format\n *\n * @internal\n */\nexport const getFormattedDates = (date) => {\n const longDate = date.toISOString().replace(/[:-]|\\.\\d{3}/g, '');\n return {\n longDate,\n shortDate: longDate.slice(0, 8),\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KEY_TYPE_IDENTIFIER } from '../constants';\n/**\n * Returns the credential scope which restricts the resulting signature to the specified region and service.\n *\n * @param date Current date in the format 'YYYYMMDD'.\n * @param region AWS region in which the service resides.\n * @param service Service to which the signed request is being sent.\n *\n * @returns A string representing the credential scope with format 'YYYYMMDD/region/service/aws4_request'.\n *\n * @internal\n */\nexport const getCredentialScope = (date, region, service) => `${date}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// TODO: V6 update to different crypto dependency?\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@smithy/util-hex-encoding';\n/**\n * Returns the hashed data a `Uint8Array`.\n *\n * @param key `SourceData` to be used as hashing key.\n * @param data Hashable `SourceData`.\n * @returns `Uint8Array` created from the data as input to a hash function.\n */\nexport const getHashedData = (key, data) => {\n const sha256 = new Sha256(key ?? undefined);\n sha256.update(data);\n // TODO: V6 flip to async digest\n const hashedData = sha256.digestSync();\n return hashedData;\n};\n/**\n * Returns the hashed data as a hex string.\n *\n * @param key `SourceData` to be used as hashing key.\n * @param data Hashable `SourceData`.\n * @returns String using lowercase hexadecimal characters created from the data as input to a hash function.\n *\n * @internal\n */\nexport const getHashedDataAsHex = (key, data) => {\n const hashedData = getHashedData(key, data);\n return toHex(hashedData);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns canonical headers.\n *\n * @param headers Headers from the request.\n * @returns Request headers that will be signed, and their values, separated by newline characters. Header names must\n * use lowercase characters, must appear in alphabetical order, and must be followed by a colon (:). For the values,\n * trim any leading or trailing spaces, convert sequential spaces to a single space, and separate the values\n * for a multi-value header using commas.\n *\n * @internal\n */\nexport const getCanonicalHeaders = (headers) => Object.entries(headers)\n .map(([key, value]) => ({\n key: key.toLowerCase(),\n value: value?.trim().replace(/\\s+/g, ' ') ?? '',\n}))\n .sort((a, b) => (a.key < b.key ? -1 : 1))\n .map(entry => `${entry.key}:${entry.value}\\n`)\n .join('');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a canonical query string.\n *\n * @param searchParams `searchParams` from the request url.\n * @returns URL-encoded query string parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there are empty parameters, append the equals\n * sign to the parameter name before encoding. After encoding, sort the parameters alphabetically by key name. If there\n * is no query string, use an empty string (\"\").\n *\n * @internal\n */\nexport const getCanonicalQueryString = (searchParams) => Array.from(searchParams)\n .sort(([keyA, valA], [keyB, valB]) => {\n if (keyA === keyB) {\n return valA < valB ? -1 : 1;\n }\n return keyA < keyB ? -1 : 1;\n})\n .map(([key, val]) => `${escapeUri(key)}=${escapeUri(val)}`)\n .join('&');\nconst escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a canonical uri.\n *\n * @param pathname `pathname` from request url.\n * @param uriEscapePath Whether to uri encode the path as part of canonical uri. It's used for S3 only where the\n * pathname is already uri encoded, and the signing process is not expected to uri encode it again. Defaults to true.\n * @returns URI-encoded version of the absolute path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path is empty, a forward slash character (/).\n *\n * @internal\n */\nexport const getCanonicalUri = (pathname, uriEscapePath = true) => pathname\n ? uriEscapePath\n ? encodeURIComponent(pathname).replace(/%2F/g, '/')\n : pathname\n : '/';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { EMPTY_HASH, UNSIGNED_PAYLOAD } from '../constants';\nimport { getHashedDataAsHex } from './dataHashHelpers';\n/**\n * Returns the hashed payload.\n *\n * @param body `body` (payload) from the request.\n * @returns String created using the payload in the body of the HTTP request as input to a hash function. This string\n * uses lowercase hexadecimal characters. If the payload is empty, return precalculated result of an empty hash.\n *\n * @internal\n */\nexport const getHashedPayload = (body) => {\n // return precalculated empty hash if body is undefined or null\n if (body == null) {\n return EMPTY_HASH;\n }\n if (isSourceData(body)) {\n const hashedData = getHashedDataAsHex(null, body);\n return hashedData;\n }\n // Defined body is not signable. Return unsigned payload which may or may not be accepted by the service.\n return UNSIGNED_PAYLOAD;\n};\nconst isSourceData = (body) => typeof body === 'string' || ArrayBuffer.isView(body) || isArrayBuffer(body);\nconst isArrayBuffer = (arg) => (typeof ArrayBuffer === 'function' && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === '[object ArrayBuffer]';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getHashedDataAsHex } from './dataHashHelpers';\nimport { getCanonicalRequest } from './getCanonicalRequest';\nimport { getSigningKey } from './getSigningKey';\nimport { getStringToSign } from './getStringToSign';\n/**\n * Calculates and returns an AWS API Signature.\n * https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n *\n * @param request `HttpRequest` to be signed.\n * @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.\n * @returns AWS API Signature to sign a request or url with.\n *\n * @internal\n */\nexport const getSignature = (request, { credentialScope, longDate, secretAccessKey, shortDate, signingRegion, signingService, uriEscapePath, }) => {\n // step 1: create a canonical request\n const canonicalRequest = getCanonicalRequest(request, uriEscapePath);\n // step 2: create a hash of the canonical request\n const hashedRequest = getHashedDataAsHex(null, canonicalRequest);\n // step 3: create a string to sign\n const stringToSign = getStringToSign(longDate, credentialScope, hashedRequest);\n // step 4: calculate the signature\n const signature = getHashedDataAsHex(getSigningKey(secretAccessKey, shortDate, signingRegion, signingService), stringToSign);\n return signature;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getCanonicalHeaders } from './getCanonicalHeaders';\nimport { getCanonicalQueryString } from './getCanonicalQueryString';\nimport { getCanonicalUri } from './getCanonicalUri';\nimport { getHashedPayload } from './getHashedPayload';\nimport { getSignedHeaders } from './getSignedHeaders';\n/**\n * Returns a canonical request.\n *\n * @param request `HttpRequest` from which to create the canonical request from.\n * @param uriEscapePath Whether to uri encode the path as part of canonical uri. It's used for S3 only where the\n * pathname is already uri encoded, and the signing process is not expected to uri encode it again. Defaults to true.\n * @returns String created by by concatenating the following strings, separated by newline characters:\n * - HTTPMethod\n * - CanonicalUri\n * - CanonicalQueryString\n * - CanonicalHeaders\n * - SignedHeaders\n * - HashedPayload\n *\n * @internal\n */\nexport const getCanonicalRequest = ({ body, headers, method, url }, uriEscapePath = true) => [\n method,\n getCanonicalUri(url.pathname, uriEscapePath),\n getCanonicalQueryString(url.searchParams),\n getCanonicalHeaders(headers),\n getSignedHeaders(headers),\n getHashedPayload(body),\n].join('\\n');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { SHA256_ALGORITHM_IDENTIFIER } from '../constants';\n/**\n * Returns a string to be signed.\n *\n * @param date Current date in the format 'YYYYMMDDThhmmssZ'.\n * @param credentialScope String representing the credential scope with format 'YYYYMMDD/region/service/aws4_request'.\n * @param hashedRequest Hashed canonical request.\n *\n * @returns A string created by by concatenating the following strings, separated by newline characters:\n * - Algorithm\n * - RequestDateTime\n * - CredentialScope\n * - HashedCanonicalRequest\n *\n * @internal\n */\nexport const getStringToSign = (date, credentialScope, hashedRequest) => [SHA256_ALGORITHM_IDENTIFIER, date, credentialScope, hashedRequest].join('\\n');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KEY_TYPE_IDENTIFIER, SIGNATURE_IDENTIFIER } from '../constants';\nimport { getHashedData } from './dataHashHelpers';\n/**\n * Returns a signing key to be used for signing requests.\n *\n * @param secretAccessKey AWS secret access key from credentials.\n * @param date Current date in the format 'YYYYMMDD'.\n * @param region AWS region in which the service resides.\n * @param service Service to which the signed request is being sent.\n *\n * @returns `Uint8Array` calculated from its composite parts.\n *\n * @internal\n */\nexport const getSigningKey = (secretAccessKey, date, region, service) => {\n const key = `${SIGNATURE_IDENTIFIER}${secretAccessKey}`;\n const dateKey = getHashedData(key, date);\n const regionKey = getHashedData(dateKey, region);\n const serviceKey = getHashedData(regionKey, service);\n const signingKey = getHashedData(serviceKey, KEY_TYPE_IDENTIFIER);\n return signingKey;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a `Date` that is corrected for clock skew.\n *\n * @param systemClockOffset The offset of the system clock in milliseconds.\n *\n * @returns `Date` representing the current time adjusted by the system clock offset.\n *\n * @internal\n */\nexport const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isClockSkewed } from './isClockSkewed';\n/**\n * Returns the difference between clock time and the current system time if clock is skewed.\n *\n * @param clockTimeInMilliseconds Clock time in milliseconds.\n * @param currentSystemClockOffset Current system clock offset in milliseconds.\n *\n * @internal\n */\nexport const getUpdatedSystemClockOffset = (clockTimeInMilliseconds, currentSystemClockOffset) => {\n if (isClockSkewed(clockTimeInMilliseconds, currentSystemClockOffset)) {\n return clockTimeInMilliseconds - Date.now();\n }\n return currentSystemClockOffset;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getSkewCorrectedDate } from './getSkewCorrectedDate';\n// 5 mins in milliseconds. Ref: https://github.com/aws/aws-sdk-js-v3/blob/6c0f44fab30a1bb2134af47362a31332abc3666b/packages/middleware-signing/src/utils/isClockSkewed.ts#L10\nconst SKEW_WINDOW = 5 * 60 * 1000;\n/**\n * Checks if the provided date is within the skew window of 5 minutes.\n *\n * @param clockTimeInMilliseconds Time to check for skew in milliseconds.\n * @param clockOffsetInMilliseconds Offset to check clock against in milliseconds.\n *\n * @returns True if skewed. False otherwise.\n *\n * @internal\n */\nexport const isClockSkewed = (clockTimeInMilliseconds, clockOffsetInMilliseconds) => Math.abs(getSkewCorrectedDate(clockOffsetInMilliseconds).getTime() -\n clockTimeInMilliseconds) >= SKEW_WINDOW;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { signRequest } from './signer/signatureV4';\nimport { getSkewCorrectedDate } from './utils/getSkewCorrectedDate';\nimport { getUpdatedSystemClockOffset } from './utils/getUpdatedSystemClockOffset';\n/**\n * Middleware that SigV4 signs request with AWS credentials, and correct system clock offset.\n * This middleware is expected to be placed after retry middleware.\n */\nexport const signingMiddlewareFactory = ({ credentials, region, service, uriEscapePath = true, }) => {\n let currentSystemClockOffset;\n return (next, context) => async function signingMiddleware(request) {\n currentSystemClockOffset = currentSystemClockOffset ?? 0;\n const signRequestOptions = {\n credentials: typeof credentials === 'function'\n ? await credentials({\n forceRefresh: !!context?.isCredentialsExpired,\n })\n : credentials,\n signingDate: getSkewCorrectedDate(currentSystemClockOffset),\n signingRegion: region,\n signingService: service,\n uriEscapePath,\n };\n const signedRequest = await signRequest(request, signRequestOptions);\n const response = await next(signedRequest);\n // Update system clock offset if response contains date header, regardless of the status code.\n // non-2xx response will still be returned from next handler instead of thrown, because it's\n // only thrown by the retry middleware.\n const dateString = getDateHeader(response);\n if (dateString) {\n currentSystemClockOffset = getUpdatedSystemClockOffset(Date.parse(dateString), currentSystemClockOffset);\n }\n return response;\n };\n};\nconst getDateHeader = ({ headers } = {}) => headers?.date ?? headers?.Date ?? headers?.['x-amz-date'];\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { retryMiddlewareFactory } from '../middleware/retry';\nimport { signingMiddlewareFactory, } from '../middleware/signing';\nimport { userAgentMiddlewareFactory, } from '../middleware/userAgent';\nimport { composeTransferHandler } from '../internal/composeTransferHandler';\nimport { fetchTransferHandler } from './fetch';\nexport const authenticatedHandler = composeTransferHandler(fetchTransferHandler, [\n userAgentMiddlewareFactory,\n retryMiddlewareFactory,\n signingMiddlewareFactory,\n]);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getSignedHeaders } from './utils/getSignedHeaders';\nimport { getSigningValues } from './utils/getSigningValues';\nimport { AMZ_DATE_HEADER, AUTH_HEADER, HOST_HEADER, SHA256_ALGORITHM_IDENTIFIER, TOKEN_HEADER, } from './constants';\nimport { getSignature } from './utils/getSignature';\n/**\n * Given a `HttpRequest`, returns a Signature Version 4 signed `HttpRequest`.\n *\n * @param request `HttpRequest` to be signed.\n * @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.\n * @returns A `HttpRequest` with authentication headers which can grant temporary access to AWS resources.\n */\nexport const signRequest = (request, options) => {\n const signingValues = getSigningValues(options);\n const { accessKeyId, credentialScope, longDate, sessionToken } = signingValues;\n // create the request to sign\n const headers = { ...request.headers };\n headers[HOST_HEADER] = request.url.host;\n headers[AMZ_DATE_HEADER] = longDate;\n if (sessionToken) {\n headers[TOKEN_HEADER] = sessionToken;\n }\n const requestToSign = { ...request, headers };\n // calculate and add the signature to the request\n const signature = getSignature(requestToSign, signingValues);\n const credentialEntry = `Credential=${accessKeyId}/${credentialScope}`;\n const signedHeadersEntry = `SignedHeaders=${getSignedHeaders(headers)}`;\n const signatureEntry = `Signature=${signature}`;\n headers[AUTH_HEADER] =\n `${SHA256_ALGORITHM_IDENTIFIER} ${credentialEntry}, ${signedHeadersEntry}, ${signatureEntry}`;\n return requestToSign;\n};\n","import { authenticatedHandler, getRetryDecider, jitteredBackoff, unauthenticatedHandler, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { logger, parseRestApiServiceError, parseSigningInfo, } from '../../utils';\nimport { resolveHeaders } from '../../utils/resolveHeaders';\n/**\n * Make REST API call with best-effort IAM auth.\n * @param amplify Amplify instance to to resolve credentials and tokens. Should use different instance in client-side\n * and SSR\n * @param options Options accepted from public API options when calling the handlers.\n * @param signingServiceInfo Internal-only options enable IAM auth as well as to to overwrite the IAM signing service\n * and region. If specified, and NONE of API Key header or Auth header is present, IAM auth will be used.\n * @param iamAuthApplicable Callback function that is used to determine if IAM Auth should be used or not.\n *\n * @internal\n */\nexport const transferHandler = async (amplify, options, iamAuthApplicable, signingServiceInfo) => {\n const { url, method, headers, body, withCredentials, abortSignal } = options;\n const resolvedBody = body\n ? body instanceof FormData\n ? body\n : JSON.stringify(body ?? '')\n : undefined;\n const resolvedHeaders = resolveHeaders(headers, body);\n const request = {\n url,\n headers: resolvedHeaders,\n method,\n body: resolvedBody,\n };\n const baseOptions = {\n retryDecider: getRetryDecider(parseRestApiServiceError),\n computeDelay: jitteredBackoff,\n withCrossDomainCredentials: withCredentials,\n abortSignal,\n };\n const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);\n let response;\n const credentials = await resolveCredentials(amplify);\n if (isIamAuthApplicable && credentials) {\n const signingInfoFromUrl = parseSigningInfo(url);\n const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;\n const signingRegion = signingServiceInfo?.region ?? signingInfoFromUrl.region;\n response = await authenticatedHandler(request, {\n ...baseOptions,\n credentials,\n region: signingRegion,\n service: signingService,\n });\n }\n else {\n response = await unauthenticatedHandler(request, {\n ...baseOptions,\n });\n }\n // Clean-up un-modeled properties from response.\n return {\n statusCode: response.statusCode,\n headers: response.headers,\n body: response.body,\n };\n};\nconst resolveCredentials = async (amplify) => {\n try {\n const { credentials } = await amplify.Auth.fetchAuthSession();\n if (credentials) {\n return credentials;\n }\n }\n catch (e) {\n logger.debug('No credentials available, the request will be unsigned.');\n }\n return null;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const resolveHeaders = (headers, body) => {\n const normalizedHeaders = {};\n for (const key in headers) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n if (body) {\n normalizedHeaders['content-type'] = 'application/json; charset=UTF-8';\n if (body instanceof FormData) {\n /**\n * If body is a FormData we should not allow setting content-type.\n * It's because runtime HTTP handlers(xhr, fetch, undici, node-fetch,\n * etc.) will modify the content-type value when setting multipart\n * boundary.\n */\n delete normalizedHeaders['content-type'];\n }\n }\n return normalizedHeaders;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createCancellableOperation, logger, parseSigningInfo, resolveApiUrl, } from '../../utils';\nimport { isIamAuthApplicableForRest } from '../../utils/isIamAuthApplicable';\nimport { transferHandler } from './handler';\nconst publicHandler = (amplify, options, method) => createCancellableOperation(async (abortSignal) => {\n const { apiName, options: apiOptions = {}, path: apiPath } = options;\n const url = resolveApiUrl(amplify, apiName, apiPath, apiOptions?.queryParams);\n const libraryConfigHeaders = await amplify.libraryOptions?.API?.REST?.headers?.({\n apiName,\n });\n const { headers: invocationHeaders = {} } = apiOptions;\n const headers = {\n // custom headers from invocation options should precede library options\n ...libraryConfigHeaders,\n ...invocationHeaders,\n };\n const signingServiceInfo = parseSigningInfo(url, {\n amplify,\n apiName,\n });\n logger.debug(method, url, headers, `IAM signing options: ${JSON.stringify(signingServiceInfo)}`);\n return transferHandler(amplify, {\n ...apiOptions,\n url,\n method,\n headers,\n abortSignal,\n }, isIamAuthApplicableForRest, signingServiceInfo);\n});\nexport const get = (amplify, input) => publicHandler(amplify, input, 'GET');\nexport const post = (amplify, input) => publicHandler(amplify, input, 'POST');\nexport const put = (amplify, input) => publicHandler(amplify, input, 'PUT');\nexport const del = (amplify, input) => publicHandler(amplify, input, 'DELETE');\nexport const head = (amplify, input) => publicHandler(amplify, input, 'HEAD');\nexport const patch = (amplify, input) => publicHandler(amplify, input, 'PATCH');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CanceledError } from '../errors';\nimport { parseRestApiServiceError } from './serviceError';\nimport { logger } from './logger';\n/**\n * @internal\n */\nexport function createCancellableOperation(handler, abortController) {\n const isInternalPost = (targetHandler) => !!abortController;\n // For creating a cancellable operation for public REST APIs, we need to create an AbortController\n // internally. Whereas for internal POST APIs, we need to accept in the AbortController from the\n // callers.\n const publicApisAbortController = new AbortController();\n const publicApisAbortSignal = publicApisAbortController.signal;\n const internalPostAbortSignal = abortController?.signal;\n let abortReason;\n const job = async () => {\n try {\n const response = await (isInternalPost(handler)\n ? handler()\n : handler(publicApisAbortSignal));\n if (response.statusCode >= 300) {\n throw await parseRestApiServiceError(response);\n }\n return response;\n }\n catch (error) {\n const abortSignal = internalPostAbortSignal ?? publicApisAbortSignal;\n const message = abortReason ?? abortSignal.reason;\n if (error.name === 'AbortError' || abortSignal?.aborted === true) {\n const canceledError = new CanceledError({\n ...(message && { message }),\n underlyingError: error,\n recoverySuggestion: 'The API request was explicitly canceled. If this is not intended, validate if you called the `cancel()` function on the API request erroneously.',\n });\n logger.debug(error);\n throw canceledError;\n }\n logger.debug(error);\n throw error;\n }\n };\n if (isInternalPost(handler)) {\n return job();\n }\n else {\n const cancel = (abortMessage) => {\n if (publicApisAbortSignal.aborted === true) {\n return;\n }\n publicApisAbortController.abort(abortMessage);\n // If abort reason is not supported, set a scoped reasons instead. The reason property inside an\n // AbortSignal is a readonly property and trying to set it would throw an error.\n if (abortMessage && publicApisAbortSignal.reason !== abortMessage) {\n abortReason = abortMessage;\n }\n };\n return { response: job(), cancel };\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { del as commonDel, get as commonGet, head as commonHead, patch as commonPatch, post as commonPost, put as commonPut, } from './common/publicApis';\n/**\n * GET HTTP request\n * @param {GetInput} input - Input for GET operation\n * @returns {GetOperation} Operation for GET request\n * @throws - {@link RestApiError}\n * @example\n * Send a GET request\n * ```js\n * import { get, isCancelError } from '@aws-amplify/api';\n *\n * const { body } = await get({\n * apiName,\n * path,\n * options: {\n * headers, // Optional, A map of custom header key/values\n * body, // Optional, JSON object or FormData\n * queryParams, // Optional, A map of query strings\n * }\n * }).response;\n * const data = await body.json();\n * ```\n * @example\n * Cancel a GET request\n *\n * ```js\n * import { get, isCancelError } from '@aws-amplify/api';\n *\n * const { response, cancel } = get({apiName, path, options});\n * cancel(message);\n * try {\n * await response;\n * } catch (e) {\n * if (isCancelError(e)) {\n * // handle request cancellation\n * }\n * //...\n * }\n * ```\n */\nexport const get = (input) => commonGet(Amplify, input);\n/**\n * POST HTTP request\n * @param {PostInput} input - Input for POST operation\n * @returns {PostOperation} Operation for POST request\n * @throws - {@link RestApiError}\n * @example\n * Send a POST request\n * ```js\n * import { post, isCancelError } from '@aws-amplify/api';\n *\n * const { body } = await post({\n * apiName,\n * path,\n * options: {\n * headers, // Optional, A map of custom header key/values\n * body, // Optional, JSON object or FormData\n * queryParams, // Optional, A map of query strings\n * }\n * }).response;\n * const data = await body.json();\n * ```\n * @example\n * Cancel a POST request\n *\n * ```js\n * import { post, isCancelError } from '@aws-amplify/api';\n *\n * const { response, cancel } = post({apiName, path, options});\n * cancel(message);\n * try {\n * await response;\n * } catch (e) {\n * if (isCancelError(e)) {\n * // handle request cancellation\n * }\n * //...\n * }\n * ```\n */\nexport const post = (input) => commonPost(Amplify, input);\n/**\n * PUT HTTP request\n * @param {PutInput} input - Input for PUT operation\n * @returns {PutOperation} Operation for PUT request\n * @throws - {@link RestApiError}\n * @example\n * Send a PUT request\n * ```js\n * import { put, isCancelError } from '@aws-amplify/api';\n *\n * const { body } = await put({\n * apiName,\n * path,\n * options: {\n * headers, // Optional, A map of custom header key/values\n * body, // Optional, JSON object or FormData\n * queryParams, // Optional, A map of query strings\n * }\n * }).response;\n * const data = await body.json();\n * ```\n * @example\n * Cancel a PUT request\n * ```js\n * import { put, isCancelError } from '@aws-amplify/api';\n *\n * const { response, cancel } = put({apiName, path, options});\n * cancel(message);\n * try {\n * await response;\n * } catch (e) {\n * if (isCancelError(e)) {\n * // handle request cancellation\n * }\n * //...\n * }\n * ```\n */\nexport const put = (input) => commonPut(Amplify, input);\n/**\n * DELETE HTTP request\n * @param {DeleteInput} input - Input for DELETE operation\n * @returns {DeleteOperation} Operation for DELETE request\n * @throws - {@link RestApiError}\n * @example\n * Send a DELETE request\n * ```js\n * import { del } from '@aws-amplify/api';\n *\n * const { statusCode } = await del({\n * apiName,\n * path,\n * options: {\n * headers, // Optional, A map of custom header key/values\n * queryParams, // Optional, A map of query strings\n * }\n * }).response;\n * ```\n */\nexport const del = (input) => commonDel(Amplify, input);\n/**\n * HEAD HTTP request\n * @param {HeadInput} input - Input for HEAD operation\n * @returns {HeadOperation} Operation for HEAD request\n * @throws - {@link RestApiError}\n * @example\n * Send a HEAD request\n * ```js\n * import { head, isCancelError } from '@aws-amplify/api';\n *\n * const { headers, statusCode } = await head({\n * apiName,\n * path,\n * options: {\n * headers, // Optional, A map of custom header key/values\n * queryParams, // Optional, A map of query strings\n * }\n * }),response;\n * ```\n *\n */\nexport const head = (input) => commonHead(Amplify, input);\n/**\n * PATCH HTTP request\n * @param {PatchInput} input - Input for PATCH operation\n * @returns {PatchOperation} Operation for PATCH request\n * @throws - {@link RestApiError}\n * @example\n * Send a PATCH request\n * ```js\n * import { patch } from '@aws-amplify/api';\n *\n * const { body } = await patch({\n * apiName,\n * path,\n * options: {\n * headers, // Optional, A map of custom header key/values\n * body, // Optional, JSON object or FormData\n * queryParams, // Optional, A map of query strings\n * }\n * }).response;\n * const data = await body.json();\n * ```\n *\n * @example\n * Cancel a PATCH request\n * ```js\n * import { patch, isCancelError } from '@aws-amplify/api';\n *\n * const { response, cancel } = patch({apiName, path, options});\n * cancel(message);\n * try {\n * await response;\n * } catch (e) {\n * if (isCancelError(e)) {\n * // handle request cancellation\n * }\n * //...\n * }\n * ```\n */\nexport const patch = (input) => commonPatch(Amplify, input);\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\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 && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\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 *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\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 (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 const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\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 *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && 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 *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\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 *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\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 {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n 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: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\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 * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\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 */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n 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 *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\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 *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\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 *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\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\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\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 env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\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} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\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 *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\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 *\n * @returns {string} The combined full path\n */\nexport default 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 *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default 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 *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\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 *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, 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 // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\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\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, 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(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, 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(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\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 (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nexport { _OverloadYield as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _wrapAsyncGenerator(e) {\n return function () {\n return new AsyncGenerator(e.apply(this, arguments));\n };\n}\nfunction AsyncGenerator(e) {\n var r, t;\n function resume(r, t) {\n try {\n var n = e[r](t),\n o = n.value,\n u = o instanceof OverloadYield;\n Promise.resolve(u ? o.v : o).then(function (t) {\n if (u) {\n var i = \"return\" === r ? \"return\" : \"next\";\n if (!o.k || t.done) return resume(i, t);\n t = e[i](t).value;\n }\n settle(n.done ? \"return\" : \"normal\", t);\n }, function (e) {\n resume(\"throw\", e);\n });\n } catch (e) {\n settle(\"throw\", e);\n }\n }\n function settle(e, n) {\n switch (e) {\n case \"return\":\n r.resolve({\n value: n,\n done: !0\n });\n break;\n case \"throw\":\n r.reject(n);\n break;\n default:\n r.resolve({\n value: n,\n done: !1\n });\n }\n (r = r.next) ? resume(r.key, r.arg) : t = null;\n }\n this._invoke = function (e, n) {\n return new Promise(function (o, u) {\n var i = {\n key: e,\n arg: n,\n resolve: o,\n reject: u,\n next: null\n };\n t ? t = t.next = i : (r = t = i, resume(e, n));\n });\n }, \"function\" != typeof e[\"return\"] && (this[\"return\"] = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, AsyncGenerator.prototype.next = function (e) {\n return this._invoke(\"next\", e);\n}, AsyncGenerator.prototype[\"throw\"] = function (e) {\n return this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype[\"return\"] = function (e) {\n return this._invoke(\"return\", e);\n};\nexport { _wrapAsyncGenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _awaitAsyncGenerator(e) {\n return new OverloadYield(e, 0);\n}\nexport { _awaitAsyncGenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _asyncGeneratorDelegate(t) {\n var e = {},\n n = !1;\n function pump(e, r) {\n return n = !0, r = new Promise(function (n) {\n n(t[e](r));\n }), {\n done: !1,\n value: new OverloadYield(r, 1)\n };\n }\n return e[\"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\"] = function () {\n return this;\n }, e.next = function (t) {\n return n ? (n = !1, t) : pump(\"next\", t);\n }, \"function\" == typeof t[\"throw\"] && (e[\"throw\"] = function (t) {\n if (n) throw n = !1, t;\n return pump(\"throw\", t);\n }), \"function\" == typeof t[\"return\"] && (e[\"return\"] = function (t) {\n return n ? (n = !1, t) : pump(\"return\", t);\n }), e;\n}\nexport { _asyncGeneratorDelegate as default };","function _asyncIterator(r) {\n var n,\n t,\n o,\n e = 2;\n for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n if (t && null != (n = r[t])) return n.call(r);\n if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n t = \"@@asyncIterator\", o = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var n = r.done;\n return Promise.resolve(r.value).then(function (r) {\n return {\n value: r,\n done: n\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {\n this.s = r, this.n = r.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.resolve({\n value: r,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n },\n \"throw\": function _throw(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(r);\n}\nexport { _asyncIterator as default };","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\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 *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(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 config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\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 config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.9\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(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 {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let 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 const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\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,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\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 *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import { get, post, put, del } from \"aws-amplify/api\";\nimport axios from 'axios';\n\n// Constants\nexport const RequestType = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE'\n}\n\nexport const ResultType = {\n JSON: 'json',\n TEXT: 'text',\n BLOB: 'blob'\n}\n\n//This file requires backend changes in listItem.js, to accommodate loadRefuels\n\nfunction createAxiosConfig(method, params) {\n const axiosOptions = {\n method,\n url: `${process.env.REACT_APP_DEV_API}${params.path}`\n };\n if(!params.options) return axiosOptions\n\n const optionsKeys = Object.keys(params.options)\n if(optionsKeys.includes(\"headers\")) {\n axiosOptions.headers = params.options.headers\n }\n if(optionsKeys.includes(\"queryParams\")) {\n axiosOptions.params = params.options.queryParams\n }\n if(optionsKeys.includes(\"body\")) {\n axiosOptions.data = params.options.body\n }\n if(optionsKeys.includes(\"withCredentials\")) {\n axiosOptions.withCredentials = params.options.withCredentials\n }\n return axiosOptions\n}\n\nexport async function apiRequest(method, params, resultType = ResultType.JSON) {\n if(process.env.REACT_APP_USE_DEV_API === \"true\" && process.env.REACT_APP_DEV_API){ // Local API Calling\n const config = createAxiosConfig(method, params)\n let response;\n try{\n response = await axios(config)\n } catch(e) {\n if(e.response){\n response = e.response\n } else {\n response = {headers: [], status: 600, data: e.message}\n }\n }\n return {\n headers: response.headers,\n statusCode: response.status,\n body: response.data\n }\n } else { // Production API Calling\n let result = undefined;\n switch(method) {\n case RequestType.GET:\n result = get(params)\n break;\n case RequestType.POST:\n result = post(params)\n break;\n case RequestType.PUT:\n result = put(params)\n break;\n case RequestType.DELETE:\n result = del(params)\n break;\n default:\n return undefined;\n }\n\n const response = await result.response\n if(response.headers[\"content-length\"] === \"0\") {\n return {\n headers: response.headers,\n statusCode: response.statusCode,\n }\n }\n\n let body\n let parsingError\n try{\n switch(resultType) {\n case ResultType.BLOB:\n body = await response.body.blob()\n break;\n case ResultType.TEXT:\n body = await response.body.text()\n break;\n case ResultType.JSON:\n default:\n body = await response.body.json()\n break;\n }\n } catch(e) {\n parsingError = e\n }\n \n return {\n headers: response.headers,\n statusCode: response.statusCode,\n body,\n parsingError\n }\n }\n}\n\nexport async function checkVersion(version) {\n const options = { \n queryParams: {\n version: version,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/check-version\", options});\n return restOperation.body\n}\n\nexport async function getUserBlockBalances(club, userID) {\n const options = { \n queryParams: {\n club: club,\n userID: userID,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-block-balances\", options});\n return restOperation.body\n}\n\nexport async function getUserBalance(club, userID) {\n const options = { \n queryParams: {\n club: club,\n userID: userID,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-balance\", options});\n return restOperation.body\n}\n\nexport async function getClubMinimums(club) {\n const options = { \n queryParams: {\n club: club,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-club-minimum\", options});\n return restOperation.body\n}\n\nexport async function getTugs(club) {\n const options = { \n queryParams: {\n club: club,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-tugs\", options});\n return restOperation.body\n}\n\nexport async function loadTransactions(club, startDate, endDate) {\n const options = {\n queryParams: {\n club: club,\n startDate: startDate,\n endDate: endDate,\n balance: \"AccountingSummary\"\n },\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-balances\", options});\n return restOperation\n}\n\nexport async function loadTaxTransactions(club, taxType, startDate, endDate) {\n const options = {\n queryParams: {\n club,\n taxType,\n startDate,\n endDate,\n balance: \"TaxTransactions\"\n },\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-balances\", options});\n return restOperation\n}\n\nexport async function loadDepositTransactions(club, transferType, startDate, endDate) {\n const options = {\n queryParams: {\n club,\n transferType,\n startDate,\n endDate,\n balance: \"DepositTransactions\"\n },\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-balances\", options});\n return restOperation\n}\n\nexport async function loadUserTransactions(club, user, startDate, endDate) {\n const options = {\n queryParams: {\n club,\n user,\n startDate,\n endDate,\n },\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-user-transactions\", options});\n return restOperation\n}\n\nexport async function loadCrewPayload(club, userID) {\n const options = {\n queryParams: {\n club,\n userID\n }\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/serve-crew\", options})\n return restOperation\n}\n\nexport async function loadAdminPayload(club) {\n const options = {\n queryParams: {\n club,\n }\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/serve-admin\", options})\n return restOperation\n}\n\nexport async function getGroundStatus(club, day, includePilots=false) {\n const options = {\n queryParams: {\n club,\n day,\n includePilots\n }\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/ground-status\", options})\n return restOperation\n}\nexport async function loadLogsPayload(club, startDate, endDate, includeSetup = false) {\n const options = {\n queryParams: {\n club,\n startDate,\n endDate,\n includeSetup\n }\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/serve-logs\", options})\n return restOperation\n}\n\nexport async function loadPilotTransactions(club, pilotID, startDate, endDate) {\n const options = {\n queryParams: {\n club: club,\n id: pilotID,\n startDate: startDate,\n endDate: endDate,\n },\n }\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-transactions\", options});\n return restOperation.body\n}\n\nexport async function loadRecentPilotTransactions(club, pilotID){\n if (!club || !pilotID) {\n return null;\n }\n\n const options = {\n queryParams: {\n club: club,\n id: pilotID,\n },\n }\n \n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-recent-transactions\", options});\n return restOperation.body\n}\n\nexport async function getUserData(clubId, userID) {\n const options = { \n queryParams: {\n club: clubId,\n userID: userID,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-pilot\", options});\n return restOperation.body\n}\n\nexport async function loadPilotClubs(userID) {\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: `/get-pilot-clubs/${userID}`});\n return restOperation.body\n}\n\nexport async function loadClubs() {\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/list-clubs\"});\n return restOperation.body\n}\n\nexport async function loadIntroList(club) {\n const restOperation = await apiRequest(RequestType.GET, {\n apiName: \"flightline\",\n path: \"/get-intros\",\n options: {queryParams:{\"club\":club}}\n })\n return restOperation.body\n}\n\nexport async function loadClubPaymentMethods(club) {\n const restOperation = await apiRequest(RequestType.GET, {\n apiName: \"flightline\",\n path: \"/get-club-payment-methods/\",\n options: {queryParams:{\"club\":club}}\n })\n return restOperation.body\n}\n\nexport async function updateClubTransactionLock(club, lockDate) {\n const restOperation = await apiRequest(RequestType.POST, {\n apiName: \"flightline\",\n path: \"/update-admin-parameter/\",\n options: {\n body:{club, lockDate, parameter: \"lockDate\"}\n }\n })\n return restOperation\n}\n\nexport async function addClubFee(club, feeName) {\n const restOperation = await apiRequest(RequestType.POST, {\n apiName: \"flightline\",\n path: \"/update-admin-parameter/\",\n options: {\n body:{club, feeName, action: \"add\", parameter: \"clubFees\"}\n }\n })\n return restOperation\n}\nexport async function removeClubFee(club, feeName) {\n const restOperation = await apiRequest(RequestType.POST, {\n apiName: \"flightline\",\n path: \"/update-admin-parameter/\",\n options: {\n body:{club, feeName, action: \"remove\", parameter: \"clubFees\"}\n }\n })\n return restOperation\n}\n\nexport async function startDay(club) {\n const restOperation = await apiRequest(RequestType.POST, {\n apiName: \"flightline\", \n path: \"/start-day\",\n options: {\n body:{club}\n }\n });\n return restOperation;\n}\n\nexport async function updateDefaultIntroStalePeriod(club, period) {\n const restOperation = await apiRequest(RequestType.POST, {\n apiName: \"flightline\",\n path: \"/update-admin-parameter/\",\n options: {\n body:{club, period, parameter: \"introStalePeriod\"}\n }\n })\n return restOperation\n}\n\nasync function loadItem(options) {\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/list-items/\", options});\n return restOperation.body\n}\n\nexport async function loadGliders(club) {\n const options = { \n queryParams: {\n club: club,\n type: \"GLIDER\",\n }};\n return loadItem(options);\n}\n\nexport async function loadTugs(club) {\n const options = { \n queryParams: {\n club: club,\n type: \"TUG\",\n }};\n return loadItem(options);\n}\n\nexport async function loadRefuels(tug) {\n const options = { \n queryParams: {\n tug: tug,\n type: \"REFUEL\",\n }};\n return loadItem(options);\n}\n\nexport async function loadPilots(club) {\n const options = { \n queryParams: {\n club: club,\n type: \"PILOT\",\n }};\n return loadItem(options);\n}\n\nexport async function loadPaymentMethods(club) {\n const options = {\n queryParams: {\n club: club,\n }};\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-club-payment-methods\", options});\n return restOperation.body\n}\n\nexport async function loadBlocks(club) {\n const options = { \n queryParams: {\n club: club,\n type: \"BLOCK\",\n }};\n return loadItem(options);\n}\n\nexport async function loadLaunches(club) {\n const options = { \n queryParams: {\n club: club,\n type: \"LAUNCH\",\n }};\n return loadItem(options);\n}\n\nexport async function loadIntroLaunches(club) {\n const options = { \n queryParams: {\n club: club,\n type: \"INTRO_LAUNCH\",\n }};\n return loadItem(options);\n}\n\nexport async function loadFlights(club, dayText) {\n const options = { \n queryParams: {\n club: club, \n day: dayText,\n type: \"FLIGHT\",\n }};\n return loadItem(options);\n}\n\nexport async function loadTows(club){\n const options = await {\n queryParams: {\n club: club,\n type: \"TOW\"\n }\n };\n return loadItem(options);\n}\n\n// Delete items\nexport async function deleteFlight(club, flight, dayText) {\n const options = { \n queryParams: {\n club: club, \n date: dayText,\n object: \"FLIGHT\",\n item: flight,\n }};\n const restOperation = await apiRequest(RequestType.DELETE, {apiName: \"flightline\", path: \"/delete/\", options});\n return restOperation.body\n}\n\nexport async function deletePilot(club, id) {\n const options = { \n queryParams: {\n club: club, \n object: \"PILOT\",\n item: id,\n }};\n const restOperation = await apiRequest(RequestType.DELETE, {apiName: \"flightline\", path: \"/delete/\", options});\n return restOperation.body\n}\n\nexport async function deleteLaunch(club, id) {\n const options = { \n queryParams: {\n club: club, \n object: \"LAUNCH\",\n item: id,\n }};\n const restOperation = await apiRequest(RequestType.DELETE, {apiName: \"flightline\", path: \"/delete/\", options});\n return restOperation.body\n}\n\nexport async function deleteIntroLaunch(club, id) {\n const options = { \n queryParams: {\n club: club, \n object: \"INTRO_LAUNCH\",\n item: id,\n }};\n const restOperation = await apiRequest(RequestType.DELETE, {apiName: \"flightline\", path: \"/delete/\", options});\n return restOperation.body\n}\n\nexport async function deleteGlider(club, id) {\n const options = { \n queryParams: {\n club: club, \n object: \"GLIDER\",\n item: id,\n }};\n const restOperation = await apiRequest(RequestType.DELETE, {apiName: \"flightline\", path: \"/delete/\", options});\n return restOperation.body\n}\n\nexport async function deleteTug(club, id) {\n const options = { \n queryParams: {\n club: club, \n object: \"TUG\",\n item: id,\n }};\n const restOperation = await apiRequest(RequestType.DELETE, {apiName: \"flightline\", path: \"/delete/\", options});\n return restOperation.body\n}\n\nexport async function loadInstructors(club) {\n const pilots = await loadPilots(club);\n return pilots.filter(pilot => pilot.isInstructor);\n}\n\nexport async function loadTowPilots(club) {\n const pilots = await loadPilots(club);\n return pilots.filter(pilot => pilot.isTowPilot);\n}\n\nexport async function getClubInfo(clubId) {\n const options = {\n queryParams: {\n club: clubId\n }\n };\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-club-info\", options});\n return restOperation.body\n}\n\nexport async function getClubMessage(clubId) {\n const options = {\n queryParams: {\n club: clubId\n }\n };\n const restOperation = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-club-message\", options});\n return restOperation.body\n} \n\n// Utility functions\nexport function returnFlight(club, id, launches, localDateString){\n const pk = club+\"#FLIGHT#\"+localDateString;\n return returnItem(pk, id, launches);\n}\n\nexport function returnBlock(club, id, blocks){\n const pk = club+\"#BLOCK\";\n return returnItem(pk, id, blocks);\n}\n\nexport function returnLaunch(club, id, launches){\n const pk = club+\"#LAUNCH\";\n return returnItem(pk, id, launches);\n}\n\nexport function returnIntroLaunch(club, id, launches){\n const pk = club+\"#INTRO_LAUNCH\";\n return returnItem(pk, id, launches);\n}\n\nexport function returnPilot(club, id, pilots){\n const pk = club+\"#PILOT\";\n return returnItem(pk, id, pilots);\n}\n\nexport function returnGlider(club, id, gliders){\n const pk = club+\"#GLIDER\";\n return returnItem(pk, id, gliders);\n}\n\nexport function returnIntro(club, id, intros){\n const pk = club+\"#INTRO\";\n return returnItem(pk, id, intros);\n}\n\nexport function returnTug(club, id, tugs){\n const pk = club+\"#TUG\";\n return returnItem(pk, id, tugs);\n}\n\nexport function returnClub(id, clubs){\n const pk = \"CLUB\";\n return returnItem(pk, id, clubs);\n}\n\n// Utility function to return item from list in already retrieved list - avoids another database call\nexport function returnItem(pk, sk, itemlist){\n for (var item of itemlist) {\n if ((item.PK === pk) && (item.SK === sk)){\n return item;\n }\n }\n}\n\n\n// export async function returnHobbs(club, tug){\n// const tows = await loadTows(club);\n// let tugTows = tows.filter(a => a.tug === tug);\n// tugTows = tugTows.sort((a,b)=>b.date-a.date);\n// const hobbsTime = tugTows.hobbs[0];\n// return hobbsTime;\n// }\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef(\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({\n as: Component = 'div',\n className,\n type = 'valid',\n tooltip = false,\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","\"use client\";\n\nimport * as React from 'react';\n\n// TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n className,\n type = 'checkbox',\n isValid = false,\n isInvalid = false,\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 = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n return /*#__PURE__*/_jsx(\"label\", {\n ...props,\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import * as React from 'react';\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\nfunction map(children, func) {\n let index = 0;\n return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\nfunction forEach(children, func) {\n let index = 0;\n React.Children.forEach(children, child => {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n\n/**\n * Finds whether a component's `children` prop includes a React element of the\n * specified type.\n */\nfunction hasChildOfType(children, type) {\n return React.Children.toArray(children).some(child => /*#__PURE__*/React.isValidElement(child) && child.type === type);\n}\nexport { map, forEach, hasChildOfType };","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { hasChildOfType } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n bsSwitchPrefix,\n inline = false,\n reverse = false,\n disabled = false,\n isValid = false,\n isInvalid = false,\n feedbackTooltip = false,\n feedback,\n feedbackType,\n className,\n style,\n title = '',\n type = 'checkbox',\n label,\n children,\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 = 'input',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n const {\n controlId\n } = useContext(FormContext);\n const innerFormContext = useMemo(() => ({\n controlId: id || controlId\n }), [controlId, id]);\n const hasLabel = !children && label != null && label !== false || hasChildOfType(children, FormCheckLabel);\n const input = /*#__PURE__*/_jsx(FormCheckInput, {\n ...props,\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: as\n });\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: innerFormContext,\n children: /*#__PURE__*/_jsx(\"div\", {\n style: style,\n className: classNames(className, hasLabel && bsPrefix, inline && `${bsPrefix}-inline`, reverse && `${bsPrefix}-reverse`, type === 'switch' && bsSwitchPrefix),\n children: children || /*#__PURE__*/_jsxs(_Fragment, {\n children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n title: title,\n children: label\n }), feedback && /*#__PURE__*/_jsx(Feedback, {\n type: feedbackType,\n tooltip: feedbackTooltip,\n children: feedback\n })]\n })\n })\n });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n Input: FormCheckInput,\n Label: FormCheckLabel\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n type,\n size,\n htmlSize,\n id,\n className,\n isValid = false,\n isInvalid = false,\n plaintext,\n readOnly,\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 = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, plaintext ? `${bsPrefix}-plaintext` : bsPrefix, size && `${bsPrefix}-${size}`, type === 'color' && `${bsPrefix}-color`, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormFloating = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nFormFloating.displayName = 'FormFloating';\nexport default FormFloating;","import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n controlId,\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 ...props\n}, ref) => {\n const context = useMemo(() => ({\n controlId\n }), [controlId]);\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref\n })\n });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{\n ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef(\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(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, {\n ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\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 = 'label',\n bsPrefix,\n column = false,\n visuallyHidden = false,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n let columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/_jsx(Col, {\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n _jsx(Component, {\n ref: ref,\n className: classes,\n htmlFor: htmlFor,\n ...props\n })\n );\n});\nFormLabel.displayName = 'FormLabel';\nexport default FormLabel;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n return /*#__PURE__*/_jsx(\"input\", {\n ...props,\n type: \"range\",\n ref: ref,\n className: classNames(className, bsPrefix),\n id: id || controlId\n });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n htmlSize,\n className,\n isValid = false,\n isInvalid = false,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n return /*#__PURE__*/_jsx(\"select\", {\n ...props,\n size: htmlSize,\n ref: ref,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n id: id || controlId\n });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef(\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({\n bsPrefix,\n className,\n as: Component = 'small',\n muted,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n });\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, {\n ...props,\n ref: ref,\n type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n Input: FormCheck.Input,\n Label: FormCheck.Label\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n controlId,\n label,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsxs(FormGroup, {\n ref: ref,\n className: classNames(className, bsPrefix),\n controlId: controlId,\n ...props,\n children: [children, /*#__PURE__*/_jsx(\"label\", {\n htmlFor: controlId,\n children: label\n })]\n });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * The Form `ref` will be forwarded to the underlying element,\n * which means, unless it's rendered `as` a composite component,\n * it will be a DOM node, when resolved.\n *\n * @type {ReactRef}\n * @alias ref\n */\n _ref: PropTypes.any,\n /**\n * Mark a form as having been validated. Setting it to `true` will\n * toggle any validation styles on the forms elements.\n */\n validated: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n className,\n validated,\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 = 'form',\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n Group: FormGroup,\n Control: FormControl,\n Floating: FormFloating,\n Check: FormCheck,\n Switch,\n Label: FormLabel,\n Text: FormText,\n Range: FormRange,\n Select: FormSelect,\n FloatingLabel\n});","import React from 'react';\n\nconst Table = (props) => {\n const { headers, items, rows } = props;\n return (\n <div>\n <table className=\"table table-bordered table-hover\">\n <TableHeader headers={headers}></TableHeader>\n <TableBody headers={headers} items={items} rows={rows}></TableBody>\n </table>\n </div>\n );\n}\n\nconst TableHeader = (props) => {\n const { headers } = props;\n return(\n <thead className=\"thead-dark\" key=\"header-1\">\n <tr key=\"header-0\">\n { headers && headers.map((value, index) => {\n return <th className=\"text-center\" key={index}><div>{value}</div></th>\n })}\n </tr>\n </thead>\n );\n}\n\nconst TableBody = (props) => {\n const { headers, items, rows } = props;\n const columns = headers ? headers.length : 0;\n const showSpinner = rows === null;\n\n function buildRow(row, items, i) {\n return (\n <tr key={i}>\n { items.map((value, index) => {\n return <td key={index}>{row[value]}</td>\n })}\n </tr>\n )\n };\n\n return(\n <tbody>\n {showSpinner &&\n <tr key=\"spinner-0\">\n <td colSpan={columns} className=\"text-center\">\n <div className=\"spinner-border\" role=\"status\">\n <span className=\"sr-only\">Loading...</span>\n </div>\n </td>\n </tr>\n }\n { !showSpinner && rows && rows.map((value, i) => {\n return buildRow(value, items, i);\n })}\n </tbody>\n );\n}\n\n\nexport default Table;","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The IANA name of this zone.\n * Defaults to `name` if not overwritten by a subclass.\n * @abstract\n * @type {string}\n */\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /**\n * The type of zone. `iana` for all instances of `IANAZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"iana\";\n }\n\n /**\n * The name of this zone (i.e. the IANA zone name).\n * @override\n * @type {string}\n */\n get name() {\n return this.zoneName;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns false for all IANA zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return false;\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @override\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /**\n * Return whether this Zone is valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return this.valid;\n }\n}\n","import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nlet weekInfoCache = {};\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache[locString];\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n weekInfoCache[locString] = data;\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n\n toString() {\n return `Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`;\n }\n}\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /**\n * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"fixed\";\n }\n\n /**\n * The name of this zone.\n * All fixed zones' names always start with \"UTC\" (plus optional offset)\n * @override\n * @type {string}\n */\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /**\n * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n *\n * @override\n * @type {string}\n */\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /**\n * Returns the offset's common name at the specified timestamp.\n *\n * For fixed offset zones this equals to the zone name.\n * @override\n */\n offsetName() {\n return this.name;\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns true for all fixed offset zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return true;\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n *\n * For fixed offset zones, this is constant and does not depend on a timestamp.\n * @override\n * @return {number}\n */\n offset() {\n return this.fixed;\n }\n\n /**\n * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /**\n * Return whether this Zone is valid:\n * All fixed offset zones are valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\n/**\n * Returns the offset's value as a string\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|å››|五|å…|七|å…«|ä¹]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\n// cache of {numberingSystem: {append: regex}}\nlet digitRegexCache = {};\nexport function resetDigitRegexCache() {\n digitRegexCache = {};\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n const ns = numberingSystem || \"latn\";\n\n if (!digitRegexCache[ns]) {\n digitRegexCache[ns] = {};\n }\n if (!digitRegexCache[ns][append]) {\n digitRegexCache[ns][append] = new RegExp(`${numberingSystems[ns]}${append}`);\n }\n\n return digitRegexCache[ns][append];\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport DateTime from \"./datetime.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\nimport { resetDigitRegexCache } from \"./impl/digits.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n DateTime.resetCache();\n resetDigitRegexCache();\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction 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 .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> 'Ù¡'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'RabiÊ» I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport class TokenParser {\n constructor(locale, format) {\n this.locale = locale;\n this.format = format;\n this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\n this.units = this.tokens.map((t) => unitForToken(t, locale));\n this.disqualifyingUnit = this.units.find((t) => t.invalidReason);\n\n if (!this.disqualifyingUnit) {\n const [regexString, handlers] = buildRegex(this.units);\n this.regex = RegExp(regexString, \"i\");\n this.handlers = handlers;\n }\n }\n\n explainFromTokens(input) {\n if (!this.isValid) {\n return { input, tokens: this.tokens, invalidReason: this.invalidReason };\n } else {\n const [rawMatches, matches] = match(input, this.regex, this.handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return {\n input,\n tokens: this.tokens,\n regex: this.regex,\n rawMatches,\n matches,\n result,\n zone,\n specificOffset,\n };\n }\n }\n\n get isValid() {\n return !this.disqualifyingUnit;\n }\n\n get invalidReason() {\n return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\n }\n}\n\nexport function explainFromTokens(locale, input, format) {\n const parser = new TokenParser(locale, format);\n return parser.explainFromTokens(input);\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n TokenParser,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// cache offsets for zones based on the current timestamp when this function is\n// first called. When we are handling a datetime from components like (year,\n// month, day, hour) in a time zone, we need a guess about what the timezone\n// offset is so that we can convert into a UTC timestamp. One way is to find the\n// offset of now in the zone. The actual date may have a different offset (for\n// example, if we handle a date in June while we're in December in a zone that\n// observes DST), but we can check and adjust that.\n//\n// When handling many dates, calculating the offset for now every time is\n// expensive. It's just a guess, so we can cache the offset to use even if we\n// are right on a time change boundary (we'll just correct in the other\n// direction). Using a timestamp from first read is a slight optimization for\n// handling dates close to the current date, since those dates will usually be\n// in the same offset (we could set the timestamp statically, instead). We use a\n// single timestamp for all zones to make things a bit more predictable.\n//\n// This is safe for quickDT (used by local() and utc()) because we don't fill in\n// higher-order units from tsNow (as we do in fromObject, this requires that\n// offset is calculated from tsNow).\nfunction guessOffsetForZone(zone) {\n if (!zoneOffsetGuessCache[zone]) {\n if (zoneOffsetTs === undefined) {\n zoneOffsetTs = Settings.now();\n }\n\n zoneOffsetGuessCache[zone] = zone.offset(zoneOffsetTs);\n }\n return zoneOffsetGuessCache[zone];\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n }\n\n const loc = Locale.fromObject(opts);\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = guessOffsetForZone(zone);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = Settings.now();\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * Timestamp to use for cached zone offset guesses (exposed for test)\n */\nlet zoneOffsetTs;\n/**\n * Cache for zone offset guesses (exposed for test).\n *\n * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\n * zone.offset().\n */\nlet zoneOffsetGuessCache = {};\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n // If an offset has been passed and we have not been called from\n // clone(), we can trust it and avoid the offset calculation.\n const ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n if (!inst.isValid) {\n return DateTime.invalid(inst.invalid);\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n static resetCache() {\n zoneOffsetTs = undefined;\n zoneOffsetGuessCache = {};\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 dÃa\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n /**\n * Build a parser for `fmt` using the given locale. This parser can be passed\n * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\n * can be used to optimize cases where many dates need to be parsed in a\n * specific format.\n *\n * @param {String} fmt - the format the string is expected to be in (see\n * description)\n * @param {Object} options - options used to set locale and numberingSystem\n * for parser\n * @returns {TokenParser} - opaque object to be used\n */\n static buildFormatParser(fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return new TokenParser(localeToUse, fmt);\n }\n\n /**\n * Create a DateTime from an input string and format parser.\n *\n * The format parser must have been created with the same locale as this call.\n *\n * @param {String} text - the string to parse\n * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\n * @param {Object} opts - options taken by fromFormat()\n * @returns {DateTime}\n */\n static fromFormatParser(text, formatParser, opts = {}) {\n if (isUndefined(text) || isUndefined(formatParser)) {\n throw new InvalidArgumentError(\n \"fromFormatParser requires an input string and a format parser\"\n );\n }\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n\n if (!localeToUse.equals(formatParser.locale)) {\n throw new InvalidArgumentError(\n `fromFormatParser called with a locale of ${localeToUse}, ` +\n `but the format parser was created for ${formatParser.locale}`\n );\n }\n\n const { result, zone, specificOffset, invalidReason } = formatParser.explainFromTokens(text);\n\n if (invalidReason) {\n return DateTime.invalid(invalidReason);\n } else {\n return parseDataToDateTime(\n result,\n zone,\n opts,\n `format ${formatParser.format}`,\n text,\n specificOffset\n );\n }\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","\nimport React, { useState, useEffect} from \"react\";\nimport \"./Accounting.css\";\nimport { Form, FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\nimport \"./Accounting.css\";\nimport { onError } from \"../libs/errorLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport {loadPilotTransactions } from \"../libs/databaseAccess\";\nimport accountsMemberSchema from \"./accounts member schema.json\"\nimport Table from \"../components/Table\"\nimport { DateTime } from \"luxon\";\n\n\nexport default function UserAccount() {\n const {userID, club, isAuthenticated, clubTimeZone } = useAppContext();\n const [startDate, setStartDate] = useState(\"2000-01-01\");\n const [endDate, setEndDate] = useState(\"2000-01-01\");\n const [pilotTransactions, setPilotTransactions] = useState([]);\n\n useEffect(() => {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n\n async function onLoad() {\n try {\n const dateStr = DateTime.fromObject({}, {zone: clubTimeZone}).toISODate()\n // Initialize search to the current date\n setStartDate(dateStr);\n setEndDate(dateStr);\n } catch (e) {\n onError(e); \n }\n }\n onLoad();\n }, [club, isAuthenticated, clubTimeZone, userID]);\n \n useEffect(() => {\n if ((startDate === \"2000-01-01\") || (endDate === \"2000-01-01\")) {\n // If still starting up, exit\n return;\n }\n\n async function onDateChange() {\n // Convert local time to zulu time\n const startDateVal = DateTime.fromISO(startDate).startOf(\"day\").toMillis();\n const endDateVal = DateTime.fromISO(endDate).endOf(\"day\").toMillis();\n const transactionRecords = await loadPilotTransactions(club, userID, startDateVal, endDateVal);\n\n const transactions = transactionRecords.map((transaction) => {\n const amount = transaction.amount || 0;\n const balance = transaction.balance || 0;\n const date = DateTime.fromMillis(transaction.date, {zone: clubTimeZone})\n\n return({\n \"id\": transaction.id,\n \"date\": `${date.toISODate()} ${date.toLocaleString(DateTime.TIME_SIMPLE)}`,\n \"description\": transaction.description,\n \"amount\": amount.toFixed(2),\n \"balance\": balance.toFixed(2),\n })\n });\n \n setPilotTransactions(transactions);\n }\n\n onDateChange();\n }, [club, userID, startDate, endDate, clubTimeZone]);\n\n function updateStart(date){\n setStartDate(date); // Will force an update through useEffect \n setPilotTransactions([]);\n }\n\n function updateEnd(date){\n setEndDate(date);\n setPilotTransactions([]);\n }\n\nreturn (\n <>\n <div className=\"row\">\n <Form>\n <div className=\"col-sm-4\">\n <FormGroup controlId=\" \" className=\"pull-left\" size=\"lg\">\n <FormLabel>Start Date</FormLabel>\n <FormControl\n autoFocus\n type=\"date\"\n value={startDate}\n disabled={startDate === \"2000-01-01\"}\n onChange={e => updateStart(e.target.value)}\n />\n </FormGroup>\n </div>\n <div className=\"col-sm-4\">\n <h2> </h2>\n </div>\n <div className=\"col-sm-4\">\n <FormGroup controlId=\" \" className=\"pull-right\" size=\"lg\">\n <FormLabel>End Date</FormLabel>\n <FormControl\n type=\"date\"\n value={endDate}\n disabled={endDate === \"2000-01-01\"}\n onChange={e => updateEnd(e.target.value)}\n />\n </FormGroup>\n </div>\n </Form>\n </div>\n <hr></hr> \n <div className=\"container p-2\">\n <div className=\"row\">\n <div className=\"col\">\n <h1>Summary</h1>\n <Table headers={Object.values(accountsMemberSchema)} items={Object.keys(accountsMemberSchema)} rows={pilotTransactions} />\n </div>\n </div>\n </div>\n </>\n);\n\n}","import React, {useState, useEffect} from \"react\";\nimport \"./Accounting.css\";\nimport ListGroup from \"react-bootstrap/ListGroup\";\nimport { useNavigate, Link } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport {getUserBalance, getUserBlockBalances, loadFlights, startDay} from \"../libs/databaseAccess\";\nimport \"./Home.css\";\nimport \"./userAccount\";\nimport { DateTime } from \"luxon\";\nimport { Button, Nav } from \"react-bootstrap\";\n\n\nexport default function Home() {\n const { userID, club, clubName, clubLink, clubLogo, clubMessage, isAuthenticated, userIsAdmin, userCanAddFunds, userCanAddIntros, userCanUpdateGliders, userIsActive, clubTimeZone } = useAppContext();\n const [activeFlights, setActiveFlights] = useState([]);\n const [balance, setBalance] = useState(null);\n const [blockBalances, setBlockBalances] = useState([]);\n const navigate = useNavigate();\n \n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n \n try {\n startDay(club);\n\n // Set up current date string\n const dateString = DateTime.fromObject({}, {zone: clubTimeZone}).toISODate()\n\n // // Load initial flight data\n let todaysFlights = await loadFlights(club, dateString);\n // // Filter for flights still in the air and sort by launch time\n const activeFlights = todaysFlights.filter(a => !a.landedAt && !a.cancelledAt).filter(a => a.user === userID);\n\n setActiveFlights(activeFlights);\n } catch (e) {\n onError(e);\n }\n }\n\n onLoad();\n }, [isAuthenticated, club, userID, clubTimeZone]);\n\n\n useEffect(() => {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n\n getUserBlockBalances(club, userID).then((blockBalances) => {\n setBlockBalances(blockBalances);\n });\n\n getUserBalance(club, userID).then((balance) => {\n setBalance(balance.toFixed(2));\n });\n }, [club, isAuthenticated, userID, clubTimeZone]);\n\n\n function renderFlights(flights) {\n return (\n <>\n <hr></hr>\n <h4>Your active flights: </h4>\n <div className=\"flights\">\n { (flights.length === 0) ? <p>None</p> : \n <>\n { flights.map((flight, i) => \n <p key={`flight-${flight.SK}`}>\n {flight.glider}\n </p>)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n function renderBalance() {\n return(\n <>\n { (balance !== null) &&\n <h4 className=\"my-0\">Your account balance: ${balance}</h4>\n }\n { (blockBalances.length > 0) &&\n <h4 className=\"my-0\">\n {blockBalances.map((block) => \n <><span key={`block-${block.blockId}`}> {block.blockName} block balance: {block.blockUnits !== \"unlimited\" && block.blockBalance} {block.blockUnits}, expires: {block.blockExpires} </span><br></br></>\n )}\n </h4>\n }\n </>\n );\n }\n\n function renderMessage() {\n return(\n <>\n <h4 className=\"my-0\"><div dangerouslySetInnerHTML={{ __html: clubMessage }}/></h4>\n </>\n )\n }\n\n function renderLander() {\n return (\n <>\n <div className=\"lander text-center\">\n <h1 className=\"fw-semibold\">Take Up Slack</h1>\n <div className=\"text-body-secondary\">\n <p>Take Up Slack is a glider flight line management tool designed for smartphones. Easily track launches, landings and associated costs. </p>\n <p>You and your members will get customized reporting for personal and glider logbook entries,\n for club level metrics, and for your treasurer. </p>\n <p>Would you be interested in a demo or trial at your club? <a href=\"mailto:patrick@paretoenergy.ca\">Send us an email</a></p>\n <p>From the team that brought you the <a href=\"https://soaringtasks.com/\">Proving Grounds</a></p>\n </div>\n </div>\n <div className=\"text-center\">\n <ListGroup>\n <Nav.Link as={Link} key=\"signup\" to=\"../signup\">\n <Button variant=\"outline-dark\" className=\"mb-2\">Sign Up</Button>\n </Nav.Link>\n <Nav.Link as={Link} key=\"login\" to=\"../login\">\n <Button variant=\"outline-dark\">Log In</Button>\n </Nav.Link>\n </ListGroup>\n </div>\n </>\n );\n }\n\n function renderPageHeading(){\n return(\n <div className=\"header\">\n <div className = \"clubIconContainer\"> \n <a href= {clubLink}>\n <img className = \"clubIcon\" src = {clubLogo} alt=\"club logo\"></img>\n </a>\n </div>\n <h2 className=\"w-100 mb-0\" id = \"clubName\">{clubName}</h2>\n </div>\n )\n }\n\n function renderActivities() {\n if (club === \"None\") {\n navigate(\"../settings\")\n } else {\n return (\n <>\n <div className=\"text-center d-flex flex-column gap-3 py-3\">\n { clubName === \"\" ? \n <h2>Choose your activity</h2> :\n renderPageHeading() \n }\n { userIsActive ? \n <>\n <section className=\"d-flex flex-column gap-2\">\n <h3 className = \"text-start mb-0\">Gliding</h3>\n <Nav.Link as={Link} key = \"gogliding\" to = \"../crew\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Request Flight</Button>\n </Nav.Link>\n <Nav.Link as={Link} key = \"ground\" to = \"../ground\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Record Launch or Landing</Button>\n </Nav.Link>\n </section>\n <section className=\"d-flex flex-column gap-2\">\n <h3 className = \"text-start mb-0\">Tow Pilots</h3>\n <Nav.Link as={Link} key = \"fuel\" to = \"../fuel\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Log Fuel, Oil, or Shift Change</Button>\n </Nav.Link>\n <Nav.Link as={Link} key = \"awaiting\" to = \"../awaiting\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Awaiting Launches</Button>\n </Nav.Link>\n </section>\n <section className=\"d-flex flex-column gap-2\">\n <h3 className = \"text-start mb-0\">Records</h3>\n <Nav.Link as={Link} key = \"logs\" to = \"../logs\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Flight Logs</Button>\n </Nav.Link>\n <Nav.Link as={Link} key = \"userAccount\" to = \"../userAccount\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">User Account Summary</Button>\n </Nav.Link>\n <Nav.Link as={Link} key = \"emergency\" to = \"../emergency\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Emergency Contacts / Directory</Button>\n </Nav.Link>\n </section>\n { (userIsAdmin || userCanAddFunds || userCanAddIntros || userCanUpdateGliders) &&\n <section className=\"d-flex flex-column gap-2\">\n <h3 className = \"text-start mb-0\">Back Office</h3>\n { (userIsAdmin || userCanAddFunds || userCanAddIntros || userCanUpdateGliders) &&\n <Nav.Link as={Link} key = \"admin\" to = \"../admin\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Admin</Button>\n </Nav.Link>\n }\n { userIsAdmin &&\n <Nav.Link as={Link} key = \"accounts\" to = \"../accounts\">\n <Button className=\"w-100\"variant=\"outline-dark\" size=\"lg\">Accounting Charts</Button>\n </Nav.Link>\n }\n { userIsAdmin &&\n <Nav.Link as={Link} key = \"accountsAdmin\" to = \"../accountingAdmin\">\n <Button className=\"w-100\" variant=\"outline-dark\" size=\"lg\">Accounting Admin</Button>\n </Nav.Link>\n }\n </section>\n }\n </> :\n <section className=\"user not activated\">\n <h1>Your account has not been activated at this club</h1>\n <p>Contact a club admin to have your account activated</p>\n <hr></hr>\n </section>\n }\n </div>\n <hr/>\n {renderBalance()}\n { (activeFlights.length > 0 ) && \n renderFlights(activeFlights)\n }\n <hr/>\n {(clubMessage !== \"\") &&\n renderMessage()\n }\n </>\n );\n }\n\n }\n\n function renderSelectClub () {\n return (\n <>\n <div className=\"p-4\">\n <div className=\"user not activated\">\n <h1>Your account does not have an active club</h1>\n <p>Please go to settings and request membership at a club. Then select that club as your active club. A club admin will need to activate your club account.</p>\n </div>\n </div>\n <hr className=\"my-0\" />\n </>\n )\n }\n\n function renderLoader(){\n return(\n <>\n <div className=\"splash-screen\">\n { isAuthenticated ? \n <>Retrieving your data....\n <div className=\"loading-dot\">.</div>\n </> \n : renderLander()}\n </div> \n </>\n )\n }\n\n return (\n <div className=\"Home\">\n {!isAuthenticated || club === \"\" ? \n renderLoader() :\n (club !== \"None\") ? \n renderActivities() :\n renderSelectClub()\n }\n </div>\n );\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getBtoa } from '../../globalHelpers';\nimport { bytesToString } from './bytesToString';\nexport const base64Encoder = {\n /**\n * Convert input to base64-encoded string\n * @param input - string to convert to base64\n * @param options - encoding options that can optionally produce a base64url string\n * @returns base64-encoded string\n */\n convert(input, options = {\n urlSafe: false,\n skipPadding: false,\n }) {\n const inputStr = typeof input === 'string' ? input : bytesToString(input);\n let encodedStr = getBtoa()(inputStr);\n // urlSafe char replacement and skipPadding options conform to the base64url spec\n // https://datatracker.ietf.org/doc/html/rfc4648#section-5\n if (options.urlSafe) {\n encodedStr = encodedStr.replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n if (options.skipPadding) {\n encodedStr = encodedStr.replace(/=/g, '');\n }\n return encodedStr;\n },\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function bytesToString(input) {\n return Array.from(input, byte => String.fromCodePoint(byte)).join('');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Retrieves the device name using the User-Agent Client Hints API if available,\n * falling back to the traditional userAgent string if not.\n *\n * @returns {Promise<string>} A promise that resolves with a string representing the device name.\n *\n * Example Output:\n * navigator.userAgentData:\n * 'macOS 14.2.1 arm macOS Not A(Brand/99.0.0.0;Google Chrome/121.0.6167.160;Chromium/121.0.6167.160'\n * navigator.userAgent:\n * 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/115.0'\n */\nexport const getDeviceName = async () => {\n const { userAgentData } = navigator;\n if (!userAgentData)\n return navigator.userAgent;\n const { platform = '', platformVersion = '', model = '', architecture = '', fullVersionList = [], } = await userAgentData.getHighEntropyValues([\n 'platform',\n 'platformVersion',\n 'architecture',\n 'model',\n 'fullVersionList',\n ]);\n const versionList = fullVersionList\n .map((v) => `${v.brand}/${v.version}`)\n .join(';');\n const deviceName = [\n platform,\n platformVersion,\n architecture,\n model,\n platform,\n versionList,\n ]\n .filter(value => value)\n .join(' ');\n return deviceName || navigator.userAgent;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var AssociateSoftwareTokenException;\n(function (AssociateSoftwareTokenException) {\n AssociateSoftwareTokenException[\"ConcurrentModificationException\"] = \"ConcurrentModificationException\";\n AssociateSoftwareTokenException[\"ForbiddenException\"] = \"ForbiddenException\";\n AssociateSoftwareTokenException[\"InternalErrorException\"] = \"InternalErrorException\";\n AssociateSoftwareTokenException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n AssociateSoftwareTokenException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n AssociateSoftwareTokenException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n AssociateSoftwareTokenException[\"SoftwareTokenMFANotFoundException\"] = \"SoftwareTokenMFANotFoundException\";\n})(AssociateSoftwareTokenException || (AssociateSoftwareTokenException = {}));\nexport var ChangePasswordException;\n(function (ChangePasswordException) {\n ChangePasswordException[\"ForbiddenException\"] = \"ForbiddenException\";\n ChangePasswordException[\"InternalErrorException\"] = \"InternalErrorException\";\n ChangePasswordException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ChangePasswordException[\"InvalidPasswordException\"] = \"InvalidPasswordException\";\n ChangePasswordException[\"LimitExceededException\"] = \"LimitExceededException\";\n ChangePasswordException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ChangePasswordException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n ChangePasswordException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ChangePasswordException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ChangePasswordException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n ChangePasswordException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ChangePasswordException || (ChangePasswordException = {}));\nexport var ConfirmDeviceException;\n(function (ConfirmDeviceException) {\n ConfirmDeviceException[\"ForbiddenException\"] = \"ForbiddenException\";\n ConfirmDeviceException[\"InternalErrorException\"] = \"InternalErrorException\";\n ConfirmDeviceException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n ConfirmDeviceException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ConfirmDeviceException[\"InvalidPasswordException\"] = \"InvalidPasswordException\";\n ConfirmDeviceException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n ConfirmDeviceException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ConfirmDeviceException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n ConfirmDeviceException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ConfirmDeviceException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ConfirmDeviceException[\"UsernameExistsException\"] = \"UsernameExistsException\";\n ConfirmDeviceException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n ConfirmDeviceException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ConfirmDeviceException || (ConfirmDeviceException = {}));\nexport var ConfirmForgotPasswordException;\n(function (ConfirmForgotPasswordException) {\n ConfirmForgotPasswordException[\"CodeMismatchException\"] = \"CodeMismatchException\";\n ConfirmForgotPasswordException[\"ExpiredCodeException\"] = \"ExpiredCodeException\";\n ConfirmForgotPasswordException[\"ForbiddenException\"] = \"ForbiddenException\";\n ConfirmForgotPasswordException[\"InternalErrorException\"] = \"InternalErrorException\";\n ConfirmForgotPasswordException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n ConfirmForgotPasswordException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ConfirmForgotPasswordException[\"InvalidPasswordException\"] = \"InvalidPasswordException\";\n ConfirmForgotPasswordException[\"LimitExceededException\"] = \"LimitExceededException\";\n ConfirmForgotPasswordException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ConfirmForgotPasswordException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ConfirmForgotPasswordException[\"TooManyFailedAttemptsException\"] = \"TooManyFailedAttemptsException\";\n ConfirmForgotPasswordException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ConfirmForgotPasswordException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n ConfirmForgotPasswordException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n ConfirmForgotPasswordException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n ConfirmForgotPasswordException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ConfirmForgotPasswordException || (ConfirmForgotPasswordException = {}));\nexport var ConfirmSignUpException;\n(function (ConfirmSignUpException) {\n ConfirmSignUpException[\"AliasExistsException\"] = \"AliasExistsException\";\n ConfirmSignUpException[\"CodeMismatchException\"] = \"CodeMismatchException\";\n ConfirmSignUpException[\"ExpiredCodeException\"] = \"ExpiredCodeException\";\n ConfirmSignUpException[\"ForbiddenException\"] = \"ForbiddenException\";\n ConfirmSignUpException[\"InternalErrorException\"] = \"InternalErrorException\";\n ConfirmSignUpException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n ConfirmSignUpException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ConfirmSignUpException[\"LimitExceededException\"] = \"LimitExceededException\";\n ConfirmSignUpException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ConfirmSignUpException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ConfirmSignUpException[\"TooManyFailedAttemptsException\"] = \"TooManyFailedAttemptsException\";\n ConfirmSignUpException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ConfirmSignUpException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n ConfirmSignUpException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n ConfirmSignUpException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ConfirmSignUpException || (ConfirmSignUpException = {}));\nexport var DeleteUserAttributesException;\n(function (DeleteUserAttributesException) {\n DeleteUserAttributesException[\"ForbiddenException\"] = \"ForbiddenException\";\n DeleteUserAttributesException[\"InternalErrorException\"] = \"InternalErrorException\";\n DeleteUserAttributesException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n DeleteUserAttributesException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n DeleteUserAttributesException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n DeleteUserAttributesException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n DeleteUserAttributesException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n DeleteUserAttributesException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n DeleteUserAttributesException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(DeleteUserAttributesException || (DeleteUserAttributesException = {}));\nexport var DeleteUserException;\n(function (DeleteUserException) {\n DeleteUserException[\"ForbiddenException\"] = \"ForbiddenException\";\n DeleteUserException[\"InternalErrorException\"] = \"InternalErrorException\";\n DeleteUserException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n DeleteUserException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n DeleteUserException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n DeleteUserException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n DeleteUserException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n DeleteUserException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n DeleteUserException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(DeleteUserException || (DeleteUserException = {}));\nexport var ForgetDeviceException;\n(function (ForgetDeviceException) {\n ForgetDeviceException[\"ForbiddenException\"] = \"ForbiddenException\";\n ForgetDeviceException[\"InternalErrorException\"] = \"InternalErrorException\";\n ForgetDeviceException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ForgetDeviceException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n ForgetDeviceException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ForgetDeviceException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n ForgetDeviceException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ForgetDeviceException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ForgetDeviceException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n ForgetDeviceException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ForgetDeviceException || (ForgetDeviceException = {}));\nexport var ForgotPasswordException;\n(function (ForgotPasswordException) {\n ForgotPasswordException[\"CodeDeliveryFailureException\"] = \"CodeDeliveryFailureException\";\n ForgotPasswordException[\"ForbiddenException\"] = \"ForbiddenException\";\n ForgotPasswordException[\"InternalErrorException\"] = \"InternalErrorException\";\n ForgotPasswordException[\"InvalidEmailRoleAccessPolicyException\"] = \"InvalidEmailRoleAccessPolicyException\";\n ForgotPasswordException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n ForgotPasswordException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ForgotPasswordException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n ForgotPasswordException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n ForgotPasswordException[\"LimitExceededException\"] = \"LimitExceededException\";\n ForgotPasswordException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ForgotPasswordException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ForgotPasswordException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ForgotPasswordException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n ForgotPasswordException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n ForgotPasswordException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ForgotPasswordException || (ForgotPasswordException = {}));\nexport var GetUserException;\n(function (GetUserException) {\n GetUserException[\"ForbiddenException\"] = \"ForbiddenException\";\n GetUserException[\"InternalErrorException\"] = \"InternalErrorException\";\n GetUserException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n GetUserException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n GetUserException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n GetUserException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n GetUserException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n GetUserException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n GetUserException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(GetUserException || (GetUserException = {}));\nexport var GetIdException;\n(function (GetIdException) {\n GetIdException[\"ExternalServiceException\"] = \"ExternalServiceException\";\n GetIdException[\"InternalErrorException\"] = \"InternalErrorException\";\n GetIdException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n GetIdException[\"LimitExceededException\"] = \"LimitExceededException\";\n GetIdException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n GetIdException[\"ResourceConflictException\"] = \"ResourceConflictException\";\n GetIdException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n GetIdException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n})(GetIdException || (GetIdException = {}));\nexport var GetCredentialsForIdentityException;\n(function (GetCredentialsForIdentityException) {\n GetCredentialsForIdentityException[\"ExternalServiceException\"] = \"ExternalServiceException\";\n GetCredentialsForIdentityException[\"InternalErrorException\"] = \"InternalErrorException\";\n GetCredentialsForIdentityException[\"InvalidIdentityPoolConfigurationException\"] = \"InvalidIdentityPoolConfigurationException\";\n GetCredentialsForIdentityException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n GetCredentialsForIdentityException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n GetCredentialsForIdentityException[\"ResourceConflictException\"] = \"ResourceConflictException\";\n GetCredentialsForIdentityException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n GetCredentialsForIdentityException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n})(GetCredentialsForIdentityException || (GetCredentialsForIdentityException = {}));\nexport var GetUserAttributeVerificationException;\n(function (GetUserAttributeVerificationException) {\n GetUserAttributeVerificationException[\"CodeDeliveryFailureException\"] = \"CodeDeliveryFailureException\";\n GetUserAttributeVerificationException[\"ForbiddenException\"] = \"ForbiddenException\";\n GetUserAttributeVerificationException[\"InternalErrorException\"] = \"InternalErrorException\";\n GetUserAttributeVerificationException[\"InvalidEmailRoleAccessPolicyException\"] = \"InvalidEmailRoleAccessPolicyException\";\n GetUserAttributeVerificationException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n GetUserAttributeVerificationException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n GetUserAttributeVerificationException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n GetUserAttributeVerificationException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n GetUserAttributeVerificationException[\"LimitExceededException\"] = \"LimitExceededException\";\n GetUserAttributeVerificationException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n GetUserAttributeVerificationException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n GetUserAttributeVerificationException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n GetUserAttributeVerificationException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n GetUserAttributeVerificationException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n GetUserAttributeVerificationException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n GetUserAttributeVerificationException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n GetUserAttributeVerificationException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(GetUserAttributeVerificationException || (GetUserAttributeVerificationException = {}));\nexport var GlobalSignOutException;\n(function (GlobalSignOutException) {\n GlobalSignOutException[\"ForbiddenException\"] = \"ForbiddenException\";\n GlobalSignOutException[\"InternalErrorException\"] = \"InternalErrorException\";\n GlobalSignOutException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n GlobalSignOutException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n GlobalSignOutException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n GlobalSignOutException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n GlobalSignOutException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n GlobalSignOutException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n})(GlobalSignOutException || (GlobalSignOutException = {}));\nexport var InitiateAuthException;\n(function (InitiateAuthException) {\n InitiateAuthException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n InitiateAuthException[\"ForbiddenException\"] = \"ForbiddenException\";\n InitiateAuthException[\"InternalErrorException\"] = \"InternalErrorException\";\n InitiateAuthException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n InitiateAuthException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n InitiateAuthException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n InitiateAuthException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n InitiateAuthException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n InitiateAuthException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n InitiateAuthException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n InitiateAuthException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n InitiateAuthException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n InitiateAuthException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n InitiateAuthException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n InitiateAuthException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(InitiateAuthException || (InitiateAuthException = {}));\nexport var ResendConfirmationException;\n(function (ResendConfirmationException) {\n ResendConfirmationException[\"CodeDeliveryFailureException\"] = \"CodeDeliveryFailureException\";\n ResendConfirmationException[\"ForbiddenException\"] = \"ForbiddenException\";\n ResendConfirmationException[\"InternalErrorException\"] = \"InternalErrorException\";\n ResendConfirmationException[\"InvalidEmailRoleAccessPolicyException\"] = \"InvalidEmailRoleAccessPolicyException\";\n ResendConfirmationException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n ResendConfirmationException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ResendConfirmationException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n ResendConfirmationException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n ResendConfirmationException[\"LimitExceededException\"] = \"LimitExceededException\";\n ResendConfirmationException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ResendConfirmationException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ResendConfirmationException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ResendConfirmationException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n ResendConfirmationException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n ResendConfirmationException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ResendConfirmationException || (ResendConfirmationException = {}));\nexport var RespondToAuthChallengeException;\n(function (RespondToAuthChallengeException) {\n RespondToAuthChallengeException[\"AliasExistsException\"] = \"AliasExistsException\";\n RespondToAuthChallengeException[\"CodeMismatchException\"] = \"CodeMismatchException\";\n RespondToAuthChallengeException[\"ExpiredCodeException\"] = \"ExpiredCodeException\";\n RespondToAuthChallengeException[\"ForbiddenException\"] = \"ForbiddenException\";\n RespondToAuthChallengeException[\"InternalErrorException\"] = \"InternalErrorException\";\n RespondToAuthChallengeException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n RespondToAuthChallengeException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n RespondToAuthChallengeException[\"InvalidPasswordException\"] = \"InvalidPasswordException\";\n RespondToAuthChallengeException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n RespondToAuthChallengeException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n RespondToAuthChallengeException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n RespondToAuthChallengeException[\"MFAMethodNotFoundException\"] = \"MFAMethodNotFoundException\";\n RespondToAuthChallengeException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n RespondToAuthChallengeException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n RespondToAuthChallengeException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n RespondToAuthChallengeException[\"SoftwareTokenMFANotFoundException\"] = \"SoftwareTokenMFANotFoundException\";\n RespondToAuthChallengeException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n RespondToAuthChallengeException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n RespondToAuthChallengeException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n RespondToAuthChallengeException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n RespondToAuthChallengeException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(RespondToAuthChallengeException || (RespondToAuthChallengeException = {}));\nexport var SetUserMFAPreferenceException;\n(function (SetUserMFAPreferenceException) {\n SetUserMFAPreferenceException[\"ForbiddenException\"] = \"ForbiddenException\";\n SetUserMFAPreferenceException[\"InternalErrorException\"] = \"InternalErrorException\";\n SetUserMFAPreferenceException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n SetUserMFAPreferenceException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n SetUserMFAPreferenceException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n SetUserMFAPreferenceException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n SetUserMFAPreferenceException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n SetUserMFAPreferenceException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(SetUserMFAPreferenceException || (SetUserMFAPreferenceException = {}));\nexport var SignUpException;\n(function (SignUpException) {\n SignUpException[\"CodeDeliveryFailureException\"] = \"CodeDeliveryFailureException\";\n SignUpException[\"InternalErrorException\"] = \"InternalErrorException\";\n SignUpException[\"InvalidEmailRoleAccessPolicyException\"] = \"InvalidEmailRoleAccessPolicyException\";\n SignUpException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n SignUpException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n SignUpException[\"InvalidPasswordException\"] = \"InvalidPasswordException\";\n SignUpException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n SignUpException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n SignUpException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n SignUpException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n SignUpException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n SignUpException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n SignUpException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n SignUpException[\"UsernameExistsException\"] = \"UsernameExistsException\";\n})(SignUpException || (SignUpException = {}));\nexport var UpdateUserAttributesException;\n(function (UpdateUserAttributesException) {\n UpdateUserAttributesException[\"AliasExistsException\"] = \"AliasExistsException\";\n UpdateUserAttributesException[\"CodeDeliveryFailureException\"] = \"CodeDeliveryFailureException\";\n UpdateUserAttributesException[\"CodeMismatchException\"] = \"CodeMismatchException\";\n UpdateUserAttributesException[\"ExpiredCodeException\"] = \"ExpiredCodeException\";\n UpdateUserAttributesException[\"ForbiddenException\"] = \"ForbiddenException\";\n UpdateUserAttributesException[\"InternalErrorException\"] = \"InternalErrorException\";\n UpdateUserAttributesException[\"InvalidEmailRoleAccessPolicyException\"] = \"InvalidEmailRoleAccessPolicyException\";\n UpdateUserAttributesException[\"InvalidLambdaResponseException\"] = \"InvalidLambdaResponseException\";\n UpdateUserAttributesException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n UpdateUserAttributesException[\"InvalidSmsRoleAccessPolicyException\"] = \"InvalidSmsRoleAccessPolicyException\";\n UpdateUserAttributesException[\"InvalidSmsRoleTrustRelationshipException\"] = \"InvalidSmsRoleTrustRelationshipException\";\n UpdateUserAttributesException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n UpdateUserAttributesException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n UpdateUserAttributesException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n UpdateUserAttributesException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n UpdateUserAttributesException[\"UnexpectedLambdaException\"] = \"UnexpectedLambdaException\";\n UpdateUserAttributesException[\"UserLambdaValidationException\"] = \"UserLambdaValidationException\";\n UpdateUserAttributesException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n UpdateUserAttributesException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(UpdateUserAttributesException || (UpdateUserAttributesException = {}));\nexport var VerifySoftwareTokenException;\n(function (VerifySoftwareTokenException) {\n VerifySoftwareTokenException[\"CodeMismatchException\"] = \"CodeMismatchException\";\n VerifySoftwareTokenException[\"EnableSoftwareTokenMFAException\"] = \"EnableSoftwareTokenMFAException\";\n VerifySoftwareTokenException[\"ForbiddenException\"] = \"ForbiddenException\";\n VerifySoftwareTokenException[\"InternalErrorException\"] = \"InternalErrorException\";\n VerifySoftwareTokenException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n VerifySoftwareTokenException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n VerifySoftwareTokenException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n VerifySoftwareTokenException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n VerifySoftwareTokenException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n VerifySoftwareTokenException[\"SoftwareTokenMFANotFoundException\"] = \"SoftwareTokenMFANotFoundException\";\n VerifySoftwareTokenException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n VerifySoftwareTokenException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n VerifySoftwareTokenException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(VerifySoftwareTokenException || (VerifySoftwareTokenException = {}));\nexport var VerifyUserAttributeException;\n(function (VerifyUserAttributeException) {\n VerifyUserAttributeException[\"AliasExistsException\"] = \"AliasExistsException\";\n VerifyUserAttributeException[\"CodeMismatchException\"] = \"CodeMismatchException\";\n VerifyUserAttributeException[\"ExpiredCodeException\"] = \"ExpiredCodeException\";\n VerifyUserAttributeException[\"ForbiddenException\"] = \"ForbiddenException\";\n VerifyUserAttributeException[\"InternalErrorException\"] = \"InternalErrorException\";\n VerifyUserAttributeException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n VerifyUserAttributeException[\"LimitExceededException\"] = \"LimitExceededException\";\n VerifyUserAttributeException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n VerifyUserAttributeException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n VerifyUserAttributeException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n VerifyUserAttributeException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n VerifyUserAttributeException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n VerifyUserAttributeException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(VerifyUserAttributeException || (VerifyUserAttributeException = {}));\nexport var UpdateDeviceStatusException;\n(function (UpdateDeviceStatusException) {\n UpdateDeviceStatusException[\"ForbiddenException\"] = \"ForbiddenException\";\n UpdateDeviceStatusException[\"InternalErrorException\"] = \"InternalErrorException\";\n UpdateDeviceStatusException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n UpdateDeviceStatusException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n UpdateDeviceStatusException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n UpdateDeviceStatusException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n UpdateDeviceStatusException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n UpdateDeviceStatusException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n UpdateDeviceStatusException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n UpdateDeviceStatusException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(UpdateDeviceStatusException || (UpdateDeviceStatusException = {}));\nexport var ListDevicesException;\n(function (ListDevicesException) {\n ListDevicesException[\"ForbiddenException\"] = \"ForbiddenException\";\n ListDevicesException[\"InternalErrorException\"] = \"InternalErrorException\";\n ListDevicesException[\"InvalidParameterException\"] = \"InvalidParameterException\";\n ListDevicesException[\"InvalidUserPoolConfigurationException\"] = \"InvalidUserPoolConfigurationException\";\n ListDevicesException[\"NotAuthorizedException\"] = \"NotAuthorizedException\";\n ListDevicesException[\"PasswordResetRequiredException\"] = \"PasswordResetRequiredException\";\n ListDevicesException[\"ResourceNotFoundException\"] = \"ResourceNotFoundException\";\n ListDevicesException[\"TooManyRequestsException\"] = \"TooManyRequestsException\";\n ListDevicesException[\"UserNotConfirmedException\"] = \"UserNotConfirmedException\";\n ListDevicesException[\"UserNotFoundException\"] = \"UserNotFoundException\";\n})(ListDevicesException || (ListDevicesException = {}));\nexport const SETUP_TOTP_EXCEPTION = 'SetUpTOTPException';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var AuthValidationErrorCode;\n(function (AuthValidationErrorCode) {\n AuthValidationErrorCode[\"EmptySignInUsername\"] = \"EmptySignInUsername\";\n AuthValidationErrorCode[\"EmptySignInPassword\"] = \"EmptySignInPassword\";\n AuthValidationErrorCode[\"CustomAuthSignInPassword\"] = \"CustomAuthSignInPassword\";\n AuthValidationErrorCode[\"EmptySignUpUsername\"] = \"EmptySignUpUsername\";\n AuthValidationErrorCode[\"EmptySignUpPassword\"] = \"EmptySignUpPassword\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpUsername\"] = \"EmptyConfirmSignUpUsername\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpCode\"] = \"EmptyConfirmSignUpCode\";\n AuthValidationErrorCode[\"EmptyResendSignUpCodeUsername\"] = \"EmptyresendSignUpCodeUsername\";\n AuthValidationErrorCode[\"EmptyChallengeResponse\"] = \"EmptyChallengeResponse\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordUsername\"] = \"EmptyConfirmResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordNewPassword\"] = \"EmptyConfirmResetPasswordNewPassword\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordConfirmationCode\"] = \"EmptyConfirmResetPasswordConfirmationCode\";\n AuthValidationErrorCode[\"EmptyResetPasswordUsername\"] = \"EmptyResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyVerifyTOTPSetupCode\"] = \"EmptyVerifyTOTPSetupCode\";\n AuthValidationErrorCode[\"EmptyConfirmUserAttributeCode\"] = \"EmptyConfirmUserAttributeCode\";\n AuthValidationErrorCode[\"IncorrectMFAMethod\"] = \"IncorrectMFAMethod\";\n AuthValidationErrorCode[\"EmptyUpdatePassword\"] = \"EmptyUpdatePassword\";\n})(AuthValidationErrorCode || (AuthValidationErrorCode = {}));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthValidationErrorCode } from '../errors/types/validation';\nexport const validationErrorMap = {\n [AuthValidationErrorCode.EmptyChallengeResponse]: {\n message: 'challengeResponse is required to confirmSignIn',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordUsername]: {\n message: 'username is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyConfirmSignUpCode]: {\n message: 'code is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyConfirmSignUpUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordConfirmationCode]: {\n message: 'confirmationCode is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordNewPassword]: {\n message: 'newPassword is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyResendSignUpCodeUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyResetPasswordUsername]: {\n message: 'username is required to resetPassword',\n },\n [AuthValidationErrorCode.EmptySignInPassword]: {\n message: 'password is required to signIn',\n },\n [AuthValidationErrorCode.EmptySignInUsername]: {\n message: 'username is required to signIn',\n },\n [AuthValidationErrorCode.EmptySignUpPassword]: {\n message: 'password is required to signUp',\n },\n [AuthValidationErrorCode.EmptySignUpUsername]: {\n message: 'username is required to signUp',\n },\n [AuthValidationErrorCode.CustomAuthSignInPassword]: {\n message: 'A password is not needed when signing in with CUSTOM_WITHOUT_SRP',\n recoverySuggestion: 'Do not include a password in your signIn call.',\n },\n [AuthValidationErrorCode.IncorrectMFAMethod]: {\n message: 'Incorrect MFA method was chosen. It should be either SMS, TOTP, or EMAIL',\n recoverySuggestion: 'Try to pass SMS, TOTP, or EMAIL as the challengeResponse',\n },\n [AuthValidationErrorCode.EmptyVerifyTOTPSetupCode]: {\n message: 'code is required to verifyTotpSetup',\n },\n [AuthValidationErrorCode.EmptyUpdatePassword]: {\n message: 'oldPassword and newPassword are required to changePassword',\n },\n [AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {\n message: 'confirmation code is required to confirmUserAttribute',\n },\n};\n// TODO: delete this code when the Auth class is removed.\nexport var AuthErrorStrings;\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_EMAIL\"] = \"Email cannot be empty\";\n AuthErrorStrings[\"EMPTY_PHONE\"] = \"Phone number cannot be empty\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n AuthErrorStrings[\"NETWORK_ERROR\"] = \"Network Error\";\n AuthErrorStrings[\"DEVICE_CONFIG\"] = \"Device tracking has not been configured in this User Pool\";\n AuthErrorStrings[\"AUTOSIGNIN_ERROR\"] = \"Please use your credentials to sign in\";\n AuthErrorStrings[\"OAUTH_ERROR\"] = \"Couldn't finish OAuth flow, check your User Pool HostedUI settings\";\n})(AuthErrorStrings || (AuthErrorStrings = {}));\nexport var AuthErrorCodes;\n(function (AuthErrorCodes) {\n AuthErrorCodes[\"SignInException\"] = \"SignInException\";\n AuthErrorCodes[\"OAuthSignInError\"] = \"OAuthSignInException\";\n})(AuthErrorCodes || (AuthErrorCodes = {}));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createRespondToAuthChallengeClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('RespondToAuthChallenge'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError, decodeJWT } from '@aws-amplify/core/internals/utils';\nimport { tokenOrchestrator } from './tokenProvider';\nexport async function cacheCognitoTokens(AuthenticationResult) {\n if (AuthenticationResult.AccessToken) {\n const accessToken = decodeJWT(AuthenticationResult.AccessToken);\n const accessTokenIssuedAtInMillis = (accessToken.payload.iat || 0) * 1000;\n const currentTime = new Date().getTime();\n const clockDrift = accessTokenIssuedAtInMillis > 0\n ? accessTokenIssuedAtInMillis - currentTime\n : 0;\n let idToken;\n let refreshToken;\n let deviceMetadata;\n if (AuthenticationResult.RefreshToken) {\n refreshToken = AuthenticationResult.RefreshToken;\n }\n if (AuthenticationResult.IdToken) {\n idToken = decodeJWT(AuthenticationResult.IdToken);\n }\n if (AuthenticationResult?.NewDeviceMetadata) {\n deviceMetadata = AuthenticationResult.NewDeviceMetadata;\n }\n const tokens = {\n accessToken,\n idToken,\n refreshToken,\n clockDrift,\n deviceMetadata,\n username: AuthenticationResult.username,\n };\n if (AuthenticationResult?.signInDetails) {\n tokens.signInDetails = AuthenticationResult.signInDetails;\n }\n await tokenOrchestrator.setTokens({\n tokens,\n });\n }\n else {\n // This would be a service error\n throw new AmplifyError({\n message: 'Invalid tokens',\n name: 'InvalidTokens',\n recoverySuggestion: 'Check Cognito UserPool settings',\n });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Hub } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL } from '@aws-amplify/core/internals/utils';\nimport { getCurrentUser } from '../apis/getCurrentUser';\nimport { UNEXPECTED_SIGN_IN_INTERRUPTION_EXCEPTION, USER_UNAUTHENTICATED_EXCEPTION, } from '../../../errors/constants';\nimport { AuthError } from '../../../errors/AuthError';\nexport const ERROR_MESSAGE = 'Unable to get user session following successful sign-in.';\nexport const dispatchSignedInHubEvent = async () => {\n try {\n Hub.dispatch('auth', {\n event: 'signedIn',\n data: await getCurrentUser(),\n }, 'Auth', AMPLIFY_SYMBOL);\n }\n catch (error) {\n if (error.name === USER_UNAUTHENTICATED_EXCEPTION) {\n throw new AuthError({\n name: UNEXPECTED_SIGN_IN_INTERRUPTION_EXCEPTION,\n message: ERROR_MESSAGE,\n recoverySuggestion: 'This most likely is due to auth tokens not being persisted. If you are using cookie store, please ensure cookies can be correctly set from your server.',\n });\n }\n throw error;\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { syncSessionStorage } from '@aws-amplify/core';\n// Minutes until stored session invalidates is defaulted to 3 minutes\n// to maintain parity with Amazon Cognito user pools API behavior\nconst MS_TO_EXPIRY = 3 * 60 * 1000;\nconst TGT_STATE = 'CognitoSignInState';\nconst SIGN_IN_STATE_KEYS = {\n username: `${TGT_STATE}.username`,\n challengeName: `${TGT_STATE}.challengeName`,\n signInSession: `${TGT_STATE}.signInSession`,\n expiry: `${TGT_STATE}.expiry`,\n};\nconst signInReducer = (state, action) => {\n switch (action.type) {\n case 'SET_SIGN_IN_SESSION':\n persistSignInState({ signInSession: action.value });\n return {\n ...state,\n signInSession: action.value,\n };\n case 'SET_SIGN_IN_STATE':\n persistSignInState(action.value);\n return {\n ...action.value,\n };\n case 'SET_CHALLENGE_NAME':\n persistSignInState({ challengeName: action.value });\n return {\n ...state,\n challengeName: action.value,\n };\n case 'SET_USERNAME':\n persistSignInState({ username: action.value });\n return {\n ...state,\n username: action.value,\n };\n case 'SET_INITIAL_STATE':\n return getInitialState();\n case 'RESET_STATE':\n clearPersistedSignInState();\n return getDefaultState();\n // this state is never reachable\n default:\n return state;\n }\n};\nconst isExpired = (expiryDate) => {\n const expiryTimestamp = Number(expiryDate);\n const currentTimestamp = Date.now();\n return expiryTimestamp <= currentTimestamp;\n};\nexport const resetActiveSignInState = () => {\n signInStore.dispatch({ type: 'RESET_STATE' });\n};\nconst clearPersistedSignInState = () => {\n for (const stateKey of Object.values(SIGN_IN_STATE_KEYS)) {\n syncSessionStorage.removeItem(stateKey);\n }\n};\nconst getDefaultState = () => ({\n username: undefined,\n challengeName: undefined,\n signInSession: undefined,\n});\n// Hydrate signInStore from syncSessionStorage if the session has not expired\nconst getInitialState = () => {\n const expiry = syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.expiry);\n if (!expiry || isExpired(expiry)) {\n clearPersistedSignInState();\n return getDefaultState();\n }\n const username = syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.username) ?? undefined;\n const challengeName = (syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.challengeName) ?? undefined);\n const signInSession = syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.signInSession) ?? undefined;\n return {\n username,\n challengeName,\n signInSession,\n };\n};\nconst createStore = reducer => {\n let currentState = reducer(getDefaultState(), { type: 'SET_INITIAL_STATE' });\n return {\n getState: () => currentState,\n dispatch: action => {\n currentState = reducer(currentState, action);\n },\n };\n};\nexport const signInStore = createStore(signInReducer);\nexport function setActiveSignInState(state) {\n signInStore.dispatch({\n type: 'SET_SIGN_IN_STATE',\n value: state,\n });\n}\n// Save local state into Session Storage\nexport const persistSignInState = ({ challengeName, signInSession, username, }) => {\n username && syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.username, username);\n challengeName &&\n syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.challengeName, challengeName);\n if (signInSession) {\n syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.signInSession, signInSession);\n // Updates expiry when session is passed\n syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.expiry, String(Date.now() + MS_TO_EXPIRY));\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError, AmplifyErrorCode, createAssertionFunction, } from '@aws-amplify/core/internals/utils';\nexport class PasskeyError extends AmplifyError {\n constructor(params) {\n super(params);\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = PasskeyError;\n Object.setPrototypeOf(this, PasskeyError.prototype);\n }\n}\nexport var PasskeyErrorCode;\n(function (PasskeyErrorCode) {\n // not supported\n PasskeyErrorCode[\"PasskeyNotSupported\"] = \"PasskeyNotSupported\";\n // duplicate passkey\n PasskeyErrorCode[\"PasskeyAlreadyExists\"] = \"PasskeyAlreadyExists\";\n // misconfigurations\n PasskeyErrorCode[\"InvalidPasskeyRegistrationOptions\"] = \"InvalidPasskeyRegistrationOptions\";\n PasskeyErrorCode[\"InvalidPasskeyAuthenticationOptions\"] = \"InvalidPasskeyAuthenticationOptions\";\n PasskeyErrorCode[\"RelyingPartyMismatch\"] = \"RelyingPartyMismatch\";\n // failed credential creation / retrieval\n PasskeyErrorCode[\"PasskeyRegistrationFailed\"] = \"PasskeyRegistrationFailed\";\n PasskeyErrorCode[\"PasskeyRetrievalFailed\"] = \"PasskeyRetrievalFailed\";\n // cancel / aborts\n PasskeyErrorCode[\"PasskeyRegistrationCanceled\"] = \"PasskeyRegistrationCanceled\";\n PasskeyErrorCode[\"PasskeyAuthenticationCanceled\"] = \"PasskeyAuthenticationCanceled\";\n PasskeyErrorCode[\"PasskeyOperationAborted\"] = \"PasskeyOperationAborted\";\n})(PasskeyErrorCode || (PasskeyErrorCode = {}));\nconst notSupportedRecoverySuggestion = 'Passkeys may not be supported on this device. Ensure your application is running in a secure context (HTTPS) and Web Authentication API is supported.';\nconst abortOrCancelRecoverySuggestion = 'User may have canceled the ceremony or another interruption has occurred. Check underlying error for details.';\nconst misconfigurationRecoverySuggestion = 'Ensure your user pool is configured to support the WEB_AUTHN as an authentication factor.';\nconst passkeyErrorMap = {\n [PasskeyErrorCode.PasskeyNotSupported]: {\n message: 'Passkeys may not be supported on this device.',\n recoverySuggestion: notSupportedRecoverySuggestion,\n },\n [PasskeyErrorCode.InvalidPasskeyRegistrationOptions]: {\n message: 'Invalid passkey registration options.',\n recoverySuggestion: misconfigurationRecoverySuggestion,\n },\n [PasskeyErrorCode.InvalidPasskeyAuthenticationOptions]: {\n message: 'Invalid passkey authentication options.',\n recoverySuggestion: misconfigurationRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyRegistrationFailed]: {\n message: 'Device failed to create passkey.',\n recoverySuggestion: notSupportedRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyRetrievalFailed]: {\n message: 'Device failed to retrieve passkey.',\n recoverySuggestion: 'Passkeys may not be available on this device. Try an alternative authentication factor like PASSWORD, EMAIL_OTP, or SMS_OTP.',\n },\n [PasskeyErrorCode.PasskeyAlreadyExists]: {\n message: 'Passkey already exists in authenticator.',\n recoverySuggestion: 'Proceed with existing passkey or try again after deleting the credential.',\n },\n [PasskeyErrorCode.PasskeyRegistrationCanceled]: {\n message: 'Passkey registration ceremony has been canceled.',\n recoverySuggestion: abortOrCancelRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyAuthenticationCanceled]: {\n message: 'Passkey authentication ceremony has been canceled.',\n recoverySuggestion: abortOrCancelRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyOperationAborted]: {\n message: 'Passkey operation has been aborted.',\n recoverySuggestion: abortOrCancelRecoverySuggestion,\n },\n [PasskeyErrorCode.RelyingPartyMismatch]: {\n message: 'Relying party does not match current domain.',\n recoverySuggestion: 'Ensure relying party identifier matches current domain.',\n },\n};\nexport const assertPasskeyError = createAssertionFunction(passkeyErrorMap, PasskeyError);\n/**\n * Handle Passkey Authentication Errors\n * https://w3c.github.io/webauthn/#sctn-get-request-exceptions\n *\n * @param err unknown\n * @returns PasskeyError\n */\nexport const handlePasskeyAuthenticationError = (err) => {\n if (err instanceof PasskeyError) {\n return err;\n }\n if (err instanceof Error) {\n if (err.name === 'NotAllowedError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyAuthenticationCanceled];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyAuthenticationCanceled,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n }\n return handlePasskeyError(err);\n};\n/**\n * Handle Passkey Registration Errors\n * https://w3c.github.io/webauthn/#sctn-create-request-exceptions\n *\n * @param err unknown\n * @returns PasskeyError\n */\nexport const handlePasskeyRegistrationError = (err) => {\n if (err instanceof PasskeyError) {\n return err;\n }\n if (err instanceof Error) {\n // Duplicate Passkey\n if (err.name === 'InvalidStateError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyAlreadyExists];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyAlreadyExists,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n // User Cancels Ceremony / Generic Catch All\n if (err.name === 'NotAllowedError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyRegistrationCanceled];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyRegistrationCanceled,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n }\n return handlePasskeyError(err);\n};\n/**\n * Handles Overlapping Passkey Errors Between Registration & Authentication\n * https://w3c.github.io/webauthn/#sctn-create-request-exceptions\n * https://w3c.github.io/webauthn/#sctn-get-request-exceptions\n *\n * @param err unknown\n * @returns PasskeyError\n */\nconst handlePasskeyError = (err) => {\n if (err instanceof Error) {\n // Passkey Operation Aborted\n if (err.name === 'AbortError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyOperationAborted];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyOperationAborted,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n // Relying Party / Domain Mismatch\n if (err.name === 'SecurityError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.RelyingPartyMismatch];\n return new PasskeyError({\n name: PasskeyErrorCode.RelyingPartyMismatch,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n }\n return new PasskeyError({\n name: AmplifyErrorCode.Unknown,\n message: 'An unknown error has occurred.',\n underlyingError: err,\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { base64Encoder } from '@aws-amplify/core/internals/utils';\n// https://datatracker.ietf.org/doc/html/rfc4648#page-7\n/**\n * Converts an ArrayBuffer to a base64url encoded string\n * @param buffer - the ArrayBuffer instance of a Uint8Array\n * @returns string - a base64url encoded string\n */\nexport const convertArrayBufferToBase64Url = (buffer) => {\n return base64Encoder.convert(new Uint8Array(buffer), {\n urlSafe: true,\n skipPadding: true,\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { base64Decoder } from '@aws-amplify/core/internals/utils';\n/**\n * Converts a base64url encoded string to an ArrayBuffer\n * @param base64url - a base64url encoded string\n * @returns ArrayBuffer\n */\nexport const convertBase64UrlToArrayBuffer = (base64url) => {\n return Uint8Array.from(base64Decoder.convert(base64url, { urlSafe: true }), x => x.charCodeAt(0)).buffer;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { PasskeyErrorCode, assertPasskeyError, handlePasskeyAuthenticationError, } from './errors';\nimport { getIsPasskeySupported } from './getIsPasskeySupported';\nimport { deserializeJsonToPkcGetOptions, serializePkcWithAssertionToJson, } from './serde';\nimport { assertCredentialIsPkcWithAuthenticatorAssertionResponse, } from './types';\nexport const getPasskey = async (input) => {\n try {\n const isPasskeySupported = getIsPasskeySupported();\n assertPasskeyError(isPasskeySupported, PasskeyErrorCode.PasskeyNotSupported);\n const passkeyGetOptions = deserializeJsonToPkcGetOptions(input);\n const credential = await navigator.credentials.get({\n publicKey: passkeyGetOptions,\n });\n assertCredentialIsPkcWithAuthenticatorAssertionResponse(credential);\n return serializePkcWithAssertionToJson(credential);\n }\n catch (err) {\n throw handlePasskeyAuthenticationError(err);\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isBrowser } from '@aws-amplify/core/internals/utils';\n/**\n * Determines if passkey is supported in current context\n * Will return false if executed in non-secure context\n * @returns boolean\n */\nexport const getIsPasskeySupported = () => {\n return (isBrowser() &&\n window.isSecureContext &&\n 'credentials' in navigator &&\n typeof window.PublicKeyCredential === 'function');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { convertArrayBufferToBase64Url, convertBase64UrlToArrayBuffer, } from '../../../foundation/convert';\n/**\n * Deserializes Public Key Credential Creation Options JSON\n * @param input PasskeyCreateOptionsJson\n * @returns PublicKeyCredentialCreationOptions\n */\nexport const deserializeJsonToPkcCreationOptions = (input) => {\n const userIdBuffer = convertBase64UrlToArrayBuffer(input.user.id);\n const challengeBuffer = convertBase64UrlToArrayBuffer(input.challenge);\n const excludeCredentialsWithBuffer = (input.excludeCredentials || []).map(excludeCred => ({\n ...excludeCred,\n id: convertBase64UrlToArrayBuffer(excludeCred.id),\n }));\n return {\n ...input,\n excludeCredentials: excludeCredentialsWithBuffer,\n challenge: challengeBuffer,\n user: {\n ...input.user,\n id: userIdBuffer,\n },\n };\n};\n/**\n * Serializes a Public Key Credential With Attestation to JSON\n * @param input PasskeyCreateResult\n * @returns PasskeyCreateResultJson\n */\nexport const serializePkcWithAttestationToJson = (input) => {\n const response = {\n clientDataJSON: convertArrayBufferToBase64Url(input.response.clientDataJSON),\n attestationObject: convertArrayBufferToBase64Url(input.response.attestationObject),\n transports: input.response.getTransports(),\n publicKeyAlgorithm: input.response.getPublicKeyAlgorithm(),\n authenticatorData: convertArrayBufferToBase64Url(input.response.getAuthenticatorData()),\n };\n const publicKey = input.response.getPublicKey();\n if (publicKey) {\n response.publicKey = convertArrayBufferToBase64Url(publicKey);\n }\n const resultJson = {\n type: input.type,\n id: input.id,\n rawId: convertArrayBufferToBase64Url(input.rawId),\n clientExtensionResults: input.getClientExtensionResults(),\n response,\n };\n if (input.authenticatorAttachment) {\n resultJson.authenticatorAttachment = input.authenticatorAttachment;\n }\n return resultJson;\n};\n/**\n * Deserializes Public Key Credential Get Options JSON\n * @param input PasskeyGetOptionsJson\n * @returns PublicKeyCredentialRequestOptions\n */\nexport const deserializeJsonToPkcGetOptions = (input) => {\n const challengeBuffer = convertBase64UrlToArrayBuffer(input.challenge);\n const allowedCredentialsWithBuffer = (input.allowCredentials || []).map(allowedCred => ({\n ...allowedCred,\n id: convertBase64UrlToArrayBuffer(allowedCred.id),\n }));\n return {\n ...input,\n challenge: challengeBuffer,\n allowCredentials: allowedCredentialsWithBuffer,\n };\n};\n/**\n * Serializes a Public Key Credential With Attestation to JSON\n * @param input PasskeyGetResult\n * @returns PasskeyGetResultJson\n */\nexport const serializePkcWithAssertionToJson = (input) => {\n const response = {\n clientDataJSON: convertArrayBufferToBase64Url(input.response.clientDataJSON),\n authenticatorData: convertArrayBufferToBase64Url(input.response.authenticatorData),\n signature: convertArrayBufferToBase64Url(input.response.signature),\n };\n if (input.response.userHandle) {\n response.userHandle = convertArrayBufferToBase64Url(input.response.userHandle);\n }\n const resultJson = {\n id: input.id,\n rawId: convertArrayBufferToBase64Url(input.rawId),\n type: input.type,\n clientExtensionResults: input.getClientExtensionResults(),\n response,\n };\n if (input.authenticatorAttachment) {\n resultJson.authenticatorAttachment = input.authenticatorAttachment;\n }\n return resultJson;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { PasskeyErrorCode, assertPasskeyError } from '../errors';\n/**\n * Passkey Create Types\n */\nexport { assertValidCredentialCreationOptions, } from './shared';\nexport function assertCredentialIsPkcWithAuthenticatorAttestationResponse(credential) {\n assertPasskeyError(credential &&\n credential instanceof PublicKeyCredential &&\n credential.response instanceof AuthenticatorAttestationResponse, PasskeyErrorCode.PasskeyRegistrationFailed);\n}\nexport function assertCredentialIsPkcWithAuthenticatorAssertionResponse(credential) {\n assertPasskeyError(credential &&\n credential instanceof PublicKeyCredential &&\n credential.response instanceof AuthenticatorAssertionResponse, PasskeyErrorCode.PasskeyRetrievalFailed);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const textEncoder = {\n convert(input) {\n return new TextEncoder().encode(input);\n },\n};\n","/* eslint-disable */\n// @ts-nocheck -> BigInteger is already a vended utility\n// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n// new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n// toString (only radix 2, 4, 8, 16 and 32 supported)\n// negate\n// abs\n// compareTo\n// bitLength\n// mod\n// equals\n// add\n// subtract\n// multiply\n// divide\n// modPow\nexport default BigInteger;\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\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\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n// (public) Constructor\nfunction BigInteger(a, b) {\n if (a != null)\n this.fromString(a, b);\n}\n// return new, unset BigInteger\nfunction nbi() {\n return new BigInteger(null, null);\n}\n// Bits per digit\nlet dbits;\n// JavaScript engine analysis\nconst canary = 0xdeadbeefcafe;\nconst j_lm = (canary & 0xffffff) === 0xefcafe;\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n const v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n const xl = x & 0x7fff;\n const xh = x >> 15;\n while (--n >= 0) {\n let l = this[i] & 0x7fff;\n const h = this[i++] >> 15;\n const m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n const xl = x & 0x3fff;\n const xh = x >> 14;\n while (--n >= 0) {\n let l = this[i] & 0x3fff;\n const h = this[i++] >> 14;\n const m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n}\nconst inBrowser = typeof navigator !== 'undefined';\nif (inBrowser && j_lm && navigator.appName === 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2;\n dbits = 30;\n}\nelse if (inBrowser && j_lm && navigator.appName !== 'Netscape') {\n BigInteger.prototype.am = am1;\n dbits = 26;\n}\nelse {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nconst BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nconst BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nconst BI_RC = [];\nlet rr, vv;\nrr = '0'.charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv)\n BI_RC[rr++] = vv;\nrr = 'a'.charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv)\n BI_RC[rr++] = vv;\nrr = 'A'.charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv)\n BI_RC[rr++] = vv;\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\nfunction intAt(s, i) {\n const c = BI_RC[s.charCodeAt(i)];\n return c == null ? -1 : c;\n}\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for (let i = this.t - 1; i >= 0; --i)\n r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = x < 0 ? -1 : 0;\n if (x > 0)\n this[0] = x;\n else if (x < -1)\n this[0] = x + this.DV;\n else\n this.t = 0;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n const r = nbi();\n r.fromInt(i);\n return r;\n}\n// (protected) set from string and radix\nfunction bnpFromString(s, b) {\n let k;\n if (b === 16)\n k = 4;\n else if (b === 8)\n k = 3;\n else if (b === 2)\n k = 1;\n else if (b === 32)\n k = 5;\n else if (b === 4)\n k = 2;\n else\n throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n this.t = 0;\n this.s = 0;\n let i = s.length;\n let mi = false;\n let sh = 0;\n while (--i >= 0) {\n const x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) === '-')\n mi = true;\n continue;\n }\n mi = false;\n if (sh === 0)\n this[this.t++] = x;\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = x >> (this.DB - sh);\n }\n else\n this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB)\n sh -= this.DB;\n }\n this.clamp();\n if (mi)\n BigInteger.ZERO.subTo(this, this);\n}\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n const c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c)\n --this.t;\n}\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if (this.s < 0)\n return '-' + this.negate().toString(b);\n let k;\n if (b == 16)\n k = 4;\n else if (b === 8)\n k = 3;\n else if (b === 2)\n k = 1;\n else if (b === 32)\n k = 5;\n else if (b === 4)\n k = 2;\n else\n throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n const km = (1 << k) - 1;\n let d;\n let m = false;\n let r = '';\n let i = this.t;\n let p = this.DB - ((i * this.DB) % k);\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0)\n m = true;\n if (m)\n r += int2char(d);\n }\n }\n return m ? r : '0';\n}\n// (public) -this\nfunction bnNegate() {\n const r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n}\n// (public) |this|\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n}\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n let r = this.s - a.s;\n if (r != 0)\n return r;\n let i = this.t;\n r = i - a.t;\n if (r != 0)\n return this.s < 0 ? -r : r;\n while (--i >= 0)\n if ((r = this[i] - a[i]) != 0)\n return r;\n return 0;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n let r = 1;\n let t;\n if ((t = x >>> 16) !== 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) !== 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) !== 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) !== 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) !== 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if (this.t <= 0)\n return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n}\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n, r) {\n let i;\n for (i = this.t - 1; i >= 0; --i)\n r[i + n] = this[i];\n for (i = n - 1; i >= 0; --i)\n r[i] = 0;\n r.t = this.t + n;\n r.s = this.s;\n}\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n, r) {\n for (let i = n; i < this.t; ++i)\n r[i - n] = this[i];\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n}\n// (protected) r = this << n\nfunction bnpLShiftTo(n, r) {\n const bs = n % this.DB;\n const cbs = this.DB - bs;\n const bm = (1 << cbs) - 1;\n const ds = Math.floor(n / this.DB);\n let c = (this.s << bs) & this.DM;\n let i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (i = ds - 1; i >= 0; --i)\n r[i] = 0;\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n}\n// (protected) r = this >> n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n const ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n const bs = n % this.DB;\n const cbs = this.DB - bs;\n const bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (let i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0)\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n}\n// (protected) r = this - a\nfunction bnpSubTo(a, r) {\n let i = 0;\n let c = 0;\n const m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = c < 0 ? -1 : 0;\n if (c < -1)\n r[i++] = this.DV + c;\n else if (c > 0)\n r[i++] = c;\n r.t = i;\n r.clamp();\n}\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a, r) {\n const x = this.abs();\n const y = a.abs();\n let i = x.t;\n r.t = i + y.t;\n while (--i >= 0)\n r[i] = 0;\n for (i = 0; i < y.t; ++i)\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n r.s = 0;\n r.clamp();\n if (this.s !== a.s)\n BigInteger.ZERO.subTo(r, r);\n}\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n const x = this.abs();\n let i = (r.t = 2 * x.t);\n while (--i >= 0)\n r[i] = 0;\n for (i = 0; i < x.t - 1; ++i) {\n const c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >=\n x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0)\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n}\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m, q, r) {\n const pm = m.abs();\n if (pm.t <= 0)\n return;\n const pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null)\n q.fromInt(0);\n if (r != null)\n this.copyTo(r);\n return;\n }\n if (r === null)\n r = nbi();\n const y = nbi();\n const ts = this.s;\n const ms = m.s;\n const nsh = this.DB - nbits(pm[pm.t - 1]);\n // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n const ys = y.t;\n const y0 = y[ys - 1];\n if (y0 === 0)\n return;\n const yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n const d1 = this.FV / yt;\n const d2 = (1 << this.F1) / yt;\n const e = 1 << this.F2;\n let i = r.t;\n let j = i - ys;\n const t = q === null ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y);\n // \"negative\" y so we can replace sub with am later\n while (y.t < ys)\n y[y.t++] = 0;\n while (--j >= 0) {\n // Estimate quotient digit\n let qd = r[--i] === y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd)\n r.subTo(t, r);\n }\n }\n if (q !== null) {\n r.drShiftTo(ys, q);\n if (ts !== ms)\n BigInteger.ZERO.subTo(q, q);\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0)\n r.rShiftTo(nsh, r);\n // Denormalize remainder\n if (ts < 0)\n BigInteger.ZERO.subTo(r, r);\n}\n// (public) this mod a\nfunction bnMod(a) {\n const r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0)\n a.subTo(r, r);\n return r;\n}\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if (this.t < 1)\n return 0;\n const x = this[0];\n if ((x & 1) === 0)\n return 0;\n let y = x & 3;\n // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf;\n // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff;\n // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff;\n // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - ((x * y) % this.DV))) % this.DV;\n // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return y > 0 ? this.DV - y : -y;\n}\nfunction bnEquals(a) {\n return this.compareTo(a) === 0;\n}\n// (protected) r = this + a\nfunction bnpAddTo(a, r) {\n let i = 0;\n let c = 0;\n const m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = c < 0 ? -1 : 0;\n if (c > 0)\n r[i++] = c;\n else if (c < -1)\n r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n}\n// (public) this + a\nfunction bnAdd(a) {\n const r = nbi();\n this.addTo(a, r);\n return r;\n}\n// (public) this - a\nfunction bnSubtract(a) {\n const r = nbi();\n this.subTo(a, r);\n return r;\n}\n// (public) this * a\nfunction bnMultiply(a) {\n const r = nbi();\n this.multiplyTo(a, r);\n return r;\n}\n// (public) this / a\nfunction bnDivide(a) {\n const r = nbi();\n this.divRemTo(a, r, null);\n return r;\n}\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n}\n// xR mod m\nfunction montConvert(x) {\n const r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0)\n this.m.subTo(r, r);\n return r;\n}\n// x/R mod m\nfunction montRevert(x) {\n const r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while (x.t <= this.mt2)\n // pad x so am has enough room later\n x[x.t++] = 0;\n for (let i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n let j = x[i] & 0x7fff;\n const u0 = (j * this.mpl +\n (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) &\n x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0)\n x.subTo(this.m, x);\n}\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n}\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e, m, callback) {\n let i = e.bitLength();\n let k;\n let r = nbv(1);\n const z = new Montgomery(m);\n if (i <= 0)\n return r;\n else if (i < 18)\n k = 1;\n else if (i < 48)\n k = 3;\n else if (i < 144)\n k = 4;\n else if (i < 768)\n k = 5;\n else\n k = 6;\n // precomputation\n const g = [];\n let n = 3;\n const k1 = k - 1;\n const km = (1 << k) - 1;\n g[1] = z.convert(this);\n if (k > 1) {\n const g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n let j = e.t - 1;\n let w;\n let is1 = true;\n let r2 = nbi();\n let t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1)\n w = (e[j] >> (i - k1)) & km;\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0)\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n n = k;\n while ((w & 1) === 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0)\n z.sqrTo(r, r2);\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) === 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n const result = z.revert(r);\n callback(null, result);\n return result;\n}\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo;\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow;\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nexport const calculateS = async ({ a, g, k, x, B, N, U, }) => {\n return new Promise((resolve, reject) => {\n g.modPow(x, N, (outerErr, outerResult) => {\n if (outerErr) {\n reject(outerErr);\n return;\n }\n B.subtract(k.multiply(outerResult)).modPow(a.add(U.multiply(x)), N, (innerErr, innerResult) => {\n if (innerErr) {\n reject(innerErr);\n return;\n }\n resolve(innerResult.mod(N));\n });\n });\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const INIT_N = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' +\n '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' +\n 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' +\n 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' +\n 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' +\n 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' +\n '83655D23DCA3AD961C62F356208552BB9ED529077096966D' +\n '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' +\n 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' +\n 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' +\n '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' +\n 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' +\n 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' +\n 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' +\n 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' +\n '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nexport const SHORT_TO_HEX = {};\nexport const HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { HEX_TO_SHORT } from './constants';\n/**\n * Converts a hexadecimal encoded string to a Uint8Array of bytes.\n *\n * @param encoded The hexadecimal encoded string\n */\nexport const getBytesFromHex = (encoded) => {\n if (encoded.length % 2 !== 0) {\n throw new Error('Hex encoded strings must have an even number length');\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { SHORT_TO_HEX } from './constants';\n/**\n * Converts a Uint8Array of binary data to a hexadecimal encoded string.\n *\n * @param bytes The binary data to encode\n */\nexport const getHexFromBytes = (bytes) => {\n let out = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { getHexFromBytes } from './getHexFromBytes';\n/**\n * Calculate a hash from a `SourceData`\n * @param {SourceData} data Value to hash.\n * @returns {string} Hex-encoded hash.\n * @private\n */\nexport const getHashFromData = (data) => {\n const sha256 = new Sha256();\n sha256.update(data);\n const hashedData = sha256.digestSync();\n const hashHexFromUint8 = getHexFromBytes(hashedData);\n return new Array(64 - hashHexFromUint8.length).join('0') + hashHexFromUint8;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getBytesFromHex } from './getBytesFromHex';\nimport { getHashFromData } from './getHashFromData';\n/**\n * Calculate a hash from a hex string\n * @param {string} hexStr Value to hash.\n * @returns {string} Hex-encoded hash.\n * @private\n */\nexport const getHashFromHex = (hexStr) => getHashFromData(getBytesFromHex(hexStr));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BigInteger } from './BigInteger';\n/**\n * Tests if a hex string has it most significant bit set (case-insensitive regex)\n */\nconst HEX_MSB_REGEX = /^[89a-f]/i;\n/**\n * Returns an unambiguous, even-length hex string of the two's complement encoding of an integer.\n *\n * It is compatible with the hex encoding of Java's BigInteger's toByteArray(), wich returns a\n * byte array containing the two's-complement representation of a BigInteger. The array contains\n * the minimum number of bytes required to represent the BigInteger, including at least one sign bit.\n *\n * Examples showing how ambiguity is avoided by left padding with:\n * \t\"00\" (for positive values where the most-significant-bit is set)\n * \"FF\" (for negative values where the most-significant-bit is set)\n *\n * padHex(bigInteger.fromInt(-236)) === \"FF14\"\n * padHex(bigInteger.fromInt(20)) === \"14\"\n *\n * padHex(bigInteger.fromInt(-200)) === \"FF38\"\n * padHex(bigInteger.fromInt(56)) === \"38\"\n *\n * padHex(bigInteger.fromInt(-20)) === \"EC\"\n * padHex(bigInteger.fromInt(236)) === \"00EC\"\n *\n * padHex(bigInteger.fromInt(-56)) === \"C8\"\n * padHex(bigInteger.fromInt(200)) === \"00C8\"\n *\n * @param {AuthBigInteger} bigInt Number to encode.\n * @returns {String} even-length hex string of the two's complement encoding.\n */\nexport const getPaddedHex = (bigInt) => {\n if (!(bigInt instanceof BigInteger)) {\n throw new Error('Not a BigInteger');\n }\n const isNegative = bigInt.compareTo(BigInteger.ZERO) < 0;\n /* Get a hex string for abs(bigInt) */\n let hexStr = bigInt.abs().toString(16);\n /* Pad hex to even length if needed */\n hexStr = hexStr.length % 2 !== 0 ? `0${hexStr}` : hexStr;\n /* Prepend \"00\" if the most significant bit is set */\n hexStr = HEX_MSB_REGEX.test(hexStr) ? `00${hexStr}` : hexStr;\n if (isNegative) {\n /* Flip the bits of the representation */\n const invertedNibbles = hexStr\n .split('')\n .map((x) => {\n const invertedNibble = ~parseInt(x, 16) & 0xf;\n return '0123456789ABCDEF'.charAt(invertedNibble);\n })\n .join('');\n /* After flipping the bits, add one to get the 2's complement representation */\n const flippedBitsBI = new BigInteger(invertedNibbles, 16).add(BigInteger.ONE);\n hexStr = flippedBitsBI.toString(16);\n /*\n For hex strings starting with 'FF8', 'FF' can be dropped, e.g. 0xFFFF80=0xFF80=0x80=-128\n\n Any sequence of '1' bits on the left can always be substituted with a single '1' bit\n without changing the represented value.\n\n This only happens in the case when the input is 80...00\n */\n if (hexStr.toUpperCase().startsWith('FF8')) {\n hexStr = hexStr.substring(2);\n }\n }\n return hexStr;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { cryptoSecureRandomInt } from './cryptoSecureRandomInt';\n/**\n * Hex encoding strategy.\n * Converts a word array to a hex string.\n * @param {WordArray} wordArray The word array.\n * @return {string} The hex string.\n * @static\n */\nfunction hexStringify(wordArray) {\n // Shortcuts\n const { words } = wordArray;\n const { sigBytes } = wordArray;\n // Convert\n const hexChars = [];\n for (let i = 0; i < sigBytes; i++) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n return hexChars.join('');\n}\nexport class WordArray {\n constructor(words, sigBytes) {\n this.words = [];\n let Words = words;\n Words = this.words = Words || [];\n if (sigBytes !== undefined) {\n this.sigBytes = sigBytes;\n }\n else {\n this.sigBytes = Words.length * 4;\n }\n }\n random(nBytes) {\n const words = [];\n for (let i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n return new WordArray(words, nBytes);\n }\n toString() {\n return hexStringify(this);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getCrypto } from './globalHelpers';\n/*\n * Cryptographically secure pseudorandom number generator\n * As Math.random() is cryptographically not safe to use\n */\nexport function cryptoSecureRandomInt() {\n const crypto = getCrypto();\n const randomResult = crypto.getRandomValues(new Uint32Array(1))[0];\n return randomResult;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { WordArray } from '@aws-amplify/core/internals/utils';\nimport { getBytesFromHex } from './getBytesFromHex';\n/**\n * Returns a Uint8Array with a sequence of random nBytes\n *\n * @param {number} nBytes\n * @returns {Uint8Array} fixed-length sequence of random bytes\n */\nexport const getRandomBytes = (nBytes) => {\n const str = new WordArray().random(nBytes).toString();\n return getBytesFromHex(str);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthError } from '../../../../../errors/AuthError';\nimport { textEncoder } from '../../textEncoder';\nimport { BigInteger } from '../BigInteger';\nimport { calculateS, calculateU } from '../calculate';\nimport { getBytesFromHex } from '../getBytesFromHex';\nimport { getHashFromData } from '../getHashFromData';\nimport { getHashFromHex } from '../getHashFromHex';\nimport { getHexFromBytes } from '../getHexFromBytes';\nimport { getHkdfKey } from '../getHkdfKey';\nimport { getPaddedHex } from '../getPaddedHex';\nimport { getRandomBytes } from '../getRandomBytes';\nimport { getRandomString } from '../getRandomString';\n/** @class */\nexport default class AuthenticationHelper {\n constructor({ userPoolName, a, g, A, N, }) {\n this.encoder = textEncoder;\n this.userPoolName = userPoolName;\n this.a = a;\n this.g = g;\n this.A = A;\n this.N = N;\n this.k = new BigInteger(getHashFromHex(`${getPaddedHex(N)}${getPaddedHex(g)}`), 16);\n }\n /**\n * @returns {string} Generated random value included in password hash.\n */\n getRandomPassword() {\n if (!this.randomPassword) {\n throw new AuthError({\n name: 'EmptyBigIntegerRandomPassword',\n message: 'random password is empty',\n });\n }\n return this.randomPassword;\n }\n /**\n * @returns {string} Generated random value included in devices hash.\n */\n getSaltToHashDevices() {\n if (!this.saltToHashDevices) {\n throw new AuthError({\n name: 'EmptyBigIntegersaltToHashDevices',\n message: 'saltToHashDevices is empty',\n });\n }\n return this.saltToHashDevices;\n }\n /**\n * @returns {string} Value used to verify devices.\n */\n getVerifierDevices() {\n if (!this.verifierDevices) {\n throw new AuthError({\n name: 'EmptyBigIntegerVerifierDevices',\n message: 'verifyDevices is empty',\n });\n }\n return this.verifierDevices;\n }\n /**\n * Generate salts and compute verifier.\n *\n * @param {string} deviceGroupKey Devices to generate verifier for.\n * @param {string} username User to generate verifier for.\n *\n * @returns {Promise<void>}\n */\n async generateHashDevice(deviceGroupKey, username) {\n this.randomPassword = getRandomString();\n const combinedString = `${deviceGroupKey}${username}:${this.randomPassword}`;\n const hashedString = getHashFromData(combinedString);\n const hexRandom = getHexFromBytes(getRandomBytes(16));\n // The random hex will be unambiguously represented as a postive integer\n this.saltToHashDevices = getPaddedHex(new BigInteger(hexRandom, 16));\n return new Promise((resolve, reject) => {\n this.g.modPow(new BigInteger(getHashFromHex(this.saltToHashDevices + hashedString), 16), this.N, (err, result) => {\n if (err) {\n reject(err);\n return;\n }\n this.verifierDevices = getPaddedHex(result);\n resolve();\n });\n });\n }\n /**\n * Calculates the final HKDF key based on computed S value, computed U value and the key\n *\n * @param {String} username Username.\n * @param {String} password Password.\n * @param {AuthBigInteger} B Server B value.\n * @param {AuthBigInteger} salt Generated salt.\n */\n async getPasswordAuthenticationKey({ username, password, serverBValue, salt, }) {\n if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n throw new Error('B cannot be zero.');\n }\n const U = calculateU({\n A: this.A,\n B: serverBValue,\n });\n const usernamePassword = `${this.userPoolName}${username}:${password}`;\n const usernamePasswordHash = getHashFromData(usernamePassword);\n const x = new BigInteger(getHashFromHex(getPaddedHex(salt) + usernamePasswordHash), 16);\n const S = await calculateS({\n a: this.a,\n g: this.g,\n k: this.k,\n x,\n B: serverBValue,\n N: this.N,\n U,\n });\n const context = this.encoder.convert('Caldera Derived Key');\n const spacer = this.encoder.convert(String.fromCharCode(1));\n const info = new Uint8Array(context.byteLength + spacer.byteLength);\n info.set(context, 0);\n info.set(spacer, context.byteLength);\n const hkdfKey = getHkdfKey(getBytesFromHex(getPaddedHex(S)), getBytesFromHex(getPaddedHex(U)), info);\n return hkdfKey;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { base64Encoder } from '@aws-amplify/core/internals/utils';\nimport { getRandomBytes } from './getRandomBytes';\n/**\n * Helper function to generate a random string\n * @returns {string} a random value.\n *\n * @internal\n */\nexport const getRandomString = () => base64Encoder.convert(getRandomBytes(40));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BigInteger } from '../BigInteger';\nimport { getHashFromHex } from '../getHashFromHex';\nimport { getPaddedHex } from '../getPaddedHex';\n/**\n * @internal\n */\nexport const calculateU = ({ A, B, }) => {\n const U = new BigInteger(getHashFromHex(getPaddedHex(A) + getPaddedHex(B)), 16);\n if (U.equals(BigInteger.ZERO)) {\n throw new Error('U cannot be zero.');\n }\n return U;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Sha256 } from '@aws-crypto/sha256-js';\n/**\n * Standard HKDF algorithm.\n *\n * @param {Uint8Array} ikm Input key material.\n * @param {Uint8Array} salt Salt value.\n * @param {Uint8Array} info Context and application specific info.\n *\n * @returns {Uint8Array} Strong key material.\n *\n * @internal\n */\nexport const getHkdfKey = (ikm, salt, info) => {\n const awsCryptoHash = new Sha256(salt);\n awsCryptoHash.update(ikm);\n const resultFromAWSCryptoPrk = awsCryptoHash.digestSync();\n const awsCryptoHashHmac = new Sha256(resultFromAWSCryptoPrk);\n awsCryptoHashHmac.update(info);\n const resultFromAWSCryptoHmac = awsCryptoHashHmac.digestSync();\n const hashHexFromAWSCrypto = resultFromAWSCryptoHmac;\n return hashHexFromAWSCrypto.slice(0, 16);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BigInteger } from '../BigInteger';\n/**\n * @internal\n */\nexport const calculateA = async ({ a, g, N, }) => {\n return new Promise((resolve, reject) => {\n g.modPow(a, N, (err, A) => {\n if (err) {\n reject(err);\n return;\n }\n if (A.mod(N).equals(BigInteger.ZERO)) {\n reject(new Error('Illegal parameter. A mod N cannot be 0.'));\n return;\n }\n resolve(A);\n });\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthenticationHelper } from './AuthenticationHelper';\nimport { BigInteger } from './BigInteger';\nimport { calculateA } from './calculate';\nimport { INIT_N } from './constants';\nimport { getHexFromBytes } from './getHexFromBytes';\nimport { getRandomBytes } from './getRandomBytes';\n/**\n * Returns a new {@link AuthenticationHelper} instance with randomly generated BigInteger seed\n *\n * @param userPoolName Cognito user pool name.\n * @returns An {@link AuthenticationHelper} instance.\n *\n * @internal\n */\nexport const getAuthenticationHelper = async (userPoolName) => {\n const N = new BigInteger(INIT_N, 16);\n const g = new BigInteger('2', 16);\n const a = generateRandomBigInteger();\n const A = await calculateA({ a, g, N });\n return new AuthenticationHelper({ userPoolName, a, g, A, N });\n};\n/**\n * Generates a random BigInteger.\n *\n * @returns {BigInteger} a random value.\n */\nconst generateRandomBigInteger = () => {\n // This will be interpreted as a postive 128-bit integer\n const hexRandom = getHexFromBytes(getRandomBytes(128));\n // There is no need to do randomBigInt.mod(this.N - 1) as N (3072-bit) is > 128 bytes (1024-bit)\n return new BigInteger(hexRandom, 16);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction } from '@aws-amplify/core/internals/utils';\nimport { getUserContextData } from '../../../providers/cognito/utils/userContextData';\nimport { getAuthenticationHelper } from '../../../providers/cognito/utils/srp';\nimport { handlePasswordVerifierChallenge, retryOnResourceNotFoundException, setActiveSignInUsername, } from '../../../providers/cognito/utils/signInHelpers';\nimport { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\n/**\n * Handles the Password SRP (Secure Remote Password) authentication flow.\n * This function can be used with both USER_SRP_AUTH and USER_AUTH flows.\n *\n * @param {Object} params - The parameters for the Password SRP authentication\n * @param {string} params.username - The username for authentication\n * @param {string} params.password - The user's password\n * @param {ClientMetadata} [params.clientMetadata] - Optional metadata to be sent with auth requests\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Token orchestrator for managing auth tokens\n * @param {AuthFlowType} params.authFlow - The type of authentication flow ('USER_SRP_AUTH' or 'USER_AUTH')\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred challenge type when using USER_AUTH flow\n *\n * @returns {Promise<RespondToAuthChallengeCommandOutput>} The authentication response\n */\nexport async function handlePasswordSRP({ username, password, clientMetadata, config, tokenOrchestrator, authFlow, preferredChallenge, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const authenticationHelper = await getAuthenticationHelper(userPoolName);\n const authParameters = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n };\n if (authFlow === 'USER_AUTH' && preferredChallenge) {\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: authFlow,\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const resp = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n const { ChallengeParameters: challengeParameters, Session: session } = resp;\n const activeUsername = challengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n if (resp.ChallengeName === 'PASSWORD_VERIFIER') {\n return retryOnResourceNotFoundException(handlePasswordVerifierChallenge, [\n password,\n challengeParameters,\n clientMetadata,\n session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n }\n return resp;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst MONTH_NAMES = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n];\nconst WEEK_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nexport const getNowString = () => {\n const now = new Date();\n const weekDay = WEEK_NAMES[now.getUTCDay()];\n const month = MONTH_NAMES[now.getUTCMonth()];\n const day = now.getUTCDate();\n let hours = now.getUTCHours();\n if (hours < 10) {\n hours = `0${hours}`;\n }\n let minutes = now.getUTCMinutes();\n if (minutes < 10) {\n minutes = `0${minutes}`;\n }\n let seconds = now.getUTCSeconds();\n if (seconds < 10) {\n seconds = `0${seconds}`;\n }\n const year = now.getUTCFullYear();\n // ddd MMM D HH:mm:ss UTC YYYY\n const dateNow = `${weekDay} ${month} ${day} ${hours}:${minutes}:${seconds} UTC ${year}`;\n return dateNow;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { base64Decoder, base64Encoder, } from '@aws-amplify/core/internals/utils';\nimport { textEncoder } from '../textEncoder';\nexport const getSignatureString = ({ userPoolName, username, challengeParameters, dateNow, hkdf, }) => {\n const bufUPIDaToB = textEncoder.convert(userPoolName);\n const bufUNaToB = textEncoder.convert(username);\n const bufSBaToB = urlB64ToUint8Array(challengeParameters.SECRET_BLOCK);\n const bufDNaToB = textEncoder.convert(dateNow);\n const bufConcat = new Uint8Array(bufUPIDaToB.byteLength +\n bufUNaToB.byteLength +\n bufSBaToB.byteLength +\n bufDNaToB.byteLength);\n bufConcat.set(bufUPIDaToB, 0);\n bufConcat.set(bufUNaToB, bufUPIDaToB.byteLength);\n bufConcat.set(bufSBaToB, bufUPIDaToB.byteLength + bufUNaToB.byteLength);\n bufConcat.set(bufDNaToB, bufUPIDaToB.byteLength + bufUNaToB.byteLength + bufSBaToB.byteLength);\n const awsCryptoHash = new Sha256(hkdf);\n awsCryptoHash.update(bufConcat);\n const resultFromAWSCrypto = awsCryptoHash.digestSync();\n const signatureString = base64Encoder.convert(resultFromAWSCrypto);\n return signatureString;\n};\nconst urlB64ToUint8Array = (base64String) => {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');\n const rawData = base64Decoder.convert(base64);\n const outputArray = new Uint8Array(rawData.length);\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AmplifyUrl, AuthAction, assertTokenProviderConfig, base64Encoder, getDeviceName, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { InitiateAuthException } from '../types/errors';\nimport { AuthErrorCodes } from '../../../common/AuthErrorStrings';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { USER_ALREADY_AUTHENTICATED_EXCEPTION } from '../../../errors/constants';\nimport { getCurrentUser } from '../apis/getCurrentUser';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { createAssociateSoftwareTokenClient, createConfirmDeviceClient, createInitiateAuthClient, createRespondToAuthChallengeClient, createVerifySoftwareTokenClient, } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { handleWebAuthnSignInResult } from '../../../client/flows/userAuth/handleWebAuthnSignInResult';\nimport { handlePasswordSRP } from '../../../client/flows/shared/handlePasswordSRP';\nimport { initiateSelectedChallenge } from '../../../client/flows/userAuth/handleSelectChallenge';\nimport { handleSelectChallengeWithPassword } from '../../../client/flows/userAuth/handleSelectChallengeWithPassword';\nimport { handleSelectChallengeWithPasswordSRP } from '../../../client/flows/userAuth/handleSelectChallengeWithPasswordSRP';\nimport { signInStore } from '../../../client/utils/store';\nimport { assertDeviceMetadata } from './types';\nimport { getAuthenticationHelper, getBytesFromHex, getNowString, getSignatureString, } from './srp';\nimport { BigInteger } from './srp/BigInteger';\nimport { getUserContextData } from './userContextData';\nconst USER_ATTRIBUTES = 'userAttributes.';\nexport async function handleCustomChallenge({ challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n ANSWER: challengeResponse,\n };\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return handleDeviceSRPAuth({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\nexport async function handleMFASetupChallenge({ challengeResponse, username, clientMetadata, session, deviceName, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n if (challengeResponse === 'EMAIL') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"EMAIL_OTP\"]',\n },\n $metadata: {},\n };\n }\n if (challengeResponse === 'TOTP') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"SOFTWARE_TOKEN_MFA\"]',\n },\n $metadata: {},\n };\n }\n const challengeResponses = {\n USERNAME: username,\n };\n const isTOTPCode = /^\\d+$/.test(challengeResponse);\n if (isTOTPCode) {\n const verifySoftwareToken = createVerifySoftwareTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { Session } = await verifySoftwareToken({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, {\n UserCode: challengeResponse,\n Session: session,\n FriendlyDeviceName: deviceName,\n });\n signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n const isEmail = challengeResponse.includes('@');\n if (isEmail) {\n challengeResponses.EMAIL = challengeResponse;\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `Cannot proceed with MFA setup using challengeResponse: ${challengeResponse}`,\n recoverySuggestion: 'Try passing \"EMAIL\", \"TOTP\", a valid email, or OTP code as the challengeResponse.',\n });\n}\nexport async function handleSelectMFATypeChallenge({ challengeResponse, username, clientMetadata, session, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n assertValidationError(challengeResponse === 'TOTP' ||\n challengeResponse === 'SMS' ||\n challengeResponse === 'EMAIL', AuthValidationErrorCode.IncorrectMFAMethod);\n const challengeResponses = {\n USERNAME: username,\n ANSWER: mapMfaType(challengeResponse),\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nexport async function handleCompleteNewPasswordChallenge({ challengeResponse, clientMetadata, session, username, requiredAttributes, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n ...createAttributes(requiredAttributes),\n NEW_PASSWORD: challengeResponse,\n USERNAME: username,\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nexport async function handleUserPasswordAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n PASSWORD: password,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = response.ChallengeParameters?.USERNAME ??\n response.ChallengeParameters?.USER_ID_FOR_SRP ??\n username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function handleUserSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_SRP_AUTH',\n });\n}\nexport async function handleCustomAuthFlowWithoutSRP(username, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = response.ChallengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function handleCustomSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n assertTokenProviderConfig(config);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const authenticationHelper = await getAuthenticationHelper(userPoolName);\n const authParameters = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n CHALLENGE_NAME: 'SRP_A',\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { ChallengeParameters: challengeParameters, Session: session } = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = challengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n return retryOnResourceNotFoundException(handlePasswordVerifierChallenge, [\n password,\n challengeParameters,\n clientMetadata,\n session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n}\nasync function handleDeviceSRPAuth({ username, config, clientMetadata, session, tokenOrchestrator, }) {\n const { userPoolId, userPoolEndpoint } = config;\n const clientId = config.userPoolClientId;\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n assertDeviceMetadata(deviceMetadata);\n const authenticationHelper = await getAuthenticationHelper(deviceMetadata.deviceGroupKey);\n const challengeResponses = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n DEVICE_KEY: deviceMetadata.deviceKey,\n };\n const jsonReqResponseChallenge = {\n ChallengeName: 'DEVICE_SRP_AUTH',\n ClientId: clientId,\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { ChallengeParameters: respondedChallengeParameters, Session } = await respondToAuthChallenge({ region: getRegionFromUserPoolId(userPoolId) }, jsonReqResponseChallenge);\n return handleDevicePasswordVerifier(username, respondedChallengeParameters, clientMetadata, Session, authenticationHelper, config, tokenOrchestrator);\n}\nasync function handleDevicePasswordVerifier(username, challengeParameters, clientMetadata, session, authenticationHelper, { userPoolId, userPoolClientId, userPoolEndpoint }, tokenOrchestrator) {\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n assertDeviceMetadata(deviceMetadata);\n const serverBValue = new BigInteger(challengeParameters?.SRP_B, 16);\n const salt = new BigInteger(challengeParameters?.SALT, 16);\n const { deviceKey } = deviceMetadata;\n const { deviceGroupKey } = deviceMetadata;\n const hkdf = await authenticationHelper.getPasswordAuthenticationKey({\n username: deviceMetadata.deviceKey,\n password: deviceMetadata.randomPassword,\n serverBValue,\n salt,\n });\n const dateNow = getNowString();\n const challengeResponses = {\n USERNAME: challengeParameters?.USERNAME ?? username,\n PASSWORD_CLAIM_SECRET_BLOCK: challengeParameters?.SECRET_BLOCK,\n TIMESTAMP: dateNow,\n PASSWORD_CLAIM_SIGNATURE: getSignatureString({\n username: deviceKey,\n userPoolName: deviceGroupKey,\n challengeParameters,\n dateNow,\n hkdf,\n }),\n DEVICE_KEY: deviceKey,\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReqResponseChallenge = {\n ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n ClientId: userPoolClientId,\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({ region: getRegionFromUserPoolId(userPoolId) }, jsonReqResponseChallenge);\n}\nexport async function handlePasswordVerifierChallenge(password, challengeParameters, clientMetadata, session, authenticationHelper, config, tokenOrchestrator) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const serverBValue = new BigInteger(challengeParameters?.SRP_B, 16);\n const salt = new BigInteger(challengeParameters?.SALT, 16);\n const username = challengeParameters?.USER_ID_FOR_SRP;\n if (!username)\n throw new AuthError({\n name: 'EmptyUserIdForSRPException',\n message: 'USER_ID_FOR_SRP was not found in challengeParameters',\n });\n const hkdf = await authenticationHelper.getPasswordAuthenticationKey({\n username,\n password,\n serverBValue,\n salt,\n });\n const dateNow = getNowString();\n const challengeResponses = {\n USERNAME: username,\n PASSWORD_CLAIM_SECRET_BLOCK: challengeParameters?.SECRET_BLOCK,\n TIMESTAMP: dateNow,\n PASSWORD_CLAIM_SIGNATURE: getSignatureString({\n username,\n userPoolName,\n challengeParameters,\n dateNow,\n hkdf,\n }),\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReqResponseChallenge = {\n ChallengeName: 'PASSWORD_VERIFIER',\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await respondToAuthChallenge({ region: getRegionFromUserPoolId(userPoolId) }, jsonReqResponseChallenge);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function getSignInResult(params) {\n const { challengeName, challengeParameters, availableChallenges } = params;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n switch (challengeName) {\n case 'CUSTOM_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE',\n additionalInfo: challengeParameters,\n },\n };\n case 'MFA_SETUP': {\n const { signInSession, username } = signInStore.getState();\n const mfaSetupTypes = getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_SETUP)) || [];\n const allowedMfaSetupTypes = getAllowedMfaSetupTypes(mfaSetupTypes);\n const isTotpMfaSetupAvailable = allowedMfaSetupTypes.includes('TOTP');\n const isEmailMfaSetupAvailable = allowedMfaSetupTypes.includes('EMAIL');\n if (isTotpMfaSetupAvailable && isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION',\n allowedMFATypes: allowedMfaSetupTypes,\n },\n };\n }\n if (isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP',\n },\n };\n }\n if (isTotpMfaSetupAvailable) {\n const associateSoftwareToken = createAssociateSoftwareTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { Session, SecretCode: secretCode } = await associateSoftwareToken({ region: getRegionFromUserPoolId(authConfig.userPoolId) }, {\n Session: signInSession,\n });\n signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP',\n totpSetupDetails: getTOTPSetupDetails(secretCode, username),\n },\n };\n }\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `Cannot initiate MFA setup from available types: ${mfaSetupTypes}`,\n });\n }\n case 'NEW_PASSWORD_REQUIRED':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED',\n missingAttributes: parseAttributes(challengeParameters.requiredAttributes),\n },\n };\n case 'SELECT_MFA_TYPE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION',\n allowedMFATypes: getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_CHOOSE)),\n },\n };\n case 'SMS_OTP':\n case 'SMS_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_SMS_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'SOFTWARE_TOKEN_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_TOTP_CODE',\n },\n };\n case 'EMAIL_OTP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'WEB_AUTHN':\n return handleWebAuthnSignInResult(challengeParameters);\n case 'PASSWORD':\n case 'PASSWORD_SRP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD',\n },\n };\n case 'SELECT_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION',\n availableChallenges,\n },\n };\n case 'ADMIN_NO_SRP_AUTH':\n break;\n case 'DEVICE_PASSWORD_VERIFIER':\n break;\n case 'DEVICE_SRP_AUTH':\n break;\n case 'PASSWORD_VERIFIER':\n break;\n }\n // TODO: remove this error message for production apps\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'An error occurred during the sign in process. ' +\n `${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nexport function getTOTPSetupDetails(secretCode, username) {\n return {\n sharedSecret: secretCode,\n getSetupUri: (appName, accountName) => {\n const totpUri = `otpauth://totp/${appName}:${accountName ?? username}?secret=${secretCode}&issuer=${appName}`;\n return new AmplifyUrl(totpUri);\n },\n };\n}\nexport function getSignInResultFromError(errorName) {\n if (errorName === InitiateAuthException.PasswordResetRequiredException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'RESET_PASSWORD' },\n };\n }\n else if (errorName === InitiateAuthException.UserNotConfirmedException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'CONFIRM_SIGN_UP' },\n };\n }\n}\nexport function parseAttributes(attributes) {\n if (!attributes)\n return [];\n const parsedAttributes = JSON.parse(attributes).map(att => att.includes(USER_ATTRIBUTES) ? att.replace(USER_ATTRIBUTES, '') : att);\n return parsedAttributes;\n}\nexport function createAttributes(attributes) {\n if (!attributes)\n return {};\n const newAttributes = {};\n Object.entries(attributes).forEach(([key, value]) => {\n if (value)\n newAttributes[`${USER_ATTRIBUTES}${key}`] = value;\n });\n return newAttributes;\n}\nexport async function handleChallengeName(username, challengeName, session, challengeResponse, config, tokenOrchestrator, clientMetadata, options) {\n const userAttributes = options?.userAttributes;\n const deviceName = options?.friendlyDeviceName;\n switch (challengeName) {\n case 'WEB_AUTHN':\n case 'SELECT_CHALLENGE':\n if (challengeResponse === 'PASSWORD_SRP' ||\n challengeResponse === 'PASSWORD') {\n return {\n ChallengeName: challengeResponse,\n Session: session,\n $metadata: {},\n };\n }\n return initiateSelectedChallenge({\n username,\n session,\n selectedChallenge: challengeResponse,\n config,\n clientMetadata,\n });\n case 'SELECT_MFA_TYPE':\n return handleSelectMFATypeChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n });\n case 'MFA_SETUP':\n return handleMFASetupChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n deviceName,\n config,\n });\n case 'NEW_PASSWORD_REQUIRED':\n return handleCompleteNewPasswordChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n requiredAttributes: userAttributes,\n config,\n });\n case 'CUSTOM_CHALLENGE':\n return retryOnResourceNotFoundException(handleCustomChallenge, [\n {\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n },\n ], username, tokenOrchestrator);\n case 'SMS_MFA':\n case 'SOFTWARE_TOKEN_MFA':\n case 'SMS_OTP':\n case 'EMAIL_OTP':\n return handleMFAChallenge({\n challengeName,\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n });\n case 'PASSWORD':\n return handleSelectChallengeWithPassword(username, challengeResponse, clientMetadata, config, session);\n case 'PASSWORD_SRP':\n return handleSelectChallengeWithPasswordSRP(username, challengeResponse, // This is the actual password\n clientMetadata, config, session, tokenOrchestrator);\n }\n // TODO: remove this error message for production apps\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `An error occurred during the sign in process.\n\t\t${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nexport function mapMfaType(mfa) {\n let mfaType = 'SMS_MFA';\n if (mfa === 'TOTP')\n mfaType = 'SOFTWARE_TOKEN_MFA';\n if (mfa === 'EMAIL')\n mfaType = 'EMAIL_OTP';\n return mfaType;\n}\nexport function getMFAType(type) {\n if (type === 'SMS_MFA')\n return 'SMS';\n if (type === 'SOFTWARE_TOKEN_MFA')\n return 'TOTP';\n if (type === 'EMAIL_OTP')\n return 'EMAIL';\n // TODO: log warning for unknown MFA type\n}\nexport function getMFATypes(types) {\n if (!types)\n return undefined;\n return types.map(getMFAType).filter(Boolean);\n}\nexport function parseMFATypes(mfa) {\n if (!mfa)\n return [];\n return JSON.parse(mfa);\n}\nexport function getAllowedMfaSetupTypes(availableMfaSetupTypes) {\n return availableMfaSetupTypes.filter(authMfaType => authMfaType === 'EMAIL' || authMfaType === 'TOTP');\n}\nexport async function assertUserNotAuthenticated() {\n let authUser;\n try {\n authUser = await getCurrentUser();\n }\n catch (error) { }\n if (authUser && authUser.userId && authUser.username) {\n throw new AuthError({\n name: USER_ALREADY_AUTHENTICATED_EXCEPTION,\n message: 'There is already a signed in user.',\n recoverySuggestion: 'Call signOut before calling signIn again.',\n });\n }\n}\n/**\n * This function is used to kick off the device management flow.\n *\n * If an error is thrown while generating a hash device or calling the `ConfirmDevice`\n * client, then this API will ignore the error and return undefined. Otherwise the authentication\n * flow will not complete and the user won't be able to be signed in.\n *\n * @returns DeviceMetadata | undefined\n */\nexport async function getNewDeviceMetadata({ userPoolId, userPoolEndpoint, newDeviceMetadata, accessToken, }) {\n if (!newDeviceMetadata)\n return undefined;\n const userPoolName = userPoolId.split('_')[1] || '';\n const authenticationHelper = await getAuthenticationHelper(userPoolName);\n const deviceKey = newDeviceMetadata?.DeviceKey;\n const deviceGroupKey = newDeviceMetadata?.DeviceGroupKey;\n try {\n await authenticationHelper.generateHashDevice(deviceGroupKey ?? '', deviceKey ?? '');\n }\n catch (errGenHash) {\n // TODO: log error here\n return undefined;\n }\n const deviceSecretVerifierConfig = {\n Salt: base64Encoder.convert(getBytesFromHex(authenticationHelper.getSaltToHashDevices())),\n PasswordVerifier: base64Encoder.convert(getBytesFromHex(authenticationHelper.getVerifierDevices())),\n };\n const randomPassword = authenticationHelper.getRandomPassword();\n try {\n const confirmDevice = createConfirmDeviceClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n await confirmDevice({ region: getRegionFromUserPoolId(userPoolId) }, {\n AccessToken: accessToken,\n DeviceName: await getDeviceName(),\n DeviceKey: newDeviceMetadata?.DeviceKey,\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n });\n return {\n deviceKey,\n deviceGroupKey,\n randomPassword,\n };\n }\n catch (error) {\n // TODO: log error here\n return undefined;\n }\n}\n/**\n * It will retry the function if the error is a `ResourceNotFoundException` and\n * will clean the device keys stored in the storage mechanism.\n *\n */\nexport async function retryOnResourceNotFoundException(func, args, username, tokenOrchestrator) {\n try {\n return await func(...args);\n }\n catch (error) {\n if (error instanceof AuthError &&\n error.name === 'ResourceNotFoundException' &&\n error.message.includes('Device does not exist.')) {\n await tokenOrchestrator.clearDeviceMetadata(username);\n return func(...args);\n }\n throw error;\n }\n}\nexport function setActiveSignInUsername(username) {\n const { dispatch } = signInStore;\n dispatch({ type: 'SET_USERNAME', value: username });\n}\nexport function getActiveSignInUsername(username) {\n const state = signInStore.getState();\n return state.username ?? username;\n}\nexport async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n };\n if (challengeName === 'EMAIL_OTP') {\n challengeResponses.EMAIL_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_MFA') {\n challengeResponses.SMS_MFA_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_OTP') {\n challengeResponses.SMS_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;\n }\n const userContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: challengeName,\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData: userContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createAssociateSoftwareTokenClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('AssociateSoftwareToken'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthErrorCodes } from '../../../common/AuthErrorStrings';\nimport { createRespondToAuthChallengeClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { cacheCognitoTokens } from '../../../providers/cognito/tokenProvider/cacheTokens';\nimport { dispatchSignedInHubEvent } from '../../../providers/cognito/utils/dispatchSignedInHubEvent';\nimport { getNewDeviceMetadata, getSignInResult, } from '../../../providers/cognito/utils/signInHelpers';\nimport { setActiveSignInState, signInStore } from '../../../client/utils/store';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getPasskey } from '../../utils/passkey';\nimport { PasskeyErrorCode, assertPasskeyError, } from '../../utils/passkey/errors';\nimport { AuthError } from '../../../errors/AuthError';\nexport async function handleWebAuthnSignInResult(challengeParameters) {\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { username, signInSession, signInDetails, challengeName } = signInStore.getState();\n if (challengeName !== 'WEB_AUTHN' || !username) {\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'Unable to proceed due to invalid sign in state.',\n });\n }\n const { CREDENTIAL_REQUEST_OPTIONS: credentialRequestOptions } = challengeParameters;\n assertPasskeyError(!!credentialRequestOptions, PasskeyErrorCode.InvalidPasskeyAuthenticationOptions);\n const cred = await getPasskey(JSON.parse(credentialRequestOptions));\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { ChallengeName: nextChallengeName, ChallengeParameters: nextChallengeParameters, AuthenticationResult: authenticationResult, Session: nextSession, } = await respondToAuthChallenge({\n region: getRegionFromUserPoolId(authConfig.userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, {\n ChallengeName: 'WEB_AUTHN',\n ChallengeResponses: {\n USERNAME: username,\n CREDENTIAL: JSON.stringify(cred),\n },\n ClientId: authConfig.userPoolClientId,\n Session: signInSession,\n });\n setActiveSignInState({\n signInSession: nextSession,\n username,\n challengeName: nextChallengeName,\n signInDetails,\n });\n if (authenticationResult) {\n await cacheCognitoTokens({\n ...authenticationResult,\n username,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: authenticationResult.NewDeviceMetadata,\n accessToken: authenticationResult.AccessToken,\n }),\n signInDetails,\n });\n signInStore.dispatch({ type: 'RESET_STATE' });\n await dispatchSignedInHubEvent();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n if (nextChallengeName === 'WEB_AUTHN') {\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'Sequential WEB_AUTHN challenges returned from underlying service cannot be handled.',\n });\n }\n return getSignInResult({\n challengeName: nextChallengeName,\n challengeParameters: nextChallengeParameters,\n });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createConfirmDeviceClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('ConfirmDevice'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { validationErrorMap } from '../../common/AuthErrorStrings';\nimport { AuthError } from '../AuthError';\nexport function assertValidationError(assertion, name) {\n const { message, recoverySuggestion } = validationErrorMap[name];\n if (!assertion) {\n throw new AuthError({ name, message, recoverySuggestion });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { getActiveSignInUsername, getNewDeviceMetadata, getSignInResult, getSignInResultFromError, handleCustomSRPAuthFlow, } from '../utils/signInHelpers';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\n/**\n * Signs a user in using a custom authentication flow with SRP\n *\n * @param input - The SignInWithCustomSRPAuthInput object\n * @returns SignInWithCustomSRPAuthOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito\n * service errors thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signInWithCustomSRPAuth(input) {\n const { username, password, options } = input;\n const signInDetails = {\n loginId: username,\n authFlowType: 'CUSTOM_WITH_SRP',\n };\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const metadata = options?.clientMetadata;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n try {\n const { ChallengeName: handledChallengeName, ChallengeParameters: handledChallengeParameters, AuthenticationResult, Session, } = await handleCustomSRPAuthFlow(username, password, metadata, authConfig, tokenOrchestrator);\n const activeUsername = getActiveSignInUsername(username);\n // sets up local state used during the sign-in process\n setActiveSignInState({\n signInSession: Session,\n username: activeUsername,\n challengeName: handledChallengeName,\n signInDetails,\n });\n if (AuthenticationResult) {\n await cacheCognitoTokens({\n username: activeUsername,\n ...AuthenticationResult,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: AuthenticationResult.NewDeviceMetadata,\n accessToken: AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: handledChallengeName,\n challengeParameters: handledChallengeParameters,\n });\n }\n catch (error) {\n resetActiveSignInState();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction defaultState() {\n return {\n active: false,\n };\n}\nconst autoSignInReducer = (state, action) => {\n switch (action.type) {\n case 'SET_USERNAME':\n return {\n ...state,\n username: action.value,\n };\n case 'SET_SESSION':\n return {\n ...state,\n session: action.value,\n };\n case 'START':\n return {\n ...state,\n active: true,\n };\n case 'RESET':\n return defaultState();\n default:\n return state;\n }\n};\nconst createAutoSignInStore = (reducer) => {\n let currentState = reducer(defaultState(), { type: 'RESET' });\n return {\n getState: () => currentState,\n dispatch: action => {\n currentState = reducer(currentState, action);\n },\n };\n};\nexport const autoSignInStore = createAutoSignInStore(autoSignInReducer);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { autoSignInStore } from '../../../client/utils/store';\nimport { AuthError } from '../../../errors/AuthError';\nimport { AUTO_SIGN_IN_EXCEPTION } from '../../../errors/constants';\nconst initialAutoSignIn = async () => {\n throw new AuthError({\n name: AUTO_SIGN_IN_EXCEPTION,\n message: 'The autoSignIn flow has not started, or has been cancelled/completed.',\n recoverySuggestion: 'Please try to use the signIn API or log out before starting a new autoSignIn flow.',\n });\n};\n/**\n * Signs a user in automatically after finishing the sign-up process.\n *\n * This API will automatically sign a user in if the autoSignIn flow has been completed in the following cases:\n * - User confirmed their account with a verification code sent to their phone or email (default option).\n * - User confirmed their account with a verification link sent to their phone or email. In order to\n * enable this option you need to go to the Amazon Cognito [console](https://aws.amazon.com/pm/cognito),\n * look for your userpool, then go to the `Messaging` tab and enable `link` mode inside the `Verification message` option.\n * Finally you need to define the `signUpVerificationMethod` in your `Auth` config.\n *\n * @example\n * ```typescript\n * Amplify.configure({\n * Auth: {\n * Cognito: {\n * ...cognitoConfig,\n * signUpVerificationMethod: \"link\" // the default value is \"code\"\n * }\n *\t}});\n * ```\n *\n * @throws AutoSignInException - Thrown when the autoSignIn flow has not started, or has been cancelled/completed.\n * @returns The signInOutput.\n *\n * @example\n * ```typescript\n * // handleSignUp.ts\n * async function handleSignUp(\n * username:string,\n * password:string\n * ){\n * try {\n * const { nextStep } = await signUp({\n * username,\n * password,\n * options: {\n * userAttributes:{ email:'email@email.com'},\n * autoSignIn: true // This enables the auto sign-in flow.\n * },\n * });\n *\n * handleSignUpStep(nextStep);\n *\n * } catch (error) {\n * console.log(error);\n * }\n * }\n *\n * // handleConfirmSignUp.ts\n * async function handleConfirmSignUp(username:string, confirmationCode:string) {\n * try {\n * const { nextStep } = await confirmSignUp({\n * username,\n * confirmationCode,\n * });\n *\n * handleSignUpStep(nextStep);\n * } catch (error) {\n * console.log(error);\n * }\n * }\n *\n * // signUpUtils.ts\n * async function handleSignUpStep( step: SignUpOutput[\"nextStep\"]) {\n * switch (step.signUpStep) {\n * case \"CONFIRM_SIGN_UP\":\n *\n * // Redirect end-user to confirm-sign up screen.\n *\n * case \"COMPLETE_AUTO_SIGN_IN\":\n *\t const codeDeliveryDetails = step.codeDeliveryDetails;\n * if (codeDeliveryDetails) {\n * // Redirect user to confirm-sign-up with link screen.\n * }\n * const signInOutput = await autoSignIn();\n * // handle sign-in steps\n * }\n *\n * ```\n */\n// TODO(Eslint): can this be refactored not using `let` on exported member?\n// eslint-disable-next-line import/no-mutable-exports\nexport let autoSignIn = initialAutoSignIn;\n/**\n * Sets the context of autoSignIn at run time.\n * @internal\n */\nexport function setAutoSignIn(callback) {\n autoSignIn = callback;\n}\n/**\n * Resets the context\n *\n * @internal\n */\nexport function resetAutoSignIn(resetCallback = true) {\n if (resetCallback) {\n autoSignIn = initialAutoSignIn;\n }\n autoSignInStore.dispatch({ type: 'RESET' });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { getActiveSignInUsername, getNewDeviceMetadata, getSignInResult, getSignInResultFromError, handleUserSRPAuthFlow, } from '../utils/signInHelpers';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Signs a user in\n *\n * @param input - The SignInWithSRPInput object\n * @returns SignInWithSRPOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito service errors\n * thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signInWithSRP(input) {\n const { username, password } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_SRP_AUTH',\n };\n assertTokenProviderConfig(authConfig);\n const clientMetaData = input.options?.clientMetadata;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n try {\n const { ChallengeName: handledChallengeName, ChallengeParameters: handledChallengeParameters, AuthenticationResult, Session, } = await handleUserSRPAuthFlow(username, password, clientMetaData, authConfig, tokenOrchestrator);\n const activeUsername = getActiveSignInUsername(username);\n // sets up local state used during the sign-in process\n setActiveSignInState({\n signInSession: Session,\n username: activeUsername,\n challengeName: handledChallengeName,\n signInDetails,\n });\n if (AuthenticationResult) {\n await cacheCognitoTokens({\n username: activeUsername,\n ...AuthenticationResult,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: AuthenticationResult.NewDeviceMetadata,\n accessToken: AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n resetAutoSignIn();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: handledChallengeName,\n challengeParameters: handledChallengeParameters,\n });\n }\n catch (error) {\n resetActiveSignInState();\n resetAutoSignIn();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { getActiveSignInUsername, getNewDeviceMetadata, getSignInResult, getSignInResultFromError, } from '../utils/signInHelpers';\nimport { autoSignInStore } from '../../../client/utils/store';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { handleUserAuthFlow, } from '../../../client/flows/userAuth/handleUserAuthFlow';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Signs a user in through a registered email or phone number without a password by by receiving and entering an OTP.\n *\n * @param input - The SignInWithUserAuthInput object\n * @returns SignInWithUserAuthOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito service errors\n * thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password -- needs to change\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signInWithUserAuth(input) {\n const { username, password, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_AUTH',\n };\n assertTokenProviderConfig(authConfig);\n const clientMetaData = options?.clientMetadata;\n const preferredChallenge = options?.preferredChallenge;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n try {\n const handleUserAuthFlowInput = {\n username,\n config: authConfig,\n tokenOrchestrator,\n clientMetadata: clientMetaData,\n preferredChallenge,\n password,\n };\n const autoSignInStoreState = autoSignInStore.getState();\n if (autoSignInStoreState.active &&\n autoSignInStoreState.username === username) {\n handleUserAuthFlowInput.session = autoSignInStoreState.session;\n }\n const response = await handleUserAuthFlow(handleUserAuthFlowInput);\n const activeUsername = getActiveSignInUsername(username);\n setActiveSignInState({\n signInSession: response.Session,\n username: activeUsername,\n challengeName: response.ChallengeName,\n signInDetails,\n });\n if (response.AuthenticationResult) {\n await cacheCognitoTokens({\n username: activeUsername,\n ...response.AuthenticationResult,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: response.AuthenticationResult.NewDeviceMetadata,\n accessToken: response.AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n resetAutoSignIn();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: response.ChallengeName,\n challengeParameters: response.ChallengeParameters,\n availableChallenges: 'AvailableChallenges' in response\n ? response.AvailableChallenges\n : undefined,\n });\n }\n catch (error) {\n resetActiveSignInState();\n resetAutoSignIn();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction } from '@aws-amplify/core/internals/utils';\nimport { getUserContextData } from '../../../providers/cognito/utils/userContextData';\nimport { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { handlePasswordSRP } from '../shared/handlePasswordSRP';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { setActiveSignInUsername } from '../../../providers/cognito/utils/signInHelpers';\n/**\n * Handles user authentication flow with configurable challenge preferences.\n * Supports AuthFactorType challenges through the USER_AUTH flow.\n *\n * @param {HandleUserAuthFlowInput} params - Authentication flow parameters\n * @param {string} params.username - The username for authentication\n * @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method\n * @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'\n *\n * @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito\n */\nexport async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const authParameters = { USERNAME: username };\n if (preferredChallenge) {\n if (preferredChallenge === 'PASSWORD_SRP') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_AUTH',\n preferredChallenge,\n });\n }\n if (preferredChallenge === 'PASSWORD') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n authParameters.PASSWORD = password;\n }\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const jsonReq = {\n AuthFlow: 'USER_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n if (session) {\n jsonReq.Session = session;\n }\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n // Set the active username immediately after successful authentication attempt\n // If a user starts a new sign-in while another sign-in is incomplete,\n // this ensures we're tracking the correct user for subsequent auth challenges.\n setActiveSignInUsername(username);\n return response;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertUserNotAuthenticated } from '../utils/signInHelpers';\nimport { signInWithCustomAuth } from './signInWithCustomAuth';\nimport { signInWithCustomSRPAuth } from './signInWithCustomSRPAuth';\nimport { signInWithSRP } from './signInWithSRP';\nimport { signInWithUserPassword } from './signInWithUserPassword';\nimport { signInWithUserAuth } from './signInWithUserAuth';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Signs a user in\n *\n * @param input - The SignInInput object\n * @returns SignInOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException }\n * - Cognito service errors thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signIn(input) {\n // Here we want to reset the store but not reassign the callback.\n // The callback is reset when the underlying promise resolves or rejects.\n // With the advent of session based sign in, this guarantees that the signIn API initiates a new auth flow,\n // regardless of whether it is called for a user currently engaged in an active auto sign in session.\n resetAutoSignIn(false);\n const authFlowType = input.options?.authFlowType;\n await assertUserNotAuthenticated();\n switch (authFlowType) {\n case 'USER_SRP_AUTH':\n return signInWithSRP(input);\n case 'USER_PASSWORD_AUTH':\n return signInWithUserPassword(input);\n case 'CUSTOM_WITHOUT_SRP':\n return signInWithCustomAuth(input);\n case 'CUSTOM_WITH_SRP':\n return signInWithCustomSRPAuth(input);\n case 'USER_AUTH':\n return signInWithUserAuth(input);\n default:\n return signInWithSRP(input);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { getActiveSignInUsername, getNewDeviceMetadata, getSignInResult, getSignInResultFromError, handleUserPasswordAuthFlow, retryOnResourceNotFoundException, } from '../utils/signInHelpers';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Signs a user in using USER_PASSWORD_AUTH AuthFlowType\n *\n * @param input - The SignInWithUserPasswordInput object\n * @returns SignInWithUserPasswordOutput\n * @throws service: {@link InitiateAuthException } - Cognito service error thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signInWithUserPassword(input) {\n const { username, password, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_PASSWORD_AUTH',\n };\n assertTokenProviderConfig(authConfig);\n const metadata = options?.clientMetadata;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n try {\n const { ChallengeName: retiredChallengeName, ChallengeParameters: retriedChallengeParameters, AuthenticationResult, Session, } = await retryOnResourceNotFoundException(handleUserPasswordAuthFlow, [username, password, metadata, authConfig, tokenOrchestrator], username, tokenOrchestrator);\n const activeUsername = getActiveSignInUsername(username);\n // sets up local state used during the sign-in process\n setActiveSignInState({\n signInSession: Session,\n username: activeUsername,\n challengeName: retiredChallengeName,\n signInDetails,\n });\n if (AuthenticationResult) {\n await cacheCognitoTokens({\n ...AuthenticationResult,\n username: activeUsername,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: AuthenticationResult.NewDeviceMetadata,\n accessToken: AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n resetAutoSignIn();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: retiredChallengeName,\n challengeParameters: retriedChallengeParameters,\n });\n }\n catch (error) {\n resetActiveSignInState();\n resetAutoSignIn();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { getActiveSignInUsername, getNewDeviceMetadata, getSignInResult, getSignInResultFromError, handleCustomAuthFlowWithoutSRP, retryOnResourceNotFoundException, } from '../utils/signInHelpers';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\n/**\n * Signs a user in using a custom authentication flow without password\n *\n * @param input - The SignInWithCustomAuthInput object\n * @returns AuthSignInResult\n * @throws service: {@link InitiateAuthException } - Cognito service errors thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password\n * are not defined.\n * @throws SignInWithCustomAuthOutput - Thrown when the token provider config is invalid.\n */\nexport async function signInWithCustomAuth(input) {\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { username, password, options } = input;\n const signInDetails = {\n loginId: username,\n authFlowType: 'CUSTOM_WITHOUT_SRP',\n };\n const metadata = options?.clientMetadata;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n assertValidationError(!password, AuthValidationErrorCode.CustomAuthSignInPassword);\n try {\n const { ChallengeName: retriedChallengeName, ChallengeParameters: retiredChallengeParameters, AuthenticationResult, Session, } = await retryOnResourceNotFoundException(handleCustomAuthFlowWithoutSRP, [username, metadata, authConfig, tokenOrchestrator], username, tokenOrchestrator);\n const activeUsername = getActiveSignInUsername(username);\n // sets up local state used during the sign-in process\n setActiveSignInState({\n signInSession: Session,\n username: activeUsername,\n challengeName: retriedChallengeName,\n signInDetails,\n });\n if (AuthenticationResult) {\n await cacheCognitoTokens({\n username: activeUsername,\n ...AuthenticationResult,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: AuthenticationResult.NewDeviceMetadata,\n accessToken: AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: retriedChallengeName,\n challengeParameters: retiredChallengeParameters,\n });\n }\n catch (error) {\n resetActiveSignInState();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Spinner = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n variant,\n animation = 'border',\n size,\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 className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'spinner');\n const bsSpinnerPrefix = `${bsPrefix}-${animation}`;\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsSpinnerPrefix, size && `${bsSpinnerPrefix}-${size}`, variant && `text-${variant}`)\n });\n});\nSpinner.displayName = 'Spinner';\nexport default Spinner;","import React from \"react\";\nimport { Button, Spinner } from \"react-bootstrap\";\n\nexport default function LoaderButton({\n isLoading,\n className = \"\",\n disabled = false,\n ...props\n}) {\n return (\n <Button\n className={`LoaderButton ${className}`}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && <Spinner size=\"sm\" className=\"me-2\" />}\n {props.children}\n </Button>\n );\n}","import { useState } from \"react\";\n\nexport function useFormFields(initialState) {\n const [fields, setValues] = useState(initialState);\n\n return [\n fields,\n function(event) {\n setValues({\n ...fields,\n [event.target.id]: event.target.value\n });\n }\n ];\n}","import React, { useState } from \"react\";\nimport { FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\nimport { signIn } from \"aws-amplify/auth\";\nimport { Link } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport { useFormFields } from \"../libs/hooksLib\";\nimport { onError } from \"../libs/errorLib\";\nimport \"./Login.css\";\n\n// TODO: Assigning a club to a user (Cognito) is current but:\n// Currently the user is authenticated across the app\n// Assigning a club to the user is fine until a user wants to fly at two clubs. \n// Some way is needed to allow specific club signin that is persistent \n// This might have to be handled by serving specific pages per club, rather than associating a user with a club\n// Unless the user can be unique per club (username, password, club)\n// Currently not working well with a mix of user defined club and addressed defined club\n\nexport default function Login() {\n const { userHasAuthenticated } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const [fields, handleFieldChange] = useFormFields({\n email: \"\",\n password: \"\"\n });\n\n function validateForm() {\n return fields.email.length > 0 && fields.password.length > 0;\n }\n\n async function handleSubmit(event) {\n event.preventDefault();\n \n setIsLoading(true);\n \n try {\n await signIn({username: fields.email, password: fields.password});\n userHasAuthenticated(true);\n } catch (e) {\n onError(e);\n setIsLoading(false);\n }\n }\n\n return (\n <main className=\"Login\">\n <form className=\"d-flex flex-column gap-3\" onSubmit={handleSubmit}>\n <FormGroup controlId=\"email\" size=\"lg\">\n <FormLabel>Email</FormLabel>\n <FormControl\n autoFocus\n type=\"email\"\n value={fields.email}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <FormGroup controlId=\"password\" size=\"lg\">\n <FormLabel>Password</FormLabel>\n <FormControl\n value={fields.password}\n onChange={handleFieldChange}\n type=\"password\"\n autoComplete=\"on\"\n />\n </FormGroup>\n <Link className=\"mb-0\" to=\"../login/reset\">Forgot password?</Link>\n <LoaderButton\n type=\"submit\"\n size=\"lg\"\n isLoading={isLoading}\n disabled={!validateForm()}\n >\n Login\n </LoaderButton>\n </form>\n </main>\n );\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { HubInternal } from '@aws-amplify/core/internals/utils';\nimport { signIn } from '../apis/signIn';\nimport { AuthError } from '../../../errors/AuthError';\nimport { resetAutoSignIn, setAutoSignIn } from '../apis/autoSignIn';\nimport { AUTO_SIGN_IN_EXCEPTION } from '../../../errors/constants';\nimport { signInWithUserAuth } from '../apis/signInWithUserAuth';\nconst MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;\nexport function handleCodeAutoSignIn(signInInput) {\n const stopHubListener = HubInternal.listen('auth-internal', async ({ payload }) => {\n switch (payload.event) {\n case 'confirmSignUp': {\n const response = payload.data;\n if (response?.isSignUpComplete) {\n HubInternal.dispatch('auth-internal', {\n event: 'autoSignIn',\n });\n setAutoSignIn(autoSignInWithCode(signInInput));\n stopHubListener();\n }\n }\n }\n });\n // This will stop the listener if confirmSignUp is not resolved.\n const timeOutId = setTimeout(() => {\n stopHubListener();\n clearTimeout(timeOutId);\n resetAutoSignIn();\n }, MAX_AUTOSIGNIN_POLLING_MS);\n}\nfunction debounce(fun, delay) {\n let timer;\n return (args) => {\n if (!timer) {\n fun(...args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, delay);\n };\n}\nfunction handleAutoSignInWithLink(signInInput, resolve, reject) {\n const start = Date.now();\n const autoSignInPollingIntervalId = setInterval(async () => {\n const elapsedTime = Date.now() - start;\n const maxTime = MAX_AUTOSIGNIN_POLLING_MS;\n if (elapsedTime > maxTime) {\n clearInterval(autoSignInPollingIntervalId);\n reject(new AuthError({\n name: AUTO_SIGN_IN_EXCEPTION,\n message: 'The account was not confirmed on time.',\n recoverySuggestion: 'Try to verify your account by clicking the link sent your email or phone and then login manually.',\n }));\n resetAutoSignIn();\n }\n else {\n try {\n const signInOutput = await signIn(signInInput);\n if (signInOutput.nextStep.signInStep !== 'CONFIRM_SIGN_UP') {\n resolve(signInOutput);\n clearInterval(autoSignInPollingIntervalId);\n resetAutoSignIn();\n }\n }\n catch (error) {\n clearInterval(autoSignInPollingIntervalId);\n reject(error);\n resetAutoSignIn();\n }\n }\n }, 5000);\n}\nconst debouncedAutoSignInWithLink = debounce(handleAutoSignInWithLink, 300);\nconst debouncedAutoSignWithCodeOrUserConfirmed = debounce(handleAutoSignInWithCodeOrUserConfirmed, 300);\nexport function autoSignInWhenUserIsConfirmedWithLink(signInInput) {\n return async () => {\n return new Promise((resolve, reject) => {\n debouncedAutoSignInWithLink([signInInput, resolve, reject]);\n });\n };\n}\nasync function handleAutoSignInWithCodeOrUserConfirmed(signInInput, resolve, reject) {\n try {\n const output = signInInput?.options?.authFlowType === 'USER_AUTH'\n ? await signInWithUserAuth(signInInput)\n : await signIn(signInInput);\n resolve(output);\n resetAutoSignIn();\n }\n catch (error) {\n reject(error);\n resetAutoSignIn();\n }\n}\nfunction autoSignInWithCode(signInInput) {\n return async () => {\n return new Promise((resolve, reject) => {\n debouncedAutoSignWithCodeOrUserConfirmed([signInInput, resolve, reject]);\n });\n };\n}\nexport const autoSignInUserConfirmed = autoSignInWithCode;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { parseJsonBody, parseJsonError, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { validationErrorMap } from '../../../../common/AuthErrorStrings';\nimport { AuthError } from '../../../../errors/AuthError';\nimport { AuthValidationErrorCode } from '../../../../errors/types/validation';\nimport { assertServiceError } from '../../../../errors/utils/assertServiceError';\nimport { SignUpException } from '../../../../providers/cognito/types/errors';\nimport { createUserPoolSerializer } from './shared/serde';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createSignUpClientDeserializer = () => async (response) => {\n if (response.statusCode >= 300) {\n const error = await parseJsonError(response);\n assertServiceError(error);\n if (\n // Missing Password Error\n // 1 validation error detected: Value at 'password'failed to satisfy constraint: Member must not be null\n error.name === SignUpException.InvalidParameterException &&\n /'password'/.test(error.message) &&\n /Member must not be null/.test(error.message)) {\n const name = AuthValidationErrorCode.EmptySignUpPassword;\n const { message, recoverySuggestion } = validationErrorMap[name];\n throw new AuthError({\n name,\n message,\n recoverySuggestion,\n });\n }\n throw new AuthError({ name: error.name, message: error.message });\n }\n return parseJsonBody(response);\n};\nexport const createSignUpClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('SignUp'), createSignUpClientDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { toAttributeType } from '../utils/apiHelpers';\nimport { autoSignInUserConfirmed, autoSignInWhenUserIsConfirmedWithLink, handleCodeAutoSignIn, } from '../utils/signUpHelpers';\nimport { getUserContextData } from '../utils/userContextData';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { createSignUpClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { autoSignInStore } from '../../../client/utils/store';\nimport { setAutoSignIn } from './autoSignIn';\n/**\n * Creates a user\n *\n * @param input - The SignUpInput object\n * @returns SignUpOutput\n * @throws service: {@link SignUpException } - Cognito service errors thrown during the sign-up process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown either username or password\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signUp(input) {\n const { username, password, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const signUpVerificationMethod = authConfig?.signUpVerificationMethod ?? 'code';\n const { clientMetadata, validationData, autoSignIn } = input.options ?? {};\n assertTokenProviderConfig(authConfig);\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignUpUsername);\n const signInServiceOptions = typeof autoSignIn !== 'boolean' ? autoSignIn : undefined;\n const signInInput = {\n username,\n options: signInServiceOptions,\n };\n // if the authFlowType is 'CUSTOM_WITHOUT_SRP' then we don't include the password\n if (signInServiceOptions?.authFlowType !== 'CUSTOM_WITHOUT_SRP') {\n signInInput.password = password;\n }\n const { userPoolId, userPoolClientId, userPoolEndpoint } = authConfig;\n const signUpClient = createSignUpClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const signUpClientInput = {\n Username: username,\n Password: undefined,\n UserAttributes: options?.userAttributes && toAttributeType(options?.userAttributes),\n ClientMetadata: clientMetadata,\n ValidationData: validationData && toAttributeType(validationData),\n ClientId: userPoolClientId,\n UserContextData: getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n }),\n };\n if (password) {\n signUpClientInput.Password = password;\n }\n const { UserSub: userId, CodeDeliveryDetails: cdd, UserConfirmed: userConfirmed, Session: session, } = await signUpClient({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignUp),\n }, signUpClientInput);\n if (signInServiceOptions || autoSignIn === true) {\n autoSignInStore.dispatch({ type: 'START' });\n autoSignInStore.dispatch({ type: 'SET_USERNAME', value: username });\n autoSignInStore.dispatch({ type: 'SET_SESSION', value: session });\n }\n const codeDeliveryDetails = {\n destination: cdd?.Destination,\n deliveryMedium: cdd?.DeliveryMedium,\n attributeName: cdd?.AttributeName,\n };\n const isSignUpComplete = !!userConfirmed;\n const isAutoSignInStarted = autoSignInStore.getState().active;\n // Sign Up Complete\n // No Confirm Sign In Step Required\n if (isSignUpComplete) {\n if (isAutoSignInStarted) {\n setAutoSignIn(autoSignInUserConfirmed(signInInput));\n return {\n isSignUpComplete: true,\n nextStep: {\n signUpStep: 'COMPLETE_AUTO_SIGN_IN',\n },\n userId,\n };\n }\n return {\n isSignUpComplete: true,\n nextStep: {\n signUpStep: 'DONE',\n },\n userId,\n };\n }\n // Sign Up Not Complete\n // Confirm Sign Up Step Required\n if (isAutoSignInStarted) {\n // Confirmation Via Link Occurs In Separate Context\n // AutoSignIn Fn Will Initiate Polling Once Executed\n if (signUpVerificationMethod === 'link') {\n setAutoSignIn(autoSignInWhenUserIsConfirmedWithLink(signInInput));\n return {\n isSignUpComplete: false,\n nextStep: {\n signUpStep: 'COMPLETE_AUTO_SIGN_IN',\n codeDeliveryDetails,\n },\n userId,\n };\n }\n // Confirmation Via Code Occurs In Same Context\n // AutoSignIn Next Step Will Be Returned From Confirm Sign Up\n handleCodeAutoSignIn(signInInput);\n }\n return {\n isSignUpComplete: false,\n nextStep: {\n signUpStep: 'CONFIRM_SIGN_UP',\n codeDeliveryDetails,\n },\n userId,\n };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getUserContextData } from '../utils/userContextData';\nimport { createResendConfirmationCodeClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\n/**\n * Resend the confirmation code while signing up\n *\n * @param input - The ResendSignUpCodeInput object\n * @returns ResendSignUpCodeOutput\n * @throws service: {@link ResendConfirmationException } - Cognito service errors thrown when resending the code.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown either username are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function resendSignUpCode(input) {\n const { username } = input;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignUpUsername);\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { userPoolClientId, userPoolId, userPoolEndpoint } = authConfig;\n const clientMetadata = input.options?.clientMetadata;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const resendConfirmationCode = createResendConfirmationCodeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { CodeDeliveryDetails } = await resendConfirmationCode({\n region: getRegionFromUserPoolId(authConfig.userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ResendSignUpCode),\n }, {\n Username: username,\n ClientMetadata: clientMetadata,\n ClientId: authConfig.userPoolClientId,\n UserContextData,\n });\n const { DeliveryMedium, AttributeName, Destination } = {\n ...CodeDeliveryDetails,\n };\n return {\n destination: Destination,\n deliveryMedium: DeliveryMedium,\n attributeName: AttributeName\n ? AttributeName\n : undefined,\n };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createResendConfirmationCodeClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('ResendConfirmationCode'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, HubInternal, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getUserContextData } from '../utils/userContextData';\nimport { createConfirmSignUpClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { autoSignInStore } from '../../../client/utils/store';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Confirms a new user account.\n *\n * @param input - The ConfirmSignUpInput object.\n * @returns ConfirmSignUpOutput\n * @throws -{@link ConfirmSignUpException }\n * Thrown due to an invalid confirmation code.\n * @throws -{@link AuthValidationErrorCode }\n * Thrown due to an empty confirmation code\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function confirmSignUp(input) {\n const { username, confirmationCode, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = authConfig;\n const clientMetadata = options?.clientMetadata;\n assertValidationError(!!username, AuthValidationErrorCode.EmptyConfirmSignUpUsername);\n assertValidationError(!!confirmationCode, AuthValidationErrorCode.EmptyConfirmSignUpCode);\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const confirmSignUpClient = createConfirmSignUpClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { Session: session } = await confirmSignUpClient({\n region: getRegionFromUserPoolId(authConfig.userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignUp),\n }, {\n Username: username,\n ConfirmationCode: confirmationCode,\n ClientMetadata: clientMetadata,\n ForceAliasCreation: options?.forceAliasCreation,\n ClientId: authConfig.userPoolClientId,\n UserContextData,\n });\n return new Promise((resolve, reject) => {\n try {\n const signUpOut = {\n isSignUpComplete: true,\n nextStep: {\n signUpStep: 'DONE',\n },\n };\n const autoSignInStoreState = autoSignInStore.getState();\n if (!autoSignInStoreState.active ||\n autoSignInStoreState.username !== username) {\n resolve(signUpOut);\n resetAutoSignIn();\n return;\n }\n autoSignInStore.dispatch({ type: 'SET_SESSION', value: session });\n const stopListener = HubInternal.listen('auth-internal', ({ payload }) => {\n switch (payload.event) {\n case 'autoSignIn':\n resolve({\n isSignUpComplete: true,\n nextStep: {\n signUpStep: 'COMPLETE_AUTO_SIGN_IN',\n },\n });\n stopListener();\n }\n });\n HubInternal.dispatch('auth-internal', {\n event: 'confirmSignUp',\n data: signUpOut,\n });\n }\n catch (error) {\n reject(error);\n }\n });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nexport const createConfirmSignUpClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('ConfirmSignUp'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","import React, { useState} from \"react\";\nimport { signUp, signIn, resendSignUpCode, confirmSignUp, fetchUserAttributes } from \"aws-amplify/auth\";\nimport { useNavigate } from \"react-router\";\nimport { FormText, FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { useFormFields } from \"../libs/hooksLib\";\nimport { onError } from \"../libs/errorLib\";\nimport \"./Signup.css\";\nimport { RequestType, apiRequest } from \"../libs/databaseAccess\";\n\nexport default function Signup() {\n const [fields, handleFieldChange] = useFormFields({\n club: \"None\", // Cannot retrieve club names until after an account is created\n userID: \"\",\n email: \"\",\n password: \"\",\n first: \"\",\n last: \"\",\n isInstructor: false,\n isTowPilot: false,\n isAdmin: false,\n confirmPassword: \"\",\n confirmationCode: \"\",\n });\n const navigate = useNavigate();\n const [newUser, setNewUser] = useState(true);\n const { userHasAuthenticated } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n\n function validateForm() {\n return (\n fields.email.length > 0 &&\n fields.first.length > 0 &&\n fields.last.length > 0 &&\n fields.password.length > 0 &&\n fields.password === fields.confirmPassword\n );\n }\n\n function validateConfirmationForm() {\n return fields.confirmationCode.length > 0;\n }\n\n function createBody(userInfo) {\n const body = {\n club: \"None\",\n userID: userInfo.sub,\n first: userInfo.given_name,\n last: userInfo.family_name,\n isInstructor: false,\n isTowPilot: false,\n isAdmin: false,\n }\n return body\n }\n\n function createPilot(userInfo) {\n const bodyContent = createBody(userInfo);\n return apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/pilot\", options: {\n \"body\": bodyContent\n }});\n }\n\n async function handleSubmit(event) {\n event.preventDefault();\n \n setIsLoading(true);\n \n try {\n await signUp({\n username: fields.email,\n password: fields.password,\n options:{\n userAttributes: {\n 'custom:club': fields.club,\n 'given_name': fields.first,\n 'family_name': fields.last,\n },\n },\n });\n setIsLoading(false);\n setNewUser(false);\n } catch (e) {\n if (e.name === 'UsernameExistsException'){\n await resendSignUpCode({username: fields.email});\n setNewUser(false);\n } else{\n onError(e);\n }\n setIsLoading(false);\n }\n }\n \n async function handleConfirmationSubmit(event) {\n event.preventDefault();\n \n setIsLoading(true);\n \n try {\n await confirmSignUp({username: fields.email, confirmationCode: fields.confirmationCode});\n await signIn({username: fields.email, password: fields.password});\n const userInfo = await fetchUserAttributes();\n fields.userID = userInfo.sub;\n await createPilot(userInfo);\n\n userHasAuthenticated(true);\n navigate(\"../\");\n } catch (e) {\n onError(e);\n setIsLoading(false);\n }\n }\n\n function renderConfirmationForm() {\n return (\n <form className=\"d-flex flex-column gap-3\" onSubmit={handleConfirmationSubmit}>\n <FormGroup controlId=\"confirmationCode\" size=\"lg\">\n <FormLabel>Confirmation Code</FormLabel>\n <FormControl\n autoFocus\n type=\"tel\"\n onChange={handleFieldChange}\n value={fields.confirmationCode}\n />\n <FormText>Please check your email for the code.</FormText>\n </FormGroup>\n <LoaderButton\n type=\"submit\"\n size=\"lg\"\n isLoading={isLoading}\n disabled={!validateConfirmationForm()}\n >\n Verify\n </LoaderButton>\n </form>\n );\n }\n\n function renderForm() {\n return (\n <>\n <h2 className = \"centerHeader mb-3\">Signup form</h2>\n <form className=\"d-flex flex-column gap-3\" onSubmit={handleSubmit}>\n <FormGroup controlId=\"email\" size=\"lg\">\n <FormLabel>Email - This will be your sign-in name</FormLabel>\n <FormControl\n autoFocus\n required\n type=\"email\"\n value={fields.email}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <FormGroup controlId=\"first\" size=\"lg\">\n <FormLabel>First Name</FormLabel>\n <FormControl\n required\n type=\"text\"\n placeholder=\"First name\"\n value={fields.first}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <FormGroup controlId=\"last\" size=\"lg\">\n <FormLabel>Last Name</FormLabel>\n <FormControl\n required\n type=\"text\"\n placeholder=\"Last name\"\n value={fields.last}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <FormGroup controlId=\"password\" size=\"lg\">\n <FormLabel>Password</FormLabel>\n <FormControl\n type=\"password\"\n value={fields.password}\n onChange={handleFieldChange}\n autoComplete=\"on\"\n />\n </FormGroup>\n <FormGroup controlId=\"confirmPassword\" size=\"lg\">\n <FormLabel>Confirm Password</FormLabel>\n <FormControl\n type=\"password\"\n onChange={handleFieldChange}\n value={fields.confirmPassword}\n autoComplete=\"on\"\n />\n </FormGroup>\n <LoaderButton\n type=\"submit\"\n size=\"lg\"\n isLoading={isLoading}\n disabled={!validateForm()}\n >\n Signup\n </LoaderButton>\n <p>You will receive an email shortly with a confirmation code</p>\n </form>\n </>\n );\n }\n\n return (\n <div className=\"Signup\">\n {newUser ? renderForm() : renderConfirmationForm()}\n\n </div>\n );\n}","import React from \"react\";\nimport \"./NotFound.css\";\n\nexport default function NotFound() {\n return (\n <div className=\"NotFound\">\n <h3>Sorry, page not found!</h3>\n </div>\n );\n}","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { FormGroup, FormControl } from \"react-bootstrap\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport { onError } from \"../libs/errorLib\";\nimport \"./NewPilot.css\";\nimport { RequestType, apiRequest } from \"../libs/databaseAccess\";\n\nexport default function NewPilot() {\n const navigate = useNavigate();\n const [first, setFirst] = useState(\"\");\n const [last, setLast] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n\n function validateForm() {\n return (first.length > 0 && last.length > 0);\n }\n\n async function handleSubmit(event) {\n event.preventDefault();\n \n setIsLoading(true);\n \n try {\n await createPilot({ first, last });\n navigate(\"../\");\n } catch (e) {\n onError(e);\n setIsLoading(false);\n }\n }\n \n function createPilot(first, last) {\n return apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/pilot\", options: {\n body: {first, last}\n }});\n }\n\n return (\n <div className=\"NewPilot\">\n <form onSubmit={handleSubmit}>\n <FormGroup controlId=\"first name\">\n <FormControl\n value={first}\n as=\"textarea\"\n onChange={e => setFirst(e.target.value)}\n />\n </FormGroup>\n <FormGroup controlId=\"last name\">\n <FormControl\n value={last}\n as=\"textarea\"\n onChange={e => setLast(e.target.value)}\n />\n </FormGroup>\n <LoaderButton\n type=\"submit\"\n size=\"lg\"\n variant=\"primary\"\n isLoading={isLoading}\n disabled={!validateForm()}\n >\n Create Pilot\n </LoaderButton>\n </form>\n </div>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ButtonGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n vertical = false,\n className,\n role = 'group',\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 ...rest\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n let baseClass = prefix;\n if (vertical) baseClass = `${prefix}-vertical`;\n return /*#__PURE__*/_jsx(Component, {\n ...rest,\n ref: ref,\n role: role,\n className: classNames(className, baseClass, size && `${prefix}-${size}`)\n });\n});\nButtonGroup.displayName = 'ButtonGroup';\nexport default ButtonGroup;","import * as React from 'react';\nexport class BsPrefixComponent extends React.Component {}\n\n// Need to use this instead of typeof Component to get proper type checking.\n\nexport function getOverlayDirection(placement, isRTL) {\n let bsDirection = placement;\n if (placement === 'left') {\n bsDirection = isRTL ? 'end' : 'start';\n } else if (placement === 'right') {\n bsDirection = isRTL ? 'start' : 'end';\n }\n return bsDirection;\n}","export default function getInitialPopperStyles(position = 'absolute') {\n return {\n position,\n top: '0',\n left: '0',\n opacity: '0',\n pointerEvents: 'none'\n };\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { getOverlayDirection } from './helpers';\nimport getInitialPopperStyles from './getInitialPopperStyles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Tooltip = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n placement = 'right',\n className,\n style,\n children,\n arrowProps,\n hasDoneInitialMeasure,\n popper,\n show,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'tooltip');\n const isRTL = useIsRTL();\n const [primaryPlacement] = (placement == null ? void 0 : placement.split('-')) || [];\n const bsDirection = getOverlayDirection(primaryPlacement, isRTL);\n let computedStyle = style;\n if (show && !hasDoneInitialMeasure) {\n computedStyle = {\n ...style,\n ...getInitialPopperStyles(popper == null ? void 0 : popper.strategy)\n };\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n style: computedStyle,\n role: \"tooltip\",\n \"x-placement\": primaryPlacement,\n className: classNames(className, bsPrefix, `bs-tooltip-${bsDirection}`),\n ...props,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"tooltip-arrow\",\n ...arrowProps\n }), /*#__PURE__*/_jsx(\"div\", {\n className: `${bsPrefix}-inner`,\n children: children\n })]\n });\n});\nTooltip.displayName = 'Tooltip';\nexport default Object.assign(Tooltip, {\n // Default tooltip offset.\n // https://github.com/twbs/bootstrap/blob/beca2a6c7f6bc88b6449339fc76edcda832c59e5/js/src/tooltip.js#L65\n TOOLTIP_OFFSET: [0, 6]\n});","\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'InputGroupContext';\nexport default context;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'span',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nInputGroupText.displayName = 'InputGroupText';\nexport default InputGroupText;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormCheckInput from './FormCheckInput';\nimport InputGroupContext from './InputGroupContext';\nimport InputGroupText from './InputGroupText';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupCheckbox = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"checkbox\",\n ...props\n })\n});\nconst InputGroupRadio = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"radio\",\n ...props\n })\n});\nconst InputGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n hasValidation,\n className,\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 ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n\n // Intentionally an empty object. Used in detecting if a dropdown\n // exists under an input group.\n const contextValue = useMemo(() => ({}), []);\n return /*#__PURE__*/_jsx(InputGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, hasValidation && 'has-validation')\n })\n });\n});\nInputGroup.displayName = 'InputGroup';\nexport default Object.assign(InputGroup, {\n Text: InputGroupText,\n Radio: InputGroupRadio,\n Checkbox: InputGroupCheckbox\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Button from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst noop = () => undefined;\nconst ToggleButton = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n name,\n className,\n checked,\n type,\n onChange,\n value,\n disabled,\n id,\n inputRef,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'btn-check');\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"input\", {\n className: bsPrefix,\n name: name,\n type: type,\n value: value,\n ref: inputRef,\n autoComplete: \"off\",\n checked: !!checked,\n disabled: !!disabled,\n onChange: onChange || noop,\n id: id\n }), /*#__PURE__*/_jsx(Button, {\n ...props,\n ref: ref,\n className: classNames(className, disabled && 'disabled'),\n type: undefined,\n role: undefined,\n as: \"label\",\n htmlFor: id\n })]\n });\n});\nToggleButton.displayName = 'ToggleButton';\nexport default ToggleButton;","import * as React from 'react';\nimport invariant from 'invariant';\nimport { useUncontrolled } from 'uncontrollable';\nimport chainFunction from './createChainedFunction';\nimport { map } from './ElementChildren';\nimport ButtonGroup from './ButtonGroup';\nimport ToggleButton from './ToggleButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ToggleButtonGroup = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n children,\n type = 'radio',\n name,\n value,\n onChange,\n vertical = false,\n ...controlledProps\n } = useUncontrolled(props, {\n value: 'onChange'\n });\n const getValues = () => value == null ? [] : [].concat(value);\n const handleToggle = (inputVal, event) => {\n if (!onChange) {\n return;\n }\n const values = getValues();\n const isActive = values.indexOf(inputVal) !== -1;\n if (type === 'radio') {\n if (!isActive) onChange(inputVal, event);\n return;\n }\n if (isActive) {\n onChange(values.filter(n => n !== inputVal), event);\n } else {\n onChange([...values, inputVal], event);\n }\n };\n !(type !== 'radio' || !!name) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A `name` is required to group the toggle buttons when the `type` ' + 'is set to \"radio\"') : invariant(false) : void 0;\n return /*#__PURE__*/_jsx(ButtonGroup, {\n ...controlledProps,\n ref: ref,\n vertical: vertical,\n children: map(children, child => {\n const values = getValues();\n const {\n value: childVal,\n onChange: childOnChange\n } = child.props;\n const handler = e => handleToggle(childVal, e);\n return /*#__PURE__*/React.cloneElement(child, {\n type,\n name: child.name || name,\n checked: values.indexOf(childVal) !== -1,\n onChange: chainFunction(childOnChange, handler)\n });\n })\n });\n});\nexport default Object.assign(ToggleButtonGroup, {\n Button: ToggleButton\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\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 ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","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\n/**\n * `useSafeState` takes the return value of a `useState` hook and wraps the\n * setter to prevent updates onces the component has unmounted. Can used\n * with `useMergeState` and `useStateAsync` as well\n *\n * @param state The return value of a useStateHook\n *\n * ```ts\n * const [show, setShow] = useSafeState(useState(true));\n * ```\n */\n\nfunction useSafeState(state) {\n const isMounted = useMounted();\n return [state[0], useCallback(nextState => {\n if (!isMounted()) return;\n return state[1](nextState);\n }, [isMounted, state[1]])];\n}\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","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}","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 getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import 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 getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import 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 } // $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, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","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 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 orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import 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(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\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;","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 } else {\n // When clicking on scrollbars within current target, click events are not triggered, so this ref\n // is never reset inside `handleMouseCapture`. This would cause a bug where it requires 2 clicks\n // to close the overlay.\n waitingForTrigger.current = false;\n }\n });\n const handleMouse = useEventCallback(e => {\n if (!preventMouseClickOutsideRef.current) {\n onClickOutside(e);\n }\n });\n useEffect(() => {\n var _ownerWindow$event, _ownerWindow$parent;\n if (disabled || ref == null) return undefined;\n const doc = ownerDocument(getRefTarget(ref));\n const ownerWindow = doc.defaultView || window;\n\n // Store the current event to avoid triggering handlers immediately\n // For things rendered in an iframe, the event might originate on the parent window\n // so we should fall back to that global event if the local one doesn't exist\n // https://github.com/facebook/react/issues/20074\n let currentEvent = (_ownerWindow$event = ownerWindow.event) != null ? _ownerWindow$event : (_ownerWindow$parent = ownerWindow.parent) == null ? void 0 : _ownerWindow$parent.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;","import listen from 'dom-helpers/listen';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport { useEffect } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useClickOutside, { getRefTarget } from './useClickOutside';\nimport { isEscKey } from './utils';\nconst noop = () => {};\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\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 useRootClose(ref, onRootClose, {\n disabled,\n clickTrigger\n} = {}) {\n const onClose = onRootClose || noop;\n useClickOutside(ref, onClose, {\n disabled,\n clickTrigger\n });\n const handleKeyUp = useEventCallback(e => {\n if (isEscKey(e)) {\n onClose(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 const removeKeyupListener = listen(doc, 'keyup', 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 handleKeyUp(e);\n });\n return () => {\n removeKeyupListener();\n };\n }, [ref, disabled, handleKeyUp]);\n}\nexport default useRootClose;","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}","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { useState } from 'react';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\nimport { renderTransition } from './ImperativeTransition';\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nconst Overlay = /*#__PURE__*/React.forwardRef((props, outerRef) => {\n const {\n flip,\n offset,\n placement,\n containerPadding,\n popperConfig = {},\n transition: Transition,\n runTransition\n } = props;\n const [rootElement, attachRef] = useCallbackRef();\n const [arrowElement, attachArrowRef] = useCallbackRef();\n const mergedRef = useMergedRefs(attachRef, outerRef);\n const container = useWaitForDOMRef(props.container);\n const target = useWaitForDOMRef(props.target);\n const [exited, setExited] = useState(!props.show);\n const popper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n placement,\n enableEvents: !!props.show,\n containerPadding: containerPadding || 5,\n flip,\n offset,\n arrowElement,\n popperConfig\n }));\n\n // TODO: I think this needs to be in an effect\n if (props.show && exited) {\n setExited(false);\n }\n const handleHidden = (...args) => {\n setExited(true);\n if (props.onExited) {\n props.onExited(...args);\n }\n };\n\n // Don't un-render the overlay while it's transitioning out.\n const mountOverlay = props.show || !exited;\n useRootClose(rootElement, props.onHide, {\n disabled: !props.rootClose || props.rootCloseDisabled,\n clickTrigger: props.rootCloseEvent\n });\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n const {\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onEntered\n } = props;\n let child = props.children(Object.assign({}, popper.attributes.popper, {\n style: popper.styles.popper,\n ref: mergedRef\n }), {\n popper,\n placement,\n show: !!props.show,\n arrowProps: Object.assign({}, popper.attributes.arrow, {\n style: popper.styles.arrow,\n ref: attachArrowRef\n })\n });\n child = renderTransition(Transition, runTransition, {\n in: !!props.show,\n appear: true,\n mountOnEnter: true,\n unmountOnExit: true,\n children: child,\n onExit,\n onExiting,\n onExited: handleHidden,\n onEnter,\n onEntering,\n onEntered\n });\n return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nexport default Overlay;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopoverHeader = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'popover-header');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nPopoverHeader.displayName = 'PopoverHeader';\nexport default PopoverHeader;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopoverBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'popover-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nPopoverBody.displayName = 'PopoverBody';\nexport default PopoverBody;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport PopoverHeader from './PopoverHeader';\nimport PopoverBody from './PopoverBody';\nimport { getOverlayDirection } from './helpers';\nimport getInitialPopperStyles from './getInitialPopperStyles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Popover = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n placement = 'right',\n className,\n style,\n children,\n body,\n arrowProps,\n hasDoneInitialMeasure,\n popper,\n show,\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'popover');\n const isRTL = useIsRTL();\n const [primaryPlacement] = (placement == null ? void 0 : placement.split('-')) || [];\n const bsDirection = getOverlayDirection(primaryPlacement, isRTL);\n let computedStyle = style;\n if (show && !hasDoneInitialMeasure) {\n computedStyle = {\n ...style,\n ...getInitialPopperStyles(popper == null ? void 0 : popper.strategy)\n };\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n role: \"tooltip\",\n style: computedStyle,\n \"x-placement\": primaryPlacement,\n className: classNames(className, decoratedBsPrefix, primaryPlacement && `bs-popover-${bsDirection}`),\n ...props,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"popover-arrow\",\n ...arrowProps\n }), body ? /*#__PURE__*/_jsx(PopoverBody, {\n children: children\n }) : children]\n });\n});\nexport default Object.assign(Popover, {\n Header: PopoverHeader,\n Body: PopoverBody,\n // Default popover offset.\n // https://github.com/twbs/bootstrap/blob/5c32767e0e0dbac2d934bcdee03719a65d3f1187/js/src/popover.js#L28\n POPPER_OFFSET: [0, 8]\n});","\"use client\";\n\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from '@restart/ui/Overlay';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useOverlayOffset from './useOverlayOffset';\nimport Fade from './Fade';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction wrapRefs(props, arrowProps) {\n const {\n ref\n } = props;\n const {\n ref: aRef\n } = arrowProps;\n props.ref = ref.__wrapped || (ref.__wrapped = r => ref(safeFindDOMNode(r)));\n arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = r => aRef(safeFindDOMNode(r)));\n}\nconst Overlay = /*#__PURE__*/React.forwardRef(({\n children: overlay,\n transition = Fade,\n popperConfig = {},\n rootClose = false,\n placement = 'top',\n show: outerShow = false,\n ...outerProps\n}, outerRef) => {\n const popperRef = useRef({});\n const [firstRenderedState, setFirstRenderedState] = useState(null);\n const [ref, modifiers] = useOverlayOffset(outerProps.offset);\n const mergedRef = useMergedRefs(outerRef, ref);\n const actualTransition = transition === true ? Fade : transition || undefined;\n const handleFirstUpdate = useEventCallback(state => {\n setFirstRenderedState(state);\n popperConfig == null || popperConfig.onFirstUpdate == null || popperConfig.onFirstUpdate(state);\n });\n useIsomorphicEffect(() => {\n if (firstRenderedState && outerProps.target) {\n // Must wait for target element to resolve before updating popper.\n popperRef.current.scheduleUpdate == null || popperRef.current.scheduleUpdate();\n }\n }, [firstRenderedState, outerProps.target]);\n useEffect(() => {\n if (!outerShow) {\n setFirstRenderedState(null);\n }\n }, [outerShow]);\n return /*#__PURE__*/_jsx(BaseOverlay, {\n ...outerProps,\n ref: mergedRef,\n popperConfig: {\n ...popperConfig,\n modifiers: modifiers.concat(popperConfig.modifiers || []),\n onFirstUpdate: handleFirstUpdate\n },\n transition: actualTransition,\n rootClose: rootClose,\n placement: placement,\n show: outerShow,\n children: (overlayProps, {\n arrowProps,\n popper: popperObj,\n show\n }) => {\n var _popperObj$state;\n wrapRefs(overlayProps, arrowProps);\n // Need to get placement from popper object, handling case when overlay is flipped using 'flip' prop\n const updatedPlacement = popperObj == null ? void 0 : popperObj.placement;\n const popper = Object.assign(popperRef.current, {\n state: popperObj == null ? void 0 : popperObj.state,\n scheduleUpdate: popperObj == null ? void 0 : popperObj.update,\n placement: updatedPlacement,\n outOfBoundaries: (popperObj == null || (_popperObj$state = popperObj.state) == null || (_popperObj$state = _popperObj$state.modifiersData.hide) == null ? void 0 : _popperObj$state.isReferenceHidden) || false,\n strategy: popperConfig.strategy\n });\n const hasDoneInitialMeasure = !!firstRenderedState;\n if (typeof overlay === 'function') return overlay({\n ...overlayProps,\n placement: updatedPlacement,\n show,\n ...(!transition && show && {\n className: 'show'\n }),\n popper,\n arrowProps,\n hasDoneInitialMeasure\n });\n return /*#__PURE__*/React.cloneElement(overlay, {\n ...overlayProps,\n placement: updatedPlacement,\n arrowProps,\n popper,\n hasDoneInitialMeasure,\n className: classNames(overlay.props.className, !transition && show && 'show'),\n style: {\n ...overlay.props.style,\n ...overlayProps.style\n }\n });\n }\n });\n});\nOverlay.displayName = 'Overlay';\nexport default Overlay;","\"use client\";\n\nimport { useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Popover from './Popover';\nimport Tooltip from './Tooltip';\n\n// This is meant for internal use.\n// This applies a custom offset to the overlay if it's a popover or tooltip.\nexport default function useOverlayOffset(customOffset) {\n const overlayRef = useRef(null);\n const popoverClass = useBootstrapPrefix(undefined, 'popover');\n const tooltipClass = useBootstrapPrefix(undefined, 'tooltip');\n const offset = useMemo(() => ({\n name: 'offset',\n options: {\n offset: () => {\n if (customOffset) {\n return customOffset;\n }\n if (overlayRef.current) {\n if (hasClass(overlayRef.current, popoverClass)) {\n return Popover.POPPER_OFFSET;\n }\n if (hasClass(overlayRef.current, tooltipClass)) {\n return Tooltip.TOOLTIP_OFFSET;\n }\n }\n return [0, 0];\n }\n }\n }), [customOffset, popoverClass, tooltipClass]);\n return [overlayRef, [offset]];\n}","\"use client\";\n\nimport contains from 'dom-helpers/contains';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { getChildRef } from '@restart/ui/utils';\nimport Overlay from './Overlay';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction normalizeDelay(delay) {\n return delay && typeof delay === 'object' ? delay : {\n show: delay,\n hide: delay\n };\n}\n\n// Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\nfunction handleMouseOverOut(\n// eslint-disable-next-line @typescript-eslint/no-shadow\nhandler, args, relatedNative) {\n const [e] = args;\n const target = e.currentTarget;\n const related = e.relatedTarget || e.nativeEvent[relatedNative];\n if ((!related || related !== target) && !contains(target, related)) {\n handler(...args);\n }\n}\nconst triggerType = PropTypes.oneOf(['click', 'hover', 'focus']);\nconst OverlayTrigger = ({\n trigger = ['hover', 'focus'],\n overlay,\n children,\n popperConfig = {},\n show: propsShow,\n defaultShow = false,\n onToggle,\n delay: propsDelay,\n placement,\n flip = placement && placement.indexOf('auto') !== -1,\n ...props\n}) => {\n const triggerNodeRef = useRef(null);\n const mergedRef = useMergedRefs(triggerNodeRef, getChildRef(children));\n const timeout = useTimeout();\n const hoverStateRef = useRef('');\n const [show, setShow] = useUncontrolledProp(propsShow, defaultShow, onToggle);\n const delay = normalizeDelay(propsDelay);\n const {\n onFocus,\n onBlur,\n onClick\n } = typeof children !== 'function' ? React.Children.only(children).props : {};\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n const handleShow = useCallback(() => {\n timeout.clear();\n hoverStateRef.current = 'show';\n if (!delay.show) {\n setShow(true);\n return;\n }\n timeout.set(() => {\n if (hoverStateRef.current === 'show') setShow(true);\n }, delay.show);\n }, [delay.show, setShow, timeout]);\n const handleHide = useCallback(() => {\n timeout.clear();\n hoverStateRef.current = 'hide';\n if (!delay.hide) {\n setShow(false);\n return;\n }\n timeout.set(() => {\n if (hoverStateRef.current === 'hide') setShow(false);\n }, delay.hide);\n }, [delay.hide, setShow, timeout]);\n const handleFocus = useCallback((...args) => {\n handleShow();\n onFocus == null || onFocus(...args);\n }, [handleShow, onFocus]);\n const handleBlur = useCallback((...args) => {\n handleHide();\n onBlur == null || onBlur(...args);\n }, [handleHide, onBlur]);\n const handleClick = useCallback((...args) => {\n setShow(!show);\n onClick == null || onClick(...args);\n }, [onClick, setShow, show]);\n const handleMouseOver = useCallback((...args) => {\n handleMouseOverOut(handleShow, args, 'fromElement');\n }, [handleShow]);\n const handleMouseOut = useCallback((...args) => {\n handleMouseOverOut(handleHide, args, 'toElement');\n }, [handleHide]);\n const triggers = trigger == null ? [] : [].concat(trigger);\n const triggerProps = {\n ref: attachRef\n };\n if (triggers.indexOf('click') !== -1) {\n triggerProps.onClick = handleClick;\n }\n if (triggers.indexOf('focus') !== -1) {\n triggerProps.onFocus = handleFocus;\n triggerProps.onBlur = handleBlur;\n }\n if (triggers.indexOf('hover') !== -1) {\n process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n triggerProps.onMouseOver = handleMouseOver;\n triggerProps.onMouseOut = handleMouseOut;\n }\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [typeof children === 'function' ? children(triggerProps) : /*#__PURE__*/cloneElement(children, triggerProps), /*#__PURE__*/_jsx(Overlay, {\n ...props,\n show: show,\n onHide: handleHide,\n flip: flip,\n placement: placement,\n popperConfig: popperConfig,\n target: triggerNodeRef.current,\n children: overlay\n })]\n });\n};\nexport default OverlayTrigger;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\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()).\nlet getRandomValues;\nconst 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.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\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}","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\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 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 return 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]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // 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 native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const 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 (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import React, {useState, useEffect, useMemo} from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { Spinner, Form, ToggleButtonGroup, ToggleButton, InputGroup, Button, Row, Col, Container, ButtonGroup, FloatingLabel, OverlayTrigger, Tooltip, Modal} from \"react-bootstrap\";\nimport { v4 as uuidv4 } from 'uuid';\nimport LoaderButton from \"../components/LoaderButton\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport { loadCrewPayload, returnLaunch, deleteFlight, getUserBalance, returnIntroLaunch, apiRequest, RequestType } from \"../libs/databaseAccess\";\nimport \"./Home.css\";\nimport ShortUniqueId from 'short-unique-id';\nimport { DateTime } from \"luxon\";\n\nconst unknownString = \"?\";\nconst unknownGlider = {SK: \"None\"}\n\nexport default function Crew() {\n const navigate = useNavigate();\n const {userID, club, isAuthenticated, clubTimeZone} = useAppContext();\n // Form variables\n const [weight, setWeight] = useState(0);\n const [passengerWeight, setPassengerWeight] = useState(0);\n const [gliderWeight, setGliderWeight] = useState(0);\n const [waterWeight, setWaterWeight] = useState(0);\n const [towSpeed, setTowSpeed] = useState(0);\n const [first, setFirst] = useState(\"\");\n const [last, setLast] = useState(\"\");\n const [flyWith, setFlyWith] = useState(\"Alone\");\n const [pilotInCharge, setPIC] = useState(true);\n const [passengerFirst, setPassengerFirst] = useState(\"\");\n const [passengerLast, setPassengerLast] = useState(\"\");\n const [glider, setGlider] = useState(unknownGlider);\n const [launchType, setLaunchType] = useState(unknownString);\n const [passengerID, setPassengerID] = useState(\"\");\n const [flightId, setFlightId] = useState(\"\");\n const [flightDateString, setFlightDateString] = useState(\"\");\n const [pilotID, setPilotID] = useState(\"\");\n const [groundOnly, setGroundOnly] = useState(false);\n const [shareCost, setShareCost] = useState(false);\n const [pilotBalance, setPilotBalance] = useState(0);\n const [clubWarnLevel, setWarnLevel] = useState(0);\n const [clubMinLevel, setMinLevel] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [isLoading, setIsLoading] = useState(true);\n const [isSubmitted, setIsSubmitted] = useState(false);\n const [pilots, setPilots] = useState([]);\n const [gliders, setGliders] = useState([]);\n const [multiSeatGliders, setMultiSeatGliders] = useState([]);\n const [flyingGliders, setFlyingGliders] = useState([]);\n const [launches, setLaunches] = useState([]);\n const [introSelected, setIntroSelected] = useState({});\n const [intros, setIntros] = useState([]);\n const [newMember, setNewMember] = useState(false);\n const [introType, setIntroType] = useState(\"\");\n const [newLaunches, setNewLaunches] = useState([])\n const [serialNum, setSerialNum] = useState(\"\")\n const [paymentMethods, setPaymentMethods] = useState([]);\n const [payment, setPayment] = useState(\"\");\n const [introLaunchPrice, setIntroLaunchPrice] = useState(0);\n const [paymentRef, setPaymentRef] = useState(\"\");\n const [recGlider, setRecGlider] = useState([]);\n const [recMultiGlider, setRecMultiGlider] = useState([]);\n const [readyGliders, setReadyGliders] = useState({})\n const [errorMessage, setErrorMessage] = useState(\"\");\n\n const [showIntroPassengetModal, setShowIntroPassengerModal] = useState(false)\n const [introPassengerFirst, setIntroPassengerFirst] = useState(\"\")\n const [introPassengerLast, setIntroPassengerLast] = useState(\"\")\n\n const flightTypes = {\n \"Alone\":\"Alone\", \n \"Instructor\":\"Instructor\",\n \"Member\":\"Member\",\n \"Intro\":\"Intro\",\n \"Friend\":\"Friend\",\n }\n\n const today = useMemo(() => {\n return DateTime.fromObject({}, {zone: clubTimeZone}).toISODate()\n }, [clubTimeZone])\n\n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n \n try {\n let crewPayloadResponse\n try{\n crewPayloadResponse = await loadCrewPayload(club, userID)\n } catch(e) {\n setErrorMessage(\"Could not load crew page (code: 600)\")\n setIsLoading(false);\n return\n }\n\n // Pull club specific info from DynamoDB\n if(crewPayloadResponse.statusCode !== 200) {\n setErrorMessage(`Could not load crew page (code: ${crewPayloadResponse.statusCode})`)\n setIsLoading(false);\n return\n }\n\n const crew = crewPayloadResponse.body\n\n setLaunches(crew.launches)\n setNewLaunches(crew.introLaunches)\n setWarnLevel(crew.clubInfo.warningLevel);\n setMinLevel(crew.clubInfo.minimumLevel);\n setIntros(crew.intros);\n setPilotID(crew.pilot.pilotID);\n setGroundOnly(crew.pilot.groundOnly || false);\n setPilotBalance(crew.pilot.balance);\n setWeight(crew.pilot.weight);\n setFirst(crew.pilot.first);\n setLast(crew.pilot.last);\n setPilots(crew.pilots)\n setReadyGliders(crew.readyGliders)\n setMultiSeatGliders(crew.unusedMultiSeatGliders.map((g) => crew.readyGliders[g]))\n setFlyingGliders(crew.flyingGliders)\n setRecGlider(crew.recentGliders.map((g) => crew.readyGliders[g]))\n setRecMultiGlider(crew.recentMultiSeatGliders.map((g) => crew.readyGliders[g]))\n setPaymentMethods(crew.clubInfo.paymentMethods);\n setWaterWeight(0);\n if(crew.clubInfo.paymentMethods?.length > 0) {\n setPayment(crew.clubInfo.paymentMethods[0])\n }\n \n let defaultGlider = undefined;\n if((typeof crew.recentGliders !== 'undefined') && (crew.recentGliders.length !== 0)){\n setGliders(crew.unusedGliders.map((g) => crew.readyGliders[g]));\n if (crew.recentGliders.length > 0) {\n defaultGlider = crew.readyGliders[crew.recentGliders[0]];\n } else if (crew.unusedGliders.length > 0) {\n defaultGlider = crew.readyGliders[crew.unusedGliders[0]];\n }\n } else {\n setGliders(Object.values(crew.readyGliders));\n defaultGlider = Object.values(crew.readyGliders)[0];\n }\n\n if (defaultGlider !== undefined) {\n setGlider(defaultGlider);\n if (\"weight\" in defaultGlider) { \n setGliderWeight(defaultGlider.weight);\n }\n if (\"launchSpeed\" in defaultGlider) {\n setTowSpeed(defaultGlider.launchSpeed);\n }\n }\n\n if (crew.recentGliders.length !== 0){\n setGlider(crew.readyGliders[crew.recentGliders[0]]);\n }\n\n //randomly generate serial number\n const uid = new ShortUniqueId();\n var defaultSerial = uid();\n setSerialNum(defaultSerial);\n \n } catch (e) {\n onError(e);\n }\n\n setIsLoading(false);\n }\n\n onLoad();\n }, [isAuthenticated, club, userID]);\n\n function createBody() {\n // Build local date string\n const date = DateTime.fromObject({}, {zone: clubTimeZone})\n const localDateString = date.toISODate();\n const flightUuid = uuidv4();\n setFlightDateString(localDateString);\n setFlightId(flightUuid);\n\n // Build up body for API Call\n let data = {\n weight: !isNaN(parseFloat(weight)) ? parseFloat(weight) : 0,\n pilotInCharge: pilotInCharge,\n gliderWeight: !isNaN(parseFloat(gliderWeight)) ? parseFloat(gliderWeight) : 0,\n waterWeight: !isNaN(parseFloat(waterWeight)) ? parseFloat(waterWeight) : 0,\n first: first,\n last: last,\n flyWith: flyWith,\n towSpeed: !isNaN(parseFloat(towSpeed)) ? parseFloat(towSpeed) : 0,\n glider: glider.SK,\n launchType: launchType,\n user: pilotID, // Usually the user, but option to enter a flight for someone else\n shareCost: false,\n submittedBy: userID,\n submittedAt: Date.now(),\n action: \"Create\",\n };\n\n if (flyWith !== flightTypes.Alone){\n data[\"passengerWeight\"] = !isNaN(parseFloat(passengerWeight)) ? parseFloat(passengerWeight) : 0;\n data[\"passengerID\"] = passengerID;\n data[\"passengerFirst\"] = passengerFirst;\n data[\"passengerLast\"] = passengerLast;\n if ((flyWith === flightTypes.Member) && (shareCost)) {\n data[\"shareCost\"] = true;\n }\n if (flyWith === flightTypes.Intro){\n data[\"introRef\"]= introSelected.SK;\n }\n } else {\n data.passengerWeight = 0;\n data.passengerID = \"\";\n data.passengerFirst = \"\";\n data.passengerLast = \"\";\n setPassengerID(\"\");\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n setPassengerWeight(0);\n };\n\n const body = {\n date: localDateString,\n club: club,\n type: \"FLIGHT\",\n id: flightUuid,\n data: data,\n };\n\n return body\n }\n\n function createPilotBody(id, weight) {\n // Build up body for API Call\n const data = {\n weight: weight,\n };\n const body = {\n club: club,\n type: \"PILOT\",\n id,\n data: data,\n };\n return body\n }\n\n async function createFlight() {\n const bodyContent = createBody();\n if (flyWith === 'Intro') {\n if (newMember) {\n const date = DateTime.fromObject({}, {zone: clubTimeZone});\n const newIntro = {\n \"time\": date.toMillis(),\n \"date\": date.toISODate(),\n \"launchType\": launchType,\n \"introType\": introType,\n \"price\": introLaunchPrice,\n \"SN\": serialNum,\n \"recipientFirst\": passengerFirst,\n \"recipientLast\": passengerLast,\n \"payment\": payment,\n \"paymentRef\": paymentRef\n }\n bodyContent.data.newIntro = newIntro;\n } else {\n const updateIntro = {\n id: introSelected.SK,\n }\n\n if(introSelected.recipientFirst !== passengerFirst) {\n updateIntro.recipientFirst = passengerFirst\n }\n if(introSelected.recipientLast !== passengerLast) {\n updateIntro.recipientLast = passengerLast\n }\n bodyContent.data.updateIntro = updateIntro;\n }\n }\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": bodyContent}}\n )\n if(result.statusCode !== 200) {\n onError(\"Could not create flight\")\n return false\n }\n return true\n }\n\n async function updatePilotWeight(id, weight) {\n const bodyContent = createPilotBody(id, weight);\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": bodyContent}}\n )\n if(result.statusCode !== 200) {\n onError(\"Could not update pilot weight\")\n }\n }\n\n async function updateGlider(status) {\n const data = {\n status: status,\n };\n const body = {\n club: club,\n type: \"GLIDER\",\n id: glider.SK,\n data: data,\n };\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {body}}\n )\n if(result.statusCode !== 200) {\n onError(\"Could not create flight\")\n }\n }\n\n async function handleSubmit(event) {\n event.preventDefault();\n if (window.confirm(`Confirm ${first} ${last} in ${glider.SK} requesting ${launchType} launch.`)) {\n setIsLoading(true);\n try {\n await createFlight();\n const pilot = pilots.find((p) => p.pilotID === pilotID);\n let parsedWeight = !isNaN(parseFloat(weight)) ? parseFloat(weight) : 0 ;\n if (pilot.weight !== parsedWeight) {\n await updatePilotWeight(pilot.pilotID, parsedWeight);\n }\n if ([flightTypes.Instructor, flightTypes.Member].includes(flyWith)) {\n const passenger = pilots.find((p) => p.pilotID === passengerID);\n parsedWeight = !isNaN(parseFloat(passengerWeight)) ? parseFloat(passengerWeight) : 0;\n if (passenger.weight !== parsedWeight) {\n await updatePilotWeight(passenger.pilotID, parsedWeight);\n }\n }\n await updateGlider(\"Flying\");\n setShareCost(false); // Reset cost sharing off as the default\n setIsLoading(false);\n navigate(\"../\");\n } catch (e) {\n onError(e);\n setIsLoading(false);\n }\n } \n }\n\n function setValues(eventKey){\n const id = eventKey;\n const pilot = pilots.find((p) => p.pilotID === id)\n if (typeof pilot === 'undefined'){\n return\n }\n setPassengerID(id);\n if (\"first\" in pilot) { \n setPassengerFirst(pilot.first);\n }\n if (\"last\" in pilot) { \n setPassengerLast(pilot.last);\n }\n if (\"weight\" in pilot) { \n setPassengerWeight(pilot.weight);\n } \n }\n\n function setPayingPilot(eventKey){\n const id = eventKey;\n const pilot = pilots.find((p) => p.pilotID === id)\n if (typeof pilot === 'undefined'){\n return\n }\n setPilotID(id);\n if (\"first\" in pilot) { \n setFirst(pilot.first);\n }\n if (\"last\" in pilot) { \n setLast(pilot.last);\n }\n if (\"weight\" in pilot) { \n setWeight(pilot.weight);\n } \n setGroundOnly(pilot.groundOnly || false); \n }\n \n function setGliderValues(gliderSK){\n const glider = readyGliders[gliderSK]\n setGlider(glider);\n if (\"weight\" in glider) { \n setGliderWeight(glider.weight);\n }\n if (\"launchSpeed\" in glider) {\n setTowSpeed(glider.launchSpeed);\n }\n }\n\n function setFlightType(event){\n if (event !== flightTypes.Alone) {\n if (glider.places <= 1){\n if(recMultiGlider.length > 0) {\n setGlider(recMultiGlider[0]);\n } else if(multiSeatGliders.length > 0){\n setGlider(multiSeatGliders[0])\n } else {\n setGlider(unknownGlider);\n }\n }\n }\n if (event === flightTypes.Instructor) {\n setPIC(false);\n if(passengerID !== \"\") {\n const pilot = pilots.find((p) => p.pilotID === passengerID)\n if (!pilot.isInstructor) {\n setPassengerID(\"\");\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n }\n }\n else{\n setPassengerID(\"\");\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n }\n }\n else {\n if(event !== flightTypes.Intro && flyWith === 'Intro'){\n setIntroSelected({});\n setPassengerID(\"\");\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n setIntroPassengerFirst(\"\");\n setIntroPassengerLast(\"\");\n }\n else if(event === flightTypes.Alone || event === flightTypes.Intro){\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n setPassengerID(\"\");\n }\n else if(event === flightTypes.Member){\n if(!passengerID) {\n setPassengerID(\"\");\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n }\n }\n else if(event === flightTypes.Friend){\n setPassengerID(\"\");\n }\n setPIC(true);\n }\n if (event !== flightTypes.Intro) {\n setNewMember(false);\n }\n setFlyWith(event);\n }\n\n function setLaunchValues(event){\n const id = event.target.value;\n const launch = returnLaunch(club, id, launches);\n setLaunchType(launch.SK);\n }\n\n function renderLaunches(launches) {\n return (\n <>\n <div className=\"launches\">\n <ButtonGroup className=\"flex-wrap\">\n { launches.map((launch) =>\n <Button variant=\"outline-secondary\" key={launch.SK} value={launch.SK} onClick = {(e) => setLaunchValues(e)} active={launch.SK === launchType} disabled = {flyWith === flightTypes.Intro}>\n {launch.SK}\n </Button>)\n }\n </ButtonGroup>\n </div>\n </>\n );\n }\n\n function setIntroLaunchValues(event){\n if(event.target.value === unknownString) return;\n const id = event.target.value;\n const introLaunch = returnIntroLaunch(club, id, newLaunches);\n setLaunchType(introLaunch.launch);\n setIntroType(introLaunch.SK);\n setIntroLaunchPrice(introLaunch.price);\n }\n\n function renderPilots(pilots) {\n let newList = [];\n const userpilot = pilots.filter(a => (a.pilotID === userID));\n const othermembers = pilots.filter(a => (a.pilotID !== userID)).sort((a, b) => (a.first+a.last).localeCompare(b.first+b.last));\n newList = userpilot.concat(othermembers);\n return (\n <FloatingLabel controlId=\"floatingSelect\" label=\"Select Pilot\">\n <Form.Control title={first !== \"\" ? first+\" \"+last : \"Pilots\"} as=\"select\" onChange = {(e) => setPilot(e.target.value)}>\n {newList.map((item) =>\n <option key={item.pilotID} value={item.pilotID}> {item.first} {item.last} </option>\n )}\n </Form.Control>\n </FloatingLabel>\n );\n }\n\n async function setPilot(event){\n setPayingPilot(event);\n const balance = await getUserBalance(club, event);\n setPilotBalance(balance);\n }\n\n function renderPassenger(pilots) {\n return (\n <Form.Control as=\"select\" onChange = {(e) => setValues(e.target.value)} value = {passengerID} title={passengerFirst !== \"\" ? passengerFirst+\" \"+passengerLast : \"Pilots\"}>\n {(passengerFirst === \"\") && <option key=\"none\" value=\"none\">None</option>}\n { pilots.map((item) =>\n <option key={item.pilotID} value={item.pilotID}> {item.first} {item.last} </option>\n )}\n </Form.Control>\n );\n }\n\n function renderGliders() {\n let recentGliders = recGlider.map(g => g.SK);\n let otherGliders = gliders.map(g => g.SK);\n\n if(flyWith !== flightTypes.Alone) {\n recentGliders = recMultiGlider.map(g => g.SK)\n otherGliders = multiSeatGliders.map(g => g.SK)\n }\n\n const gliderSelect = glider.SK\n\n return(\n <>\n <FloatingLabel controlId=\"floatingSelect\" label=\"Glider\">\n <Form.Control as=\"select\" value={gliderSelect} onChange = {(e) => setGliderValues(e.target.value)}>\n <option key=\"none\" value={unknownGlider}> None </option>\n {recentGliders.length > 0 && \n <optgroup label=\"Recently used\">\n {recentGliders.map((item,i) =>\n <option key={i} value={item}> {item}</option>\n )}\n </optgroup>\n }\n <optgroup label=\"Gliders\">\n { otherGliders.map((item, i) => \n <option key={i} value={item}> {item} </option>\n )}\n </optgroup>\n {flyingGliders.length > 0 && \n <optgroup label=\"Already Flying\">\n {flyingGliders.map((item,i) =>\n <option key={i} disabled> {item}</option>\n )}\n </optgroup>\n }\n </Form.Control>\n </FloatingLabel> \n </>\n );\n }\n\n function filterIntro(filterText, intro) {\n const lowerFilter = filterText.toLowerCase();\n if(filterText === \"\") {\n return true\n }\n\n if(intro.SN.toLowerCase().includes(lowerFilter)) {\n return true\n }\n\n const fullName = `${intro.recipientFirst} ${intro.recipientLast}`.toLowerCase();\n if(fullName.includes(lowerFilter)) {\n return true\n }\n\n if(intro.buyerEmail.toLowerCase().includes(lowerFilter)) {\n return true\n }\n return false\n }\n\n function selectIntro(intro){\n setIntroSelected(intro);\n setLaunchType(intro.launchType);\n setPassengerFirst(intro.recipientFirst);\n setPassengerLast(intro.recipientLast);\n setIntroPassengerFirst(intro.recipientFirst);\n setIntroPassengerLast(intro.recipientLast);\n }\n\n function renderLander() {\n return (\n <div className=\"lander\">\n <h1>Take Up Slack</h1>\n <p>Your Gliding Flight Line Management Tool</p>\n {/* {(club !== \"\") ? <h2>Welcome to {clubName}!</h2> : <h2>Please sign in </h2>} */}\n </div>\n );\n }\n\n function renderPages() {\n return (<>{\n !isSubmitted ? renderActivities() : renderConfirm()\n }</>)\n // return (renderActivities())\n }\n\n function renderActivities() {\n if(isLoading) {\n return renderLoading()\n } else if(errorMessage) {\n return renderError()\n } else {\n return renderForm()\n }\n }\n\n function renderLoading() {\n return (\n <Spinner className=\"mt-4\" animation=\"border\" role=\"status\">\n <span className=\"visually-hidden\">Loading...</span>\n </Spinner>\n )\n }\n\n function renderError() {\n return (\n <p className=\"mt-4\">Error: { errorMessage }</p>\n )\n }\n\n async function cancelFlight() {\n await deleteFlight(club, flightId, flightDateString);\n await updateGlider(\"Ready\");\n setIsSubmitted(false);\n }\n\n function renderConfirm() {\n if (window.confirm(`Confirm ${first} ${last} in ${glider.SK} requesting ${launchType} launch.`)) {\n setIsSubmitted(true);\n navigate(\"../\");\n } else {\n cancelFlight();\n }\n }\n\n function newIntro(newIntroFlag) {\n setNewMember(newIntroFlag);\n if ((newIntroFlag) && (newLaunches.length > 0)) {\n const defaultIntroLaunch = newLaunches[0];\n setLaunchType(defaultIntroLaunch.launch);\n setIntroType(defaultIntroLaunch.SK);\n setIntroLaunchPrice(defaultIntroLaunch.price);\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n } else {\n setIntroSelected({});\n setLaunchType(\"\");\n setIntroType(\"\");\n setIntroLaunchPrice(0);\n setPassengerFirst(\"\");\n setPassengerLast(\"\");\n }\n }\n\n function renderStaleTooltip(props, isStale, staleDate) {\n if(!isStale) return(<></>)\n return (\n <Tooltip id=\"intro-tooltip\" {...props}>This intro expired on {staleDate}</Tooltip>\n )\n }\n\n function disableReasonString() {\n /* (glider.SK === unknownGlider.SK) || (launchType === unknownString) || (groundOnly) ||\n ((flyWith !== \"Alone\") && (passengerFirst === \"\")) || (flyWith !== \"Intro\" && pilotBalance<clubMinLevel) ||\n ((flyWith === \"Intro\") && (newMember === true) && (introType === \"\"))\n */\n let reason = \"\";\n if (glider.SK === unknownGlider.SK) {\n reason = \"No glider selected\";\n }\n if (launchType === unknownString) {\n reason = \"No launch type selected\";\n }\n if ((flyWith !== \"Alone\") && (passengerFirst === \"\")) {\n reason = \"Second person not identified\";\n } \n if ((flyWith === \"Intro\") && (newMember === true) && (introType === \"\")) {\n reason = \"Intro not fully defined\";\n } \n if (pilotBalance < clubMinLevel && flyWith !== \"Intro\") {\n reason = \"Insufficient funds\";\n }\n if (groundOnly) {\n reason = \"Selected pilot is non flying\";\n }\n return (reason);\n }\n\n\n function updateIntroPassenger(e) {\n e.preventDefault()\n e.stopPropagation() // Don't trigger the main form\n setPassengerFirst(introPassengerFirst)\n setPassengerLast(introPassengerLast)\n setShowIntroPassengerModal(false)\n }\n\n function cancelUpdateIntroPassenger() {\n setShowIntroPassengerModal(false)\n setIntroPassengerFirst(passengerFirst)\n setIntroPassengerLast(passengerLast)\n }\n\n function launchButtonMessage() {\n if (groundOnly) {\n return (<>Selected pilot is non flying</>);\n }\n\n let message = disableReasonString();\n if (disableReasonString() === \"\") {\n return (<>Place on flight line</>);\n }\n\n if (pilotBalance < clubWarnLevel) {\n if (message !== \"\") {\n return (<><strong>Warning:</strong> Low funds<br /> {message}</>);\n } else {\n return (<><strong>Warning:</strong> Low funds<br /> Place on flight line</>);\n }\n } \n\n return (<>{message}</>);\n }\n\n function renderIntroPassengerModal() {\n return (\n <Modal show={showIntroPassengetModal} onHide={() => setShowIntroPassengerModal(false)} centered>\n <Modal.Header closeButton>\n <Modal.Title>Edit Passenger for Intro: {introSelected.SN}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Form id=\"intro-passenger-form\" onSubmit={updateIntroPassenger}>\n <Form.Group className=\"d-flex flex-column gap-3\" controlId=\"tugInfo\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>First Name: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n value={introPassengerFirst}\n onChange={e => setIntroPassengerFirst(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Last Name: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n value={introPassengerLast}\n onChange={e => setIntroPassengerLast(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n </Form>\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={cancelUpdateIntroPassenger}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"primary\" form=\"intro-passenger-form\">\n Save\n </Button>\n </div>\n </Modal.Footer>\n </Modal>\n )\n }\n\n function renderForm() {\n return (\n <Form id=\"crew-request-form\" className=\"mt-4\" onSubmit={handleSubmit}> \n <Form.Group className=\"mb-2\" controlId=\"pilotSelect\" size=\"lg\"> \n {renderPilots(pilots)}\n </Form.Group>\n <Form.Group className=\"mb-4\" controlId=\"weightForm\" size=\"lg\">\n {/*<InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Pilot Weight: </InputGroup.Text>\n <Form.Control\n type=\"number\"\n hint = \"Your weight\"\n value={weight}\n onChange={e => setWeight(e.target.value)}\n />\n <InputGroup.Text id=\"basic-addon1\">kg</InputGroup.Text>\n </InputGroup>*/}\n </Form.Group>\n <Form.Group controlId=\"flightType\"><h4 style={{display: \"inline\"}}>Flight Type: </h4>\n <ToggleButtonGroup className=\"flex-wrap\" name=\"flyRadio\" type=\"radio\" value={flyWith} onChange={e => setFlightType(e)}>\n <ToggleButton variant=\"outline-secondary\" id=\"radio-1\" name=\"flyRadio\" value={flightTypes.Alone}>Alone</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"radio-2\" name=\"flyRadio\" value={flightTypes.Instructor}>Instructor</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"radio-3\" name=\"flyRadio\" value={flightTypes.Member}>Member</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"radio-4\" name=\"flyRadio\" value={flightTypes.Intro}>Intro</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"radio-5\" name=\"flyRadio\" value={flightTypes.Friend}>Friend</ToggleButton>\n </ToggleButtonGroup>\n </Form.Group>\n { (flyWith !== flightTypes.Alone) && \n <hr className=\"my-4\" />\n } \n <Form.Group className=\"mb-2\" size=\"lg\">\n {(flyWith === \"Instructor\") && <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Instructor: </InputGroup.Text>\n {renderPassenger((pilots.filter(pilot => pilot.isInstructor).filter(pilot => pilot.pilotID !== pilotID)))}\n </InputGroup> }\n </Form.Group>\n \n <Form.Group className=\"mb-2\" size=\"lg\">\n {(flyWith === \"Member\") && <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Member: </InputGroup.Text>\n {renderPassenger((pilots).filter(pilot => pilot.pilotID !== pilotID))}\n </InputGroup>}\n </Form.Group>\n\n { (flyWith === flightTypes.Friend) && \n <>\n <Form.Group className=\"mb-2\" controlId=\"passengerFirst\" size=\"lg\">Second Person\n <InputGroup>\n {<InputGroup.Text id=\"basic-addon1\">First name: </InputGroup.Text>}\n <Form.Control\n type=\"text\"\n value={passengerFirst}\n onChange={e => setPassengerFirst(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n <Form.Group className=\"mb-2\" controlId=\"passengerLast\" size=\"lg\">\n <InputGroup>\n {<InputGroup.Text id=\"basic-addon1\">Last name: </InputGroup.Text>}\n <Form.Control\n type=\"text\"\n value={passengerLast}\n onChange={e => setPassengerLast(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n </>\n }\n {/* (flyWith !== flightTypes.Alone && flyWith !== flightTypes.Intro) &&\n <> \n <Form.Group className=\"mb-2\" controlId=\"passengerWeight\" size=\"lg\">\n <InputGroup>\n {<InputGroup.Text id=\"basic-addon1\">Weight: </InputGroup.Text>}\n <Form.Control\n type=\"number\"\n value={passengerWeight}\n onChange={e => setPassengerWeight(e.target.value)}\n />\n <InputGroup.Text id=\"basic-addon1\">kg</InputGroup.Text>\n </InputGroup>\n </Form.Group>\n </>\n */}\n { ((flyWith === \"Instructor\") || (flyWith === \"Member\") || (flyWith === \"Friend\")) &&\n <>\n <hr className=\"my-4\" />\n <Form.Group className=\"mb-2\" controlId=\"pilotInCharge\" size=\"lg\"><h4 style={{display: \"inline\"}}>Pilot in Command: </h4>\n <ToggleButtonGroup name=\"pilotFormCheck\" type=\"radio\" value={pilotInCharge} onChange={setPIC}>\n <ToggleButton variant=\"outline-secondary\" id=\"pilot-1\" name=\"pilotFormCheck\" value={true} disabled={flyWith === \"Instructor\"}>\n {(userID === pilotID) ? \"Me\" : first+\" \"+last}\n </ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"pilot-2\" name=\"pilotFormCheck\" value={false} disabled={flyWith === \"Instructor\"}>\n {(passengerID === \"\") ? flyWith : passengerFirst+\" \"+passengerLast}\n </ToggleButton>\n </ToggleButtonGroup>\n </Form.Group>\n </>\n }\n { (flyWith === \"Member\") &&\n <>\n <Form.Group controlId=\"splitCost\" size=\"lg\"><h4 style={{display: \"inline\"}}>Share Flight Cost? </h4>\n <ToggleButtonGroup name=\"splitFormCheck\" type=\"radio\" value={shareCost} onChange={setShareCost}>\n <ToggleButton variant=\"outline-secondary\" id=\"split-1\" name=\"splitFormCheck\" value={false}>No</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"split-2\" name=\"splitFormCheck\" value={true}>Yes</ToggleButton>\n </ToggleButtonGroup>\n </Form.Group>\n </>\n }\n { (flyWith === flightTypes.Intro) && \n <>\n <Form.Group className=\"mb-2\">\n <Container>\n <Row>\n <Col>\n <ToggleButtonGroup name=\"splitFormCheck\" type=\"radio\" value={newMember} onChange={newIntro}>\n <ToggleButton variant=\"outline-secondary\" id=\"intro-1\" name=\"addNewMember\" value = {false}>\n Pre-purchased\n </ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"intro-2\" name=\"addNewMember\" value = {true}>\n New Intro\n </ToggleButton>\n </ToggleButtonGroup>\n </Col>\n </Row>\n </Container>\n </Form.Group>\n {(newMember === false) &&\n <>\n <Form.Group className=\"mb-2\" controlId=\"introSearch\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Search for intro: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n placeholder=\"Start typing serial number, name, or email\"\n value = {searchText}\n onChange={e => setSearchText(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n <div className=\"mb-2 d-flex flex-row flex-wrap gap-2 justify-content-center\">\n {intros.filter((a) => (filterIntro(searchText, a))).slice(0,5).map((item) =>\n <OverlayTrigger\n placement=\"top\"\n delay={{ show: 250, hide: 400 }}\n key={item.SK}\n overlay={(props) => renderStaleTooltip(props, item.staleDate <= today, item.staleDate)}\n >\n <Button variant={`${item.staleDate <= today ? \"warning\" : \"outline-secondary\"}`} key={item.SK} onClick = {() => selectIntro(item)}>\n {`${item.SN}, ${item.recipientFirst} ${item.recipientLast}${item.buyerEmail ? ', ' + item.buyerEmail : ''}`}\n </Button>\n </OverlayTrigger>\n )}\n </div>\n\n </>\n }\n </>\n }\n\n { ((newMember === false) && (flyWith === flightTypes.Intro)) && Object.keys(introSelected).length > 0 &&\n <Container className=\"fs-4\">\n {renderIntroPassengerModal()}\n <Row className=\"show-Container mb-2\">\n <Col xs={6} className=\"text-right\">\n Passenger: \n </Col>\n <Col xs={5} className=\"text-left\">\n <span>\n {`${passengerFirst} ${passengerLast}`} \n </span>\n </Col>\n <Col xs={1}>\n <Button variant=\"outline-primary\" onClick={() => setShowIntroPassengerModal(true)}>\n <img style={{height: \"0.9rem\", width: \"1rem\", fill: \"blue\"}} src=\"/edit-pen-icon.svg\" alt=\"Edit passenger\" />\n </Button>\n </Col>\n </Row>\n <Row className=\"show-Container mb-2\">\n <Col xs={6} className=\"text-right\">\n Launch Type: \n </Col>\n <Col xs={5} className=\"text-left\">\n {introSelected.launchType} \n </Col>\n </Row>\n <Row className=\"show-Container mb-2\">\n <Col xs={6} className=\"text-right\">\n Purchase Date: \n </Col>\n <Col xs={5} className=\"text-left\">\n {introSelected.date !== '' ? introSelected.date : 'Unknown'} \n </Col>\n </Row>\n <Row className=\"show-Container mb-2\">\n <Col xs={6} className=\"text-right\">\n Purchase Note: \n </Col>\n <Col xs={5} className=\"text-left\">\n {introSelected.note !== '' ? introSelected.note : 'None'}\n </Col>\n </Row>\n <Row className=\"show-Container mb-2\">\n <Col xs={6} className=\"text-right\">\n Serial Number: \n </Col>\n <Col xs={5} className=\"text-left\">\n {introSelected.SN ? introSelected.SN : 'Unknown'} \n </Col>\n </Row>\n </Container>\n }\n {(flyWith===flightTypes.Intro && newMember === true) &&\n <>\n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Launch Method:</InputGroup.Text>\n <Form.Control as=\"select\" onChange = {e => setIntroLaunchValues(e)}>\n {newLaunches.map((item)=>\n <option key={item.SK} value={item.SK}>{item.SK}</option>\n )}\n {newLaunches.length < 1 && <option key={\"None\"} value={unknownString}>None</option>}\n </Form.Control>\n </InputGroup>\n </Form.Group>\n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">First Name: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n value={passengerFirst}\n onChange={e => setPassengerFirst(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n \n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Last Name: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n value={passengerLast}\n onChange={e => setPassengerLast(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n\n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Price: </InputGroup.Text>\n <Form.Control\n type=\"number\"\n value = {introLaunchPrice}\n disabled\n />\n </InputGroup>\n </Form.Group>\n \n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Payment Method:</InputGroup.Text>\n <Form.Control as = \"select\" value = {payment} onChange = {(e)=>{setPayment(e.target.value)}}>\n {paymentMethods.map((item)=>\n <option key={item} value={item}>{item}</option>\n )}\n </Form.Control>\n </InputGroup>\n </Form.Group>\n\n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Payment Reference:</InputGroup.Text>\n <Form.Control as = \"input\" \n type = \"text\"\n value = {paymentRef}\n onChange = {(e)=>{setPaymentRef(e.target.value)}}\n />\n </InputGroup>\n </Form.Group>\n\n <Form.Group className=\"mb-2\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Serial Number: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n value={serialNum}\n onChange={e => setSerialNum(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n </> \n }\n {/* (flyWith === flightTypes.Intro) &&\n <Form.Group className=\"mb-2\" controlId=\"introWeight\" size=\"lg\">\n <InputGroup>\n {<InputGroup.Text id=\"basic-addon1\">Passenger Weight: </InputGroup.Text>}\n <Form.Control\n type=\"number\"\n value={passengerWeight}\n onChange={e => setPassengerWeight(e.target.value)}\n />\n <InputGroup.Text id=\"basic-addon1\">kg</InputGroup.Text>\n </InputGroup>\n </Form.Group>\n */}\n\n <hr className=\"my-4\" />\n {\n <Form.Group className=\"mb-2\" controlId=\"gliderList\" size=\"lg\">\n {renderGliders()} \n </Form.Group>\n }\n {/*\n <Form.Group className=\"mb-2\" controlId=\"waterWeight\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Water Loading: </InputGroup.Text>\n <Form.Control\n type=\"number\"\n hint = \"Weight of added water\"\n value={waterWeight}\n onChange={e => setWaterWeight(e.target.value)}\n />\n <InputGroup.Text id=\"basic-addon1\">L</InputGroup.Text>\n </InputGroup>\n </Form.Group>\n */}\n {\n <Form.Group className=\"mb-2\" controlId=\"towSpeed\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Tow Speed: </InputGroup.Text>\n <Form.Control\n type=\"number\"\n hint = \"Tow Speed\"\n value={towSpeed}\n onChange={e => setTowSpeed(e.target.value)}\n />\n <InputGroup.Text id=\"basic-addon1\">knots</InputGroup.Text>\n </InputGroup>\n </Form.Group>\n }\n {(flyWith !== flightTypes.Intro || newMember !== true) &&\n <Form.Group controlId=\"launchType\" size=\"lg\"><h4 style={{display: \"inline\"}}>Launch Type: </h4>\n {renderLaunches((launches))} \n </Form.Group>\n }\n <hr className=\"my-4\" />\n {(launchType !== \"\") &&\n <>\n <p>{first} {last} in {glider.SK} requesting {launchType} launch.</p>\n {(flyWith !== \"Alone\")&&<p>Flying with {flyWith.toLowerCase()} {passengerFirst} {passengerLast} </p>}\n <LoaderButton \n type=\"submit\"\n as=\"button\"\n size=\"lg\"\n isLoading={isLoading}\n form=\"crew-request-form\"\n disabled = {\n (glider.SK === unknownGlider.SK) || (launchType === unknownString) || (groundOnly) ||\n ((flyWith !== \"Alone\") && (passengerFirst === \"\")) || (flyWith !== \"Intro\" && pilotBalance<clubMinLevel) ||\n ((flyWith === \"Intro\") && (newMember === true) && (introType === \"\"))\n }\n >\n {launchButtonMessage()}\n </LoaderButton>\n </>\n }\n </Form>\n );\n }\n\n return (\n <div className=\"Home\">\n {isAuthenticated ? renderPages() : renderLander()}\n </div>\n );\n}\n","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { useCallback, useRef, useState } from 'react';\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n const wasPropRef = useRef(propValue !== undefined);\n const [stateValue, setState] = useState(defaultValue);\n const isProp = propValue !== undefined;\n const wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n return [isProp ? propValue : stateValue, useCallback((...args) => {\n const [value, ...rest] = args;\n let returnValue = handler == null ? void 0 : handler(value, ...rest);\n setState(value);\n return returnValue;\n }, [handler])];\n}\nexport { useUncontrolledProp };\nexport function useUncontrolled(props, config) {\n return Object.keys(config).reduce((result, fieldName) => {\n const _ref = result,\n _defaultKey = defaultKey(fieldName),\n {\n [_defaultKey]: defaultValue,\n [fieldName]: propsValue\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [_defaultKey, fieldName].map(_toPropertyKey));\n const handlerName = config[fieldName];\n const [value, handler] = useUncontrolledProp(propsValue, defaultValue, props[handlerName]);\n return Object.assign({}, rest, {\n [fieldName]: value,\n [handlerName]: handler\n });\n }, props);\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","const _excluded = [\"children\", \"usePopper\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\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, 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}\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 usePopper: usePopperProp = true\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [props, meta] = useDropdownMenu(Object.assign({}, options, {\n usePopper: usePopperProp\n }));\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children(props, meta)\n });\n}\nDropdownMenu.displayName = 'DropdownMenu';\n\n/** @component */\nexport default DropdownMenu;","/*\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, {JSX, ReactNode, useContext, useLayoutEffect, useMemo, useRef, 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);\nconst IsSSRContext = React.createContext(false);\n\nexport interface SSRProviderProps {\n /** Your application here. */\n children: ReactNode\n}\n\n// This is only used in React < 18.\nfunction LegacySSRProvider(props: SSRProviderProps): JSX.Element {\n let cur = useContext(SSRContext);\n let counter = useCounter(cur === defaultContext);\n let [isSSR, setIsSSR] = useState(true);\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}-${counter}`,\n current: 0\n }), [cur, counter]);\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 document !== 'undefined') {\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 (\n <SSRContext.Provider value={value}>\n <IsSSRContext.Provider value={isSSR}>\n {props.children}\n </IsSSRContext.Provider>\n </SSRContext.Provider>\n );\n}\n\nlet warnedAboutSSRProvider = false;\n\n/**\n * When using SSR with React Aria in React 16 or 17, 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 if (typeof React['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && !warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n warnedAboutSSRProvider = true;\n }\n return <>{props.children}</>;\n }\n return <LegacySSRProvider {...props} />;\n}\n\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nlet componentIds = new WeakMap();\n\nfunction useCounter(isDisabled = false) {\n let ctx = useContext(SSRContext);\n let ref = useRef<number | null>(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner?.current;\n if (currentOwner) {\n let prevComponentValue = componentIds.get(currentOwner);\n if (prevComponentValue == null) {\n // On the first render, and first call to useId, store the id and state in our weak map.\n componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n } else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n componentIds.delete(currentOwner);\n }\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\n\nfunction useLegacySSRSafeId(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 let counter = useCounter(!!defaultId);\n let prefix = ctx === defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\n\nfunction useModernSSRSafeId(defaultId?: string): string {\n let id = React.useId();\n let [didSSR] = useState(useIsSSR());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\n\n// Use React.useId in React 18 if available, otherwise fall back to our old implementation.\n/** @private */\nexport const useSSRSafeId = typeof React['useId'] === 'function' ? useModernSSRSafeId : useLegacySSRSafeId;\n\nfunction getSnapshot() {\n return false;\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction subscribe(onStoreChange: () => void): () => void {\n // noop\n return () => {};\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 // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof React['useSyncExternalStore'] === 'function') {\n return React['useSyncExternalStore'](subscribe, getSnapshot, getServerSnapshot);\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useContext(IsSSRContext);\n}\n","import { useContext, useCallback } from 'react';\nimport * as React from 'react';\nimport { useSSRSafeId } from './ssr';\nimport DropdownContext from './DropdownContext';\nimport { Fragment as _Fragment, 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;","const _excluded = [\"eventKey\", \"disabled\", \"onClick\", \"active\", \"as\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\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 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 { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\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 = false) {\n const handler = useEventCallback(listener);\n useEffect(() => {\n const target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return () => target.removeEventListener(event, handler, capture);\n }, [eventTarget]);\n}","\"use client\";\n\nimport * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext({});\nDropdownContext.displayName = 'DropdownContext';\nexport default DropdownContext;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownDivider = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'hr',\n role = 'separator',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'dropdown-divider');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n role: role,\n ...props\n });\n});\nDropdownDivider.displayName = 'DropdownDivider';\nexport default DropdownDivider;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownHeader = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n role = 'heading',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'dropdown-header');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n role: role,\n ...props\n });\n});\nDropdownHeader.displayName = 'DropdownHeader';\nexport default DropdownHeader;","\"use client\";\n\nimport 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;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownItemText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'span',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'dropdown-item-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nDropdownItemText.displayName = 'DropdownItemText';\nexport default DropdownItemText;","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}","\"use client\";\n\nimport 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\";\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 = true,\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 || 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';\nexport default DropdownMenu;","\"use client\";\n\nimport 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;","\"use client\";\n\nimport 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 DropdownDivider from './DropdownDivider';\nimport DropdownHeader from './DropdownHeader';\nimport DropdownItem from './DropdownItem';\nimport DropdownItemText from './DropdownItemText';\nimport DropdownMenu, { getDropdownMenuPlacement } from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Dropdown = /*#__PURE__*/React.forwardRef((pProps, ref) => {\n const {\n bsPrefix,\n drop = 'down',\n show,\n className,\n align = 'start',\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 = true,\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 var _meta$originalEvent;\n /** Checking if target of event is ToggleButton,\n * if it is then nullify mousedown event\n */\n const isToggleButton = (_meta$originalEvent = meta.originalEvent) == null || (_meta$originalEvent = _meta$originalEvent.target) == null ? void 0 : _meta$originalEvent.classList.contains('dropdown-toggle');\n if (isToggleButton && meta.source === 'mousedown') {\n return;\n }\n if (meta.originalEvent.currentTarget === document && (meta.source !== 'keydown' || meta.originalEvent.key === 'Escape')) meta.source = 'rootClose';\n if (isClosingPermitted(meta.source)) onToggle == null || 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';\nexport default Object.assign(Dropdown, {\n Toggle: DropdownToggle,\n Menu: DropdownMenu,\n Item: DropdownItem,\n ItemText: DropdownItemText,\n Divider: DropdownDivider,\n Header: DropdownHeader\n});","function V(e,{insertAt:n}={}){if(!e||typeof document>\"u\")return;let t=document.head||document.getElementsByTagName(\"head\")[0],r=document.createElement(\"style\");r.type=\"text/css\",n===\"top\"&&t.firstChild?t.insertBefore(r,t.firstChild):t.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}V(`.rmsc{--rmsc-main: #4285f4;--rmsc-hover: #f1f3f5;--rmsc-selected: #e2e6ea;--rmsc-border: #ccc;--rmsc-gray: #aaa;--rmsc-bg: #fff;--rmsc-p: 10px;--rmsc-radius: 4px;--rmsc-h: 38px}.rmsc *{box-sizing:border-box;transition:all .2s ease}.rmsc .gray{color:var(--rmsc-gray)}.rmsc .dropdown-content{position:absolute;z-index:1;top:100%;width:100%;padding-top:8px}.rmsc .dropdown-content .panel-content{overflow:hidden;border-radius:var(--rmsc-radius);background:var(--rmsc-bg);box-shadow:0 0 0 1px #0000001a,0 4px 11px #0000001a}.rmsc .dropdown-container{position:relative;outline:0;background-color:var(--rmsc-bg);border:1px solid var(--rmsc-border);border-radius:var(--rmsc-radius)}.rmsc .dropdown-container[aria-disabled=true]:focus-within{box-shadow:var(--rmsc-gray) 0 0 0 1px;border-color:var(--rmsc-gray)}.rmsc .dropdown-container:focus-within{box-shadow:var(--rmsc-main) 0 0 0 1px;border-color:var(--rmsc-main)}.rmsc .dropdown-heading{position:relative;padding:0 var(--rmsc-p);display:flex;align-items:center;width:100%;height:var(--rmsc-h);cursor:default;outline:0}.rmsc .dropdown-heading .dropdown-heading-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.rmsc .clear-selected-button{cursor:pointer;background:none;border:0;padding:0;display:flex}.rmsc .options{max-height:260px;overflow-y:auto;margin:0;padding-left:0}.rmsc .options li{list-style:none;margin:0}.rmsc .select-item{box-sizing:border-box;cursor:pointer;display:block;padding:var(--rmsc-p);outline-offset:-1px;outline-color:var(--rmsc-primary)}.rmsc .select-item:hover{background:var(--rmsc-hover)}.rmsc .select-item.selected{background:var(--rmsc-selected)}.rmsc .no-options{padding:var(--rmsc-p);text-align:center;color:var(--rmsc-gray)}.rmsc .search{width:100%;position:relative;border-bottom:1px solid var(--rmsc-border)}.rmsc .search input{background:none;height:var(--rmsc-h);padding:0 var(--rmsc-p);width:100%;outline:0;border:0;font-size:1em}.rmsc .search input:focus{background:var(--rmsc-hover)}.rmsc .search-clear-button{cursor:pointer;position:absolute;top:0;right:0;bottom:0;background:none;border:0;padding:0 calc(var(--rmsc-p) / 2)}.rmsc .search-clear-button [hidden]{display:none}.rmsc .item-renderer{display:flex;align-items:baseline}.rmsc .item-renderer input{margin:0 5px 0 0}.rmsc .item-renderer.disabled{opacity:.5}.rmsc .spinner{animation:rotate 2s linear infinite}.rmsc .spinner .path{stroke:var(--rmsc-border);stroke-width:4px;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}\n`);import oe,{useEffect as Pe,useState as Ne}from\"react\";import{jsx as Te}from\"react/jsx-runtime\";var Me={allItemsAreSelected:\"All items are selected.\",clearSearch:\"Clear Search\",clearSelected:\"Clear Selected\",noOptions:\"No options\",search:\"Search\",selectAll:\"Select All\",selectAllFiltered:\"Select All (Filtered)\",selectSomeItems:\"Select...\",create:\"Create\"},De={value:[],hasSelectAll:!0,className:\"multi-select\",debounceDuration:200,options:[]},re=oe.createContext({}),ne=({props:e,children:n})=>{let[t,r]=Ne(e.options),a=c=>{var u;return((u=e.overrideStrings)==null?void 0:u[c])||Me[c]};return Pe(()=>{r(e.options)},[e.options]),Te(re.Provider,{value:{t:a,...De,...e,options:t,setOptions:r},children:n})},w=()=>oe.useContext(re);import{useEffect as ye,useRef as Qe,useState as J}from\"react\";import{useEffect as Fe,useRef as Le}from\"react\";function se(e,n){let t=Le(!1);Fe(()=>{t.current?e():t.current=!0},n)}import{useCallback as Ke,useEffect as ae,useMemo as We,useRef as _e}from\"react\";var He={when:!0,eventTypes:[\"keydown\"]};function R(e,n,t){let r=We(()=>Array.isArray(e)?e:[e],[e]),a=Object.assign({},He,t),{when:c,eventTypes:u}=a,b=_e(n),{target:s}=a;ae(()=>{b.current=n});let p=Ke(i=>{r.some(l=>i.key===l||i.code===l)&&b.current(i)},[r]);ae(()=>{if(c&&typeof window<\"u\"){let i=s?s.current:window;return u.forEach(l=>{i&&i.addEventListener(l,p)}),()=>{u.forEach(l=>{i&&i.removeEventListener(l,p)})}}},[c,u,r,s,n])}var f={ARROW_DOWN:\"ArrowDown\",ARROW_UP:\"ArrowUp\",ENTER:\"Enter\",ESCAPE:\"Escape\",SPACE:\"Space\"};import{useCallback as Ge,useEffect as fe,useMemo as he,useRef as Y,useState as F}from\"react\";var le=(e,n)=>{let t;return function(...r){clearTimeout(t),t=setTimeout(()=>{e.apply(null,r)},n)}};function ie(e,n){return n?e.filter(({label:t,value:r})=>t!=null&&r!=null&&t.toLowerCase().includes(n.toLowerCase())):e}import{jsx as ce,jsxs as Be}from\"react/jsx-runtime\";var T=()=>Be(\"svg\",{width:\"24\",height:\"24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",className:\"dropdown-search-clear-icon gray\",children:[ce(\"line\",{x1:\"18\",y1:\"6\",x2:\"6\",y2:\"18\"}),ce(\"line\",{x1:\"6\",y1:\"6\",x2:\"18\",y2:\"18\"})]});import{useRef as $e}from\"react\";import{jsx as de,jsxs as Ve}from\"react/jsx-runtime\";var Ue=({checked:e,option:n,onClick:t,disabled:r})=>Ve(\"div\",{className:`item-renderer ${r?\"disabled\":\"\"}`,children:[de(\"input\",{type:\"checkbox\",onChange:t,checked:e,tabIndex:-1,disabled:r}),de(\"span\",{children:n.label})]}),pe=Ue;import{jsx as me}from\"react/jsx-runtime\";var Ye=({itemRenderer:e=pe,option:n,checked:t,tabIndex:r,disabled:a,onSelectionChanged:c,onClick:u})=>{let b=$e(),s=l=>{p(),l.preventDefault()},p=()=>{a||c(!t)},i=l=>{p(),u(l)};return R([f.ENTER,f.SPACE],s,{target:b}),me(\"label\",{className:`select-item ${t?\"selected\":\"\"}`,role:\"option\",\"aria-selected\":t,tabIndex:r,ref:b,children:me(e,{option:n,checked:t,onClick:i,disabled:a})})},N=Ye;import{Fragment as qe,jsx as $}from\"react/jsx-runtime\";var ze=({options:e,onClick:n,skipIndex:t})=>{let{disabled:r,value:a,onChange:c,ItemRenderer:u}=w(),b=(s,p)=>{r||c(p?[...a,s]:a.filter(i=>i.value!==s.value))};return $(qe,{children:e.map((s,p)=>{let i=p+t;return $(\"li\",{children:$(N,{tabIndex:i,option:s,onSelectionChanged:l=>b(s,l),checked:!!a.find(l=>l.value===s.value),onClick:l=>n(l,i),itemRenderer:u,disabled:s.disabled||r})},(s==null?void 0:s.key)||p)})})},ue=ze;import{jsx as k,jsxs as z}from\"react/jsx-runtime\";var Je=()=>{let{t:e,onChange:n,options:t,setOptions:r,value:a,filterOptions:c,ItemRenderer:u,disabled:b,disableSearch:s,hasSelectAll:p,ClearIcon:i,debounceDuration:l,isCreatable:L,onCreateOption:y}=w(),O=Y(),g=Y(),[m,M]=F(\"\"),[v,K]=F(t),[x,D]=F(\"\"),[E,I]=F(0),W=Ge(le(o=>D(o),l),[]),A=he(()=>{let o=0;return s||(o+=1),p&&(o+=1),o},[s,p]),_={label:e(m?\"selectAllFiltered\":\"selectAll\"),value:\"\"},H=o=>{let d=v.filter(C=>!C.disabled).map(C=>C.value);if(o){let Ae=[...a.map(U=>U.value),...d];return(c?v:t).filter(U=>Ae.includes(U.value))}return a.filter(C=>!d.includes(C.value))},B=o=>{let d=H(o);n(d)},h=o=>{W(o.target.value),M(o.target.value),I(0)},P=()=>{var o;D(\"\"),M(\"\"),(o=g==null?void 0:g.current)==null||o.focus()},Z=o=>I(o),we=o=>{switch(o.code){case f.ARROW_UP:ee(-1);break;case f.ARROW_DOWN:ee(1);break;default:return}o.stopPropagation(),o.preventDefault()};R([f.ARROW_DOWN,f.ARROW_UP],we,{target:O});let Oe=()=>{I(0)},j=async()=>{let o={label:m,value:m,__isNew__:!0};y&&(o=await y(m)),r([o,...t]),P(),n([...a,o])},Re=async()=>c?await c(t,x):ie(t,x),ee=o=>{let d=E+o;d=Math.max(0,d),d=Math.min(d,t.length+Math.max(A-1,0)),I(d)};fe(()=>{var o,d;(d=(o=O==null?void 0:O.current)==null?void 0:o.querySelector(`[tabIndex='${E}']`))==null||d.focus()},[E]);let[ke,Ee]=he(()=>{let o=v.filter(d=>!d.disabled);return[o.every(d=>a.findIndex(C=>C.value===d.value)!==-1),o.length!==0]},[v,a]);fe(()=>{Re().then(K)},[x,t]);let te=Y();R([f.ENTER],j,{target:te});let Ie=L&&m&&!v.some(o=>(o==null?void 0:o.value)===m);return z(\"div\",{className:\"select-panel\",role:\"listbox\",ref:O,children:[!s&&z(\"div\",{className:\"search\",children:[k(\"input\",{placeholder:e(\"search\"),type:\"text\",\"aria-describedby\":e(\"search\"),onChange:h,onFocus:Oe,value:m,ref:g,tabIndex:0}),k(\"button\",{type:\"button\",className:\"search-clear-button\",hidden:!m,onClick:P,\"aria-label\":e(\"clearSearch\"),children:i||k(T,{})})]}),z(\"ul\",{className:\"options\",children:[p&&Ee&&k(N,{tabIndex:A===1?0:1,checked:ke,option:_,onSelectionChanged:B,onClick:()=>Z(1),itemRenderer:u,disabled:b}),v.length?k(ue,{skipIndex:A,options:v,onClick:(o,d)=>Z(d)}):Ie?k(\"li\",{onClick:j,className:\"select-item creatable\",tabIndex:1,ref:te,children:`${e(\"create\")} \"${m}\"`}):k(\"li\",{className:\"no-options\",children:e(\"noOptions\")})]})]})},q=Je;import{jsx as be}from\"react/jsx-runtime\";var ge=({expanded:e})=>be(\"svg\",{width:\"24\",height:\"24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",className:\"dropdown-heading-dropdown-arrow gray\",children:be(\"path\",{d:e?\"M18 15 12 9 6 15\":\"M6 9L12 15 18 9\"})});import{jsx as ve}from\"react/jsx-runtime\";var xe=()=>{let{t:e,value:n,options:t,valueRenderer:r}=w(),a=n.length===0,c=n.length===t.length,u=r&&r(n,t);return a?ve(\"span\",{className:\"gray\",children:u||e(\"selectSomeItems\")}):ve(\"span\",{children:u||(c?e(\"allItemsAreSelected\"):(()=>n.map(s=>s.label).join(\", \"))())})};import{jsx as G}from\"react/jsx-runtime\";var Se=({size:e=24})=>G(\"span\",{style:{width:e,marginRight:\"0.2rem\"},children:G(\"svg\",{width:e,height:e,className:\"spinner\",viewBox:\"0 0 50 50\",style:{display:\"inline\",verticalAlign:\"middle\"},children:G(\"circle\",{cx:\"25\",cy:\"25\",r:\"20\",fill:\"none\",className:\"path\"})})});import{jsx as S,jsxs as Ce}from\"react/jsx-runtime\";var Xe=()=>{let{t:e,onMenuToggle:n,ArrowRenderer:t,shouldToggleOnHover:r,isLoading:a,disabled:c,onChange:u,labelledBy:b,value:s,isOpen:p,defaultIsOpen:i,ClearSelectedIcon:l,closeOnChangedValue:L}=w();ye(()=>{L&&m(!1)},[s]);let[y,O]=J(!0),[g,m]=J(i),[M,v]=J(!1),K=t||ge,x=Qe();se(()=>{n&&n(g)},[g]),ye(()=>{i===void 0&&typeof p==\"boolean\"&&(O(!1),m(p))},[p]);let D=h=>{var P;[\"text\",\"button\"].includes(h.target.type)&&[f.SPACE,f.ENTER].includes(h.code)||(y&&(h.code===f.ESCAPE?(m(!1),(P=x==null?void 0:x.current)==null||P.focus()):m(!0)),h.preventDefault())};R([f.ENTER,f.ARROW_DOWN,f.SPACE,f.ESCAPE],D,{target:x});let E=h=>{y&&r&&m(h)},I=()=>!M&&v(!0),W=h=>{!h.currentTarget.contains(h.relatedTarget)&&y&&(v(!1),m(!1))},A=()=>E(!0),_=()=>E(!1),H=()=>{y&&m(a||c?!1:!g)},B=h=>{h.stopPropagation(),u([]),y&&m(!1)};return Ce(\"div\",{tabIndex:0,className:\"dropdown-container\",\"aria-labelledby\":b,\"aria-expanded\":g,\"aria-readonly\":!0,\"aria-disabled\":c,ref:x,onFocus:I,onBlur:W,onMouseEnter:A,onMouseLeave:_,children:[Ce(\"div\",{className:\"dropdown-heading\",onClick:H,children:[S(\"div\",{className:\"dropdown-heading-value\",children:S(xe,{})}),a&&S(Se,{}),s.length>0&&l!==null&&S(\"button\",{type:\"button\",className:\"clear-selected-button\",onClick:B,disabled:c,\"aria-label\":e(\"clearSelected\"),children:l||S(T,{})}),S(K,{expanded:g})]}),g&&S(\"div\",{className:\"dropdown-content\",children:S(\"div\",{className:\"panel-content\",children:S(q,{})})})]})},Q=Xe;import{jsx as X}from\"react/jsx-runtime\";var Ze=e=>X(ne,{props:e,children:X(\"div\",{className:`rmsc ${e.className||\"multi-select\"}`,children:X(Q,{})})}),je=Ze;export{Q as Dropdown,je as MultiSelect,N as SelectItem,q as SelectPanel};\n","import { DateTime } from \"luxon\";\n\nexport function buildNumberString(incomingValue, last, decimals) {\n let reString = \"^\\\\-?\\\\d*\";\n let value = last;\n \n let decimalLocation = incomingValue.indexOf('.');\n if (decimalLocation >= 0) {\n incomingValue = incomingValue.slice(0,decimalLocation+decimals+1)\n }\n\n if (decimals > 0) {\n reString += \"\\\\.?[\\\\d]{0,\"+decimals+\"}$\";\n } else {\n reString += \"$\";\n }\n let re = new RegExp(reString);\n if (re.test(incomingValue)) {\n value = incomingValue;\n } else {\n if (!isNaN(parseFloat(incomingValue))) {\n value = parseFloat(incomingValue).toFixed(decimals);\n }\n }\n return(value)\n }\n\nexport function parseFloatDefault(incomingValue, defaultValue) {\n let parsedValue = parseFloat(incomingValue);\n return !isNaN(parsedValue) ? parsedValue : defaultValue\n}\n\nexport function parseIntDefault(incomingValue, defaultValue) {\n let parsedValue = parseInt(incomingValue);\n return !isNaN(parsedValue) ? parsedValue : defaultValue\n}\n\nexport function parseFloatChanged(incomingValue, defaultValue) {\n // Report if the incoming value is changed from the default value. If the incoming value is not \n // a valid float then report no change (i.e.: An invalid float is reported as not changing the default)\n let parsedValue = parseFloat(incomingValue);\n if (isNaN(parsedValue)) {\n return false\n } else {\n return parsedValue !== defaultValue\n }\n}\n\nexport function nameFromPilotId(id, allPilots = []) {\n const pilot = allPilots.find((p) => p.SK === id)\n if(pilot) return `${pilot.first} ${pilot.last}`\n return \"Unknown\"\n}\n\nexport function isoTimeToLocaleTime(time) {\n const newTime = DateTime.fromISO(time)\n if(!newTime.isValid) return time ? time : \"Not Recorded\"\n return newTime.toLocaleString(DateTime.TIME_SIMPLE)\n}\n\nexport function toCurrencyString(number, currency, showSymbol = false) {\n const toConvert = parseFloat(number)\n let opts = {}\n\n if(currency === undefined) {\n return number\n }\n\n if(showSymbol) {\n opts = {style: 'currency', currency, currencyDisplay: \"narrowSymbol\" }\n } else {\n const options = new Intl.NumberFormat(undefined, { style: 'currency', currency }).resolvedOptions()\n opts = {\n maximumFractionDigits: options.maximumFractionDigits ?? 2,\n minimumFractionDigits: options.minimumFractionDigits ?? 0\n }\n }\n\n return toConvert.toLocaleString(undefined, opts)\n}\n\nexport function toValidFloatBuild(value){\n // Silly validation that string is building a valid float\n let newValue = \"\"\n let formattedValue = value\n if(isNaN(value+\"0\")) {\n for(let i = 0; i <= value.length; i++){\n if(isNaN(value.slice(0,i)+\"0\")){\n break\n } else {\n newValue = value.slice(0,i);\n }\n }\n formattedValue = newValue;\n }\n return formattedValue;\n}\n\nexport function isUserActive(user, clubTimeZone) {\n if(user.activeExpiration != null && clubTimeZone != null) {\n const expirationDate = DateTime.fromMillis(user.activeExpiration, {zone: clubTimeZone}).startOf(\"day\")\n const today = DateTime.fromObject({}, {zone: clubTimeZone})\n if(today < expirationDate){\n return user.isActive\n } else {\n return false\n }\n }\n return user.isActive\n}\n\nexport function isUserPilot(user) {\n const isPilot = !user.groundOnly;\n return isPilot;\n}\n\nexport function formatTaxOptions (taxRates) {\n if(!taxRates) return []\n return Object.keys(taxRates).map((key) => {\n const percentage = (taxRates[key]) * 100\n return {\n value: key,\n label: `${key} (${parseFloat(percentage.toFixed(2))}%)`\n }\n })\n}\n\n export const fuzzify = (str) => {\n if(!str) return \"\"\n return str.toLocaleLowerCase().replace(/\\s/g,'').normalize(\"NFKD\");\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, FormControl, FormGroup, InputGroup, Modal, ToggleButton, ToggleButtonGroup } from \"react-bootstrap\";\nimport LoaderButton from \"./LoaderButton\";\nimport { RequestType, apiRequest, deleteGlider } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./EditModal.css\"\nimport { isEqual } from \"lodash\";\nimport { formatTaxOptions } from \"../libs/utils\";\n\n\nexport default function EditGliderModal({showModal, closeModal, glider, refreshGliderList, blocks}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {club, userIsAdmin, clubTaxRates} = useAppContext()\n\n const [gliderID, setGliderID] = useState(0);\n const [gliderWeight, setGliderWeight] = useState(0);\n const [gliderPlaces, setGliderPlaces] = useState(0);\n const [gliderRate, setGliderRate] = useState(0);\n const [gliderLaunchSpeed, setGliderLaunchSpeed] = useState(0);\n const [gliderStatus, setGliderStatus] = useState(\"Not Ready\");\n const [gliderRegistration, setGliderRegistration] = useState(\"\");\n const [isDeleting, setIsDeleting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [taxStatus, setTaxStatus] = useState(\"exempt\")\n const [taxList, setTaxList] = useState([])\n const [blockList, setBlockList] = useState([])\n\n const modalTitle = useMemo(() => {\n if(!glider) return \"Edit Glider\";\n if(glider.SK === \"new\") return \"Create New Glider\"\n return `Edit ${glider.SK}`\n }, [glider])\n\n const blockOptions = useMemo(() => {\n const blockList = blocks.filter(a => a.active).map((block) => {\n return {\n value: block.SK,\n label: block.name\n }\n })\n return blockList\n }, [blocks])\n \n const blockSelectRenderer = (selected) => {\n if(!selected || selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].label\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n\n const taxSelectRenderer = (selected) => {\n if(selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].value\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n const confirmDelete = async () => {\n const result = await deleteGlider(club, gliderID);\n\n if(result.statusCode !== 200) {\n await refreshGliderList()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Glider deleted successfully\"\n })\n closeModal()\n } else {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not delete glider\"\n })\n }\n\n setIsDeleting(false); \n }\n\n async function deleteRecord() {\n setIsDeleting(true); // Start button spinner\n sendConfirmModal({\n heading: \"Delete Glider?\",\n body: <>This function has been disabled.<br /> Consider setting to <strong>Not Ready</strong> instead.<br /><br /> Contact TakeUpSlack support for further assistance.</>,\n confirmText: \"Delete\",\n rejectText: \"Cancel\",\n confirmColor: \"danger\",\n confirmDisabled: true,\n confirm: confirmDelete,\n reject: () => setIsDeleting(false)\n })\n }\n\n async function updateGliderRecord() {\n setIsLoading(true);\n // Build up body for API Call\n let data = {}\n let parsedFloat = !isNaN(parseFloat(gliderWeight)) ? parseFloat(gliderWeight) : glider.weight; \n if (parsedFloat !== glider.weight){\n data.weight = parsedFloat;\n }\n if (gliderPlaces !== glider.places) {\n data.places = gliderPlaces;\n }\n parsedFloat = !isNaN(parseFloat(gliderRate)) ? parseFloat(gliderRate) : glider.rate; \n if (parsedFloat !== glider.rate) {\n data.rate = parsedFloat;\n }\n parsedFloat = !isNaN(parseFloat(gliderLaunchSpeed)) ? parseFloat(gliderLaunchSpeed) : glider.launchSpeed; \n if (parsedFloat !== glider.launchSpeed) {\n data.launchSpeed = parsedFloat;\n }\n if (gliderStatus !== glider.status) {\n data.status = gliderStatus;\n }\n const blockValues = blockList.map((a) => a.value)\n if(!isEqual(blockValues, glider.blocks)) {\n data.blocks = blockValues\n }\n if(taxStatus !== glider.taxStatus) {\n data.taxStatus = taxStatus\n }\n const taxRates = taxList.map((e) => e.value)\n if(!isEqual(taxRates, glider.taxRates)) {\n data.taxRates = taxRates\n }\n const body = {\n club: club,\n type: \"GLIDER\",\n id: (gliderID !== \"new\" ? gliderID : gliderRegistration),\n data: data,\n };\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update glider\"\n })\n } else {\n await refreshGliderList()\n sendToast({\n status: NotificationStatus.Success,\n message: gliderID !== \"new\" ? \"Glider updated successfully\" : \"Glider created successfully\"\n })\n closeModal()\n }\n }\n\n useEffect(() => {\n if(!glider || !glider.SK) return;\n\n setGliderID(glider.SK)\n if (glider.SK !== \"new\") {\n setGliderWeight(glider.weight);\n setGliderPlaces(glider.places);\n setGliderRate((\"rate\" in glider) ? glider.rate : 0);\n setGliderLaunchSpeed((\"launchSpeed\" in glider) ? glider.launchSpeed : 0);\n setGliderStatus(glider.status);\n setTaxStatus(glider.taxStatus ?? \"exempt\");\n const taxRates = glider.taxRates ?? [];\n setTaxList(taxRates.map((r) => \n taxOptions.find((o) => o.value === r) ?? {label: \"Unknown\", value: r}\n ))\n const gliderBlocks = glider.blocks ?? [];\n setBlockList(gliderBlocks.map((gliderBlock) => {\n const block = blocks.find((b) => b.SK === gliderBlock);\n return {\n value: gliderBlock,\n label: block.name || \"unknown\",\n }\n }\n ))\n } else {\n setGliderWeight(0);\n setGliderPlaces(1);\n setGliderRate(0);\n setGliderLaunchSpeed(0);\n setGliderStatus(\"Not ready\");\n setTaxStatus(\"exempt\");\n setTaxList([]);\n setBlockList([]);\n setGliderRegistration(\"\");\n }\n\n setIsLoading(false);\n setIsDeleting(false);\n }, [glider, taxOptions, blocks])\n\n const blocksChanged = useMemo(() => {\n const blockListKeys = blockList.map((a) => a.value);\n const gliderBlocks = glider.blocks ?? [];\n return !isEqual(blockListKeys, gliderBlocks)\n }, [blockList, glider])\n\n const taxStatusChanged = useMemo(() => taxStatus !== glider.taxStatus, [taxStatus, glider])\n const taxRatesChanged = useMemo(() => {\n const taxRates = taxList.map((e) => e.value)\n const gliderTaxRates = glider.taxRates ?? []\n return !isEqual(taxRates, gliderTaxRates)\n }, [taxList, glider])\n\n const gliderHasChanged = useMemo(() => {\n const parsedWeight = !isNaN(parseFloat(gliderWeight)) ? parseFloat(gliderWeight) : glider.weight;\n const rate = !isNaN(parseFloat(gliderRate)) ? parseFloat(gliderRate) : glider.rate;\n const speed = !isNaN(parseFloat(gliderLaunchSpeed)) ? parseFloat(gliderLaunchSpeed) : glider.launchSpeed;\n return (parsedWeight !== glider.weight) ||\n (gliderPlaces !== glider.places) ||\n (rate !== glider.rate) ||\n (speed !== glider.launchSpeed) ||\n (gliderStatus !== glider.status) ||\n taxStatusChanged || taxRatesChanged ||\n blocksChanged;\n }, [gliderWeight, gliderPlaces, gliderRate, gliderLaunchSpeed, gliderStatus, glider, taxStatusChanged, taxRatesChanged, blocksChanged]);\n\n return (\n <Modal show={showModal} onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <FormGroup className=\"d-flex flex-column gap-3\" controlId=\"gliderInfo\" size=\"lg\">\n { gliderID === \"new\" && \n <>\n <span className=\"fs-5\"><b>WARNING:</b> Registration cannot be changed once entered</span>\n <InputGroup >\n <InputGroup.Text>Registration</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={gliderRegistration}\n onChange={e => setGliderRegistration(e.target.value)}\n />\n </InputGroup>\n </>\n }\n { (gliderID === \"new\" || userIsAdmin) &&\n <>\n {/*<InputGroup >\n <InputGroup.Text>Weight</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n className=\"text-end\"\n value={gliderWeight}\n onChange={e => setGliderWeight(e.target.value)}\n />\n <InputGroup.Text>kg</InputGroup.Text>\n </InputGroup>*/}\n <InputGroup >\n <InputGroup.Text>Launch Speed</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n className=\"text-end\"\n value={gliderLaunchSpeed}\n onChange={e => setGliderLaunchSpeed(e.target.value)}\n />\n <InputGroup.Text>knots</InputGroup.Text>\n </InputGroup>\n <InputGroup >\n <InputGroup.Text>Rate $</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n className=\"text-end\"\n value={gliderRate}\n onChange={e => setGliderRate(e.target.value)}\n />\n <InputGroup.Text>/minute</InputGroup.Text>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Applicable Blocks:</InputGroup.Text>\n <MultiSelect\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={blockOptions}\n value={blockList}\n onChange={setBlockList}\n valueRenderer={blockSelectRenderer}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Tax Status:</InputGroup.Text>\n <ToggleButtonGroup name=\"taxStatusCheck\" className=\"flex-wrap toggle-button\" type=\"radio\" value={taxStatus} onChange={(e) => setTaxStatus(e)}>\n <ToggleButton id=\"exempt\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exempt\">Tax Exempt</ToggleButton>\n <ToggleButton id=\"inclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"inclusive\">Tax Inclusive</ToggleButton>\n <ToggleButton id=\"exclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exclusive\">Tax Exclusive</ToggleButton>\n </ToggleButtonGroup>\n </InputGroup>\n {taxStatus !== \"exempt\" &&\n <InputGroup>\n <InputGroup.Text>Applicable Taxes:</InputGroup.Text>\n <MultiSelect\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={taxOptions}\n value={taxList}\n onChange={setTaxList}\n valueRenderer={taxSelectRenderer}\n />\n </InputGroup>\n }\n\n <FormGroup onChange={(e) => setGliderPlaces(parseFloat(e.target.value))} >\n <div className=\"d-flex flex-row gap-2\">\n <span>Seats:</span> \n <input type=\"radio\" id=\"places1\" value=\"1\" name=\"number\" onChange={setGliderPlaces} checked={gliderPlaces===1} />\n <label htmlFor=\"places1\">1</label>\n <input type=\"radio\" id=\"places2\" value=\"2\" name=\"number\" onChange={setGliderPlaces} checked={gliderPlaces===2} />\n <label htmlFor=\"places2\">2</label>\n <input type=\"radio\" id=\"places3\" value=\"3\" name=\"number\" onChange={setGliderPlaces} checked={gliderPlaces===3} />\n <label htmlFor=\"places3\">3</label>\n <input type=\"radio\" id=\"places4\" value=\"4\" name=\"number\" onChange={setGliderPlaces} checked={gliderPlaces===4} />\n <label htmlFor=\"places4\">4</label>\n </div>\n </FormGroup>\n </>\n }\n <span className=\"fs-4 fw-semibold\">Current status: {glider.status}</span>\n <FormGroup onChange={(e) => setGliderStatus(e.target.value)}>\n <div className=\"d-flex flex-row gap-2\">\n <span>Reset to:</span>\n <input type=\"radio\" name=\"ready\" id=\"statusNotReady\" onChange={setGliderStatus} checked={gliderStatus===\"Not ready\"} value=\"Not ready\"/>\n <label htmlFor=\"statusNotReady\">Not ready</label>\n <input type=\"radio\" name=\"ready\" id=\"statusReady\" onChange={setGliderStatus} checked={gliderStatus===\"Ready\"} value=\"Ready\"/>\n <label htmlFor=\"statusReady\">Ready</label>\n </div>\n </FormGroup>\n </FormGroup> \n {gliderHasChanged && \n <>\n <hr></hr>\n <div className=\"fs-5 mb-2 fw-semibold\">Confirm the following changes to glider: {gliderID}</div>\n <ol className=\"mb-0\">\n {((!isNaN(parseFloat(gliderWeight)) ? parseFloat(gliderWeight) : glider.weight) !== glider.weight) && \n <li>Weight changed to {gliderWeight}</li>}\n {((!isNaN(parseFloat(gliderRate)) ? parseFloat(gliderRate) : glider.rate) !== glider.rate) && \n <li>Rate changed to ${gliderRate}/minute</li>}\n {(blocksChanged) && <li>Applicable blocks changed to {blockSelectRenderer(blockList)}</li>}\n {((!isNaN(parseFloat(gliderLaunchSpeed)) ? parseFloat(gliderLaunchSpeed) : glider.launchSpeed) !== glider.launchSpeed) && \n <li>Launch speed changed to {gliderLaunchSpeed} knots</li>}\n {(gliderPlaces !== glider.places) && <li>Changed number of places to {gliderPlaces}</li>}\n {(gliderStatus !== glider.status) && <li>Status changed to {gliderStatus}</li>}\n {(taxStatusChanged) && <li>Tax status changed to {taxStatus}</li>}\n {(taxRatesChanged) && <li>Applicable taxes changed to {taxSelectRenderer(taxList)}</li>}\n </ol>\n </>\n }\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row justify-content-between w-100\">\n <div>\n { (gliderID !== \"new\") &&\n <LoaderButton type=\"button\" variant=\"danger\" isLoading={isDeleting} onClick={deleteRecord}>\n Delete Glider\n </LoaderButton>\n }\n </div>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={closeModal}>\n Cancel\n </Button>\n <LoaderButton disabled={!gliderHasChanged} type=\"button\" variant=\"primary\" isLoading={isLoading} onClick={updateGliderRecord}>\n Save Changes\n </LoaderButton>\n </div>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, FormControl, FormGroup, InputGroup, Modal, ToggleButton, ToggleButtonGroup, FormCheck, Dropdown } from \"react-bootstrap\";\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport Tooltip from 'react-bootstrap/Tooltip';\nimport LoaderButton from \"./LoaderButton\";\nimport { RequestType, apiRequest } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./EditModal.css\"\nimport { isEqual } from \"lodash\";\nimport { formatTaxOptions } from \"../libs/utils\";\n\nconst values = [\"unlimited\",\"$\",\"minutes\"];\n\nexport default function EditBlockModal({showModal, closeModal, block, refreshBlockList}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {club, userIsAdmin, clubTaxRates} = useAppContext()\n\n const [blockID, setBlockID] = useState(0);\n const [blockName, setBlockName] = useState(\"\");\n const [blockUnits, setBlockUnits] = useState(values[0]);\n const [blockAmount, setBlockAmount] = useState(0);\n const [blockEndsWithMembership, setBlockEndsWithMembership] = useState(true);\n const [endsAfterDays, setEndsAfterDays] = useState(false);\n const [daysCount, setDaysCount] = useState(0);\n const [endsAfterFlyingDays, setEndsAfterFlyingDays] = useState(false);\n const [flyingDaysCount, setFlyingDaysCount] = useState(0);\n const [minFlightCharge, setMinFlightCharge] = useState(0);\n const [minFlightUnits, setMinFlightUnits] = useState(values[0])\n const [maxFlightCharge, setMaxFlightCharge] = useState(0);\n const [maxFlightUnits, setMaxFlightUnits] = useState(values[0]);\n const [excessMultiplier, setExcessMultiplier] = useState(1);\n const [blockPrice, setBlockPrice] = useState(0);\n const [taxStatus, setTaxStatus] = useState(\"exempt\")\n const [taxList, setTaxList] = useState([])\n const [blockActive, setBlockActive] = useState(true);\n\n const [isDeleting, setIsDeleting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const modalTitle = useMemo(() => {\n if(!block) return \"Edit Glider Rental Rate Rule\";\n if(block.SK === \"new\") return \"Create New Glider Rental Rate Rule\"\n return `Edit ${block.name} Rate Rule`\n }, [block])\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n \n const taxSelectRenderer = (selected) => {\n if(selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].value\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n const confirmDelete = async () => {\n // Disable full deletion\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not delete block\"\n })\n setIsDeleting(false); \n }\n\n async function deleteRecord() {\n setIsDeleting(true); // Start button spinner\n sendConfirmModal({\n heading: \"Delete Block?\",\n body: <>This function has been disabled.<br /> Consider setting to <strong>Inactive</strong> instead.<br /><br /> Contact TakeUpSlack support for further assistance.</>,\n confirmText: \"Delete\",\n rejectText: \"Cancel\",\n confirmColor: \"danger\",\n confirmDisabled: true,\n confirm: confirmDelete,\n reject: () => setIsDeleting(false)\n })\n }\n\n async function updateBlockRecord() {\n setIsLoading(true);\n // Build up body for API Call\n let data = {}\n\n const parsedBlockAmount = !isNaN(parseFloat(blockAmount)) ? parseFloat(blockAmount) : block.amount;\n const parsedDaysCount = !isNaN(parseFloat(daysCount)) ? parseFloat(daysCount) : block.daysCount;\n const parsedFlyingDaysCount = !isNaN(parseFloat(flyingDaysCount)) ? parseFloat(flyingDaysCount) : block.flyingDaysCount;\n const parsedMinFlightCharge = !isNaN(parseFloat(minFlightCharge)) ? parseFloat(minFlightCharge) : block.minFlightCharge;\n const parsedMaxFlightCharge = !isNaN(parseFloat(maxFlightCharge)) ? parseFloat(maxFlightCharge) : block.maxFlightCharge;\n const parsedExcessMultiplier = !isNaN(parseFloat(excessMultiplier)) ? parseFloat(excessMultiplier) : block.excessMultiplier;\n const parsedblockPrice = !isNaN(parseFloat(blockPrice)) ? parseFloat(blockPrice) : block.blockPrice;\n\n if (blockName !== block.name){\n data.name = blockName;\n }\n\n if (blockUnits !== block.units){\n data.units = blockUnits;\n }\n\n if (parsedBlockAmount !== block.amount){\n data.amount = parsedBlockAmount;\n }\n\n if (blockEndsWithMembership !== block.endsWithMembership){\n data.endsWithMembership = blockEndsWithMembership;\n }\n\n if (endsAfterDays !== block.endsAfterDays){\n data.endsAfterDays = endsAfterDays;\n }\n\n if (parsedDaysCount !== block.daysCount){\n data.daysCount = parsedDaysCount;\n }\n\n if (endsAfterFlyingDays !== block.endsAfterFlyingDays){\n data.endsAfterFlyingDays = endsAfterFlyingDays;\n }\n\n if (parsedFlyingDaysCount !== block.flyingDaysCount){\n data.flyingDaysCount = parsedFlyingDaysCount;\n }\n\n if (parsedMinFlightCharge !== block.minFlightCharge){\n data.minFlightCharge = parsedMinFlightCharge;\n }\n\n if (minFlightUnits !== block.minFlightUnits){\n data.minFlightUnits = minFlightUnits;\n }\n\n if (parsedMaxFlightCharge !== block.maxFlightCharge){\n data.maxFlightCharge = parsedMaxFlightCharge;\n }\n\n if (maxFlightUnits !== block.maxFlightUnits){\n data.maxFlightUnits = maxFlightUnits;\n }\n\n if (parsedExcessMultiplier !== block.excessMultiplier){\n data.excessMultiplier = parsedExcessMultiplier;\n }\n\n if (parsedblockPrice !== block.blockPrice){\n data.blockPrice = parsedblockPrice;\n }\n\n if(taxStatus !== block.taxStatus) {\n data.taxStatus = taxStatus\n }\n\n const taxRates = taxList.map((e) => e.value)\n if(!isEqual(taxRates, block.taxRates)) {\n data.taxRates = taxRates\n }\n\n if (blockActive !== block.active) {\n data.active = blockActive;\n }\n\n const body = {\n club: club,\n type: \"BLOCK\",\n id: (blockID !== \"new\" ? blockID : null),\n data: data,\n };\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update block\"\n })\n } else {\n await refreshBlockList()\n sendToast({\n status: NotificationStatus.Success,\n message: blockID !== \"new\" ? \"Block updated successfully\" : \"Block created successfully\"\n })\n closeModal()\n }\n }\n\n useEffect(() => {\n if(!block || !block.SK) return;\n\n setBlockID(block.SK)\n if (block.SK !== \"new\") {\n setBlockName(block.name);\n setBlockUnits(block.units);\n setBlockAmount(block.amount ?? 0);\n setBlockEndsWithMembership(block.endsWithMembership ?? true);\n setEndsAfterDays(block.endsAfterDays ?? false);\n setDaysCount(block.daysCount ?? 0);\n setEndsAfterFlyingDays(block.endsAfterFlyingDays ?? false);\n setFlyingDaysCount(block.flyingDaysCount ?? 0);\n setMinFlightCharge(block.minFlightCharge ?? 0);\n setMinFlightUnits(block.minFlightUnits ?? values[0]);\n setMaxFlightCharge(block.maxFlightCharge ?? 0);\n setMaxFlightUnits(block.maxFlightUnits ?? values[0]);\n setExcessMultiplier(block.excessMultiplier ?? 1);\n setBlockPrice(block.blockPrice);\n setTaxStatus(block.taxStatus || \"Exempt\");\n const taxRates = block.taxRates ?? [];\n setTaxList(taxRates.map((r) => \n taxOptions.find((o) => o.value === r) ?? {label: \"Unknown\", value: r}\n ));\n setBlockActive(block.active ?? true);\n } else {\n setBlockName(\"\");\n setBlockUnits(values[0]);\n setBlockAmount(0);\n setBlockEndsWithMembership(true);\n setEndsAfterDays(false);\n setDaysCount(0);\n setEndsAfterFlyingDays(false);\n setFlyingDaysCount(0);\n setMinFlightCharge(0);\n setMinFlightUnits(values[0]);\n setMaxFlightCharge(0);\n setMaxFlightUnits(values[0]);\n setExcessMultiplier(1);\n setBlockPrice(0);\n setTaxStatus(\"Exempt\");\n setTaxList([]);\n setBlockActive(true);\n }\n\n setIsLoading(false);\n setIsDeleting(false);\n }, [block, taxOptions])\n\n\n const taxStatusChanged = useMemo(() => taxStatus !== block.taxStatus, [taxStatus, block])\n\n const taxRatesChanged = useMemo(() => {\n const taxRates = taxList.map((e) => e.value)\n const blockTaxRates = block.taxRates ?? []\n return !isEqual(taxRates, blockTaxRates)\n }, [taxList, block])\n\n const blockHasChanged = useMemo(() => {\n const amount = !isNaN(parseFloat(blockAmount)) ? parseFloat(blockAmount) : block.amount;\n const parsedDaysCount = !isNaN(parseFloat(daysCount)) ? parseFloat(daysCount) : block.daysCount;\n const parsedFlyingDaysCount = !isNaN(parseFloat(flyingDaysCount)) ? parseFloat(flyingDaysCount) : block.flyingDaysCount;\n const parsedMinFlightCharge = !isNaN(parseFloat(minFlightCharge)) ? parseFloat(minFlightCharge) : block.minFlightCharge;\n const parsedMaxFlightCharge = !isNaN(parseFloat(maxFlightCharge)) ? parseFloat(maxFlightCharge) : block.maxFlightCharge;\n const parsedExcessMultiplier = !isNaN(parseFloat(excessMultiplier)) ? parseFloat(excessMultiplier) : block.excessMultiplier;\n const parsedblockPrice = !isNaN(parseFloat(blockPrice)) ? parseFloat(blockPrice) : block.blockPrice;\n\n return (blockName !== block.name) ||\n (blockUnits !== block.units) ||\n (amount !== block.amount) ||\n (blockEndsWithMembership !== block.endsWithMembership) ||\n (endsAfterDays !== block.endsAfterDays) ||\n (parsedDaysCount !== block.daysCount) ||\n (endsAfterFlyingDays !== block.endsAfterFlyingDays) ||\n (parsedFlyingDaysCount !== block.flyingDaysCount) ||\n (parsedMinFlightCharge !== block.minFlightCharge) ||\n (minFlightUnits !== block.minFlightUnits) ||\n (parsedMaxFlightCharge !== block.maxFlightCharge) ||\n (maxFlightUnits !== block.maxFlightUnits) ||\n (parsedExcessMultiplier !== block.excessMultiplier) ||\n (parsedblockPrice !== block.blockPrice) ||\n (blockActive !== block.active) ||\n taxStatusChanged || \n taxRatesChanged;\n }, [block, blockActive, blockAmount, blockEndsWithMembership, blockName, blockPrice, blockUnits, daysCount, endsAfterDays, endsAfterFlyingDays, excessMultiplier, flyingDaysCount, maxFlightCharge, maxFlightUnits, minFlightCharge, minFlightUnits, taxRatesChanged, taxStatusChanged]);\n\n return (\n <Modal show={showModal} onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <FormGroup className=\"d-flex flex-column gap-3\" controlId=\"blockInfo\" size=\"lg\">\n <OverlayTrigger \n delay={{ show: 250, hide: 400 }}\n overlay={<Tooltip id=\"name-warning-tooltip\">\n WARNING: Changing the name after it has been in use is likely to cause confusion.\n </Tooltip>}\n >\n <InputGroup >\n <InputGroup.Text>Block name</InputGroup.Text>\n\n <FormControl\n type=\"text\"\n placeholder=\"Ex: Student, XC, etc.\"\n value={blockName}\n onChange={e => setBlockName(e.target.value)}\n variant=\"warning\"\n />\n <FormControl.Feedback type=\"invalid\" tooltip>Be very very careful</FormControl.Feedback>\n </InputGroup>\n </OverlayTrigger>\n { (blockID === \"new\" || userIsAdmin) &&\n <>\n <InputGroup >\n <InputGroup.Text>Block flight value</InputGroup.Text>\n {blockUnits!==values[0] &&\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n value={blockAmount}\n disabled={(blockUnits===values[0])}\n onChange={e => setBlockAmount(e.target.value)}\n />}\n <Dropdown>\n <Dropdown.Toggle id=\"dropdown-basic\">\n {blockUnits}\n </Dropdown.Toggle>\n <Dropdown.Menu>\n {values.map((item, i) => \n <Dropdown.Item key={i} value={item} onClick = {() => setBlockUnits(item)}>{item}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </InputGroup>\n <InputGroup >\n <InputGroup.Text>Price $</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n className=\"text-end\"\n value={blockPrice}\n onChange={e => setBlockPrice(e.target.value)}\n />\n </InputGroup>\n <ToggleButtonGroup name=\"taxStatusCheck\" className=\"flex-wrap\" type=\"radio\" value={taxStatus} onChange={(e) => setTaxStatus(e)}>\n <InputGroup.Text>Tax Status:</InputGroup.Text>\n <ToggleButton id=\"exempt\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exempt\">Tax Exempt</ToggleButton>\n <ToggleButton id=\"inclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"inclusive\">Tax Inclusive</ToggleButton>\n <ToggleButton id=\"exclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exclusive\">Tax Exclusive</ToggleButton>\n </ToggleButtonGroup>\n {taxStatus !== \"exempt\" &&\n <InputGroup>\n <InputGroup.Text>Applicable Taxes:</InputGroup.Text>\n <MultiSelect\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={taxOptions}\n value={taxList}\n onChange={setTaxList}\n valueRenderer={taxSelectRenderer}\n />\n </InputGroup>\n }\n <strong>Expiry (First of)</strong>\n <ToggleButtonGroup name=\"ExpiresYECheck\" className=\"flex-wrap toggle-button\" type=\"radio\" value={blockEndsWithMembership} onChange={(e) => setBlockEndsWithMembership(e)}>\n <InputGroup.Text>Membership year end</InputGroup.Text>\n <ToggleButton id=\"Expires\" variant=\"outline-primary\" name=\"ExpiresYECheck\" value={true}>Yes</ToggleButton>\n <ToggleButton id=\"Does not expire\" variant=\"outline-primary\" name=\"ExpiresYECheck\" value={false}>No</ToggleButton>\n </ToggleButtonGroup>\n <InputGroup className=\"w-100\">\n <InputGroup.Text>After </InputGroup.Text> \n <FormControl\n autoFocus\n type=\"number\"\n value={daysCount}\n disabled={!endsAfterDays}\n onChange={e => setDaysCount(e.target.value)}\n />\n <InputGroup.Text>Calendar days</InputGroup.Text>\n <InputGroup.Text className=\"gap-2\"><FormCheck type=\"checkbox\" aria-label=\"...\" checked={!endsAfterDays} onChange={() => setEndsAfterDays(!endsAfterDays)} />No limit</InputGroup.Text> \n\n </InputGroup>\n <InputGroup className=\"w-100\">\n <InputGroup.Text>After </InputGroup.Text> \n <FormControl\n autoFocus\n type=\"number\"\n value={flyingDaysCount}\n disabled={!endsAfterFlyingDays}\n onChange={e => setFlyingDaysCount(e.target.value)}\n />\n <InputGroup.Text>Flying days</InputGroup.Text>\n <InputGroup.Text className=\"gap-2\"><FormCheck type=\"checkbox\" aria-label=\"...\" checked={!endsAfterFlyingDays} onChange={() => setEndsAfterFlyingDays(!endsAfterFlyingDays)} />No limit</InputGroup.Text> \n </InputGroup>\n\n <strong>Per flight limits</strong>\n <InputGroup >\n <InputGroup.Text>Min flight</InputGroup.Text>\n {minFlightUnits!==values[0] &&\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n value={minFlightCharge}\n disabled={minFlightUnits===values[0]}\n onChange={e => setMinFlightCharge(e.target.value)}\n />}\n <Dropdown>\n <Dropdown.Toggle id=\"dropdown-basic\" > {minFlightUnits} </Dropdown.Toggle>\n <Dropdown.Menu>\n {values.map((item, i) => \n <Dropdown.Item key={i} value={item} onClick = {() => setMinFlightUnits(item)}>{item}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </InputGroup>\n <InputGroup >\n <InputGroup.Text>Max flight</InputGroup.Text>\n {maxFlightUnits!==values[0] &&\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n value={maxFlightCharge}\n disabled={maxFlightUnits===values[0]}\n onChange={e => setMaxFlightCharge(e.target.value)}\n />}\n <Dropdown>\n <Dropdown.Toggle id=\"dropdown-basic\"> {maxFlightUnits} </Dropdown.Toggle>\n <Dropdown.Menu>\n {values.map((item, i) => \n <Dropdown.Item key={i} value={item} onClick = {() => setMaxFlightUnits(item)}>{item}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </InputGroup>\n {maxFlightUnits!==values[0] &&\n <InputGroup >\n <InputGroup.Text>Excess flight time multiplier</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n className=\"text-end\"\n value={excessMultiplier}\n disabled={maxFlightUnits===values[0]}\n onChange={e => setExcessMultiplier(e.target.value)}\n />\n <InputGroup.Text>x</InputGroup.Text>\n </InputGroup>\n }\n <strong>Block Status</strong>\n <ToggleButtonGroup name=\"blockActiveCheck\" type=\"radio\" value={blockActive} onChange={(e) => setBlockActive(e)}>\n <ToggleButton id=\"block Active\" variant=\"outline-primary\" name=\"blockActiveCheck\" value={true}>Active</ToggleButton>\n <ToggleButton id=\"block Inactive\" variant=\"outline-primary\" name=\"blockActiveCheck\" value={false}>Inactive</ToggleButton>\n </ToggleButtonGroup>\n </>\n }\n </FormGroup> \n {blockHasChanged && \n <>\n <hr></hr>\n <div className=\"fs-5 mb-2 fw-semibold\">Confirm the following changes:</div>\n <ol className=\"mb-0\">\n {(blockName !== block.name) && <li>Changed block name to {blockName}</li>}\n {(blockUnits !== block.units) && <li>Changed block units to {blockUnits}</li>}\n {((!isNaN(parseFloat(blockAmount)) ? parseFloat(blockAmount) : block.amount) !== block.amount) && \n <li>Block amount changed to {blockAmount} {blockUnits}</li>}\n {(blockEndsWithMembership !== block.endsWithMembership) && <li>Changed block ends with membership year to {blockEndsWithMembership ? \"true\" : \"false\"}</li>}\n {(endsAfterDays !== block.endsAfterDays) && <li>Changed block ends after days to {endsAfterDays ? \"true\" : \"false\"}</li>}\n {((!isNaN(parseFloat(daysCount)) ? parseFloat(daysCount) : block.daysCount) !== block.daysCount) && \n <li>Changed block ends after {block.daysCount} to {daysCount} days</li>}\n {(endsAfterFlyingDays !== block.endsAfterFlyingDays) && <li>Changed block ends after flying days to {endsAfterFlyingDays ? \"true\" : \"false\"}</li>}\n {((!isNaN(parseFloat(flyingDaysCount)) ? parseFloat(flyingDaysCount) : block.flyingDaysCount) !== block.flyingDaysCount) && \n <li>Changed block ends after {block.flyingDaysCount} to {flyingDaysCount} flying days</li>}\n {((!isNaN(parseFloat(minFlightCharge)) ? parseFloat(minFlightCharge) : block.minFlightCharge) !== block.minFlightCharge) && \n <li>Changed minimum flight charge to {minFlightCharge} {minFlightUnits}</li>}\n {(minFlightUnits !== block.minFlightUnits) && <li>Changed minimum flight units to {minFlightUnits}</li>}\n {((!isNaN(parseFloat(maxFlightCharge)) ? parseFloat(maxFlightCharge) : block.maxFlightCharge) !== block.maxFlightCharge) && \n <li>Changed maximum flight charge to {maxFlightCharge} {maxFlightUnits}</li>}\n {(maxFlightUnits !== block.maxFlightUnits) && <li>Changed maximum flight units to {maxFlightUnits}</li>}\n {((!isNaN(parseFloat(excessMultiplier)) ? parseFloat(excessMultiplier) : block.excessMultiplier) !== block.excessMultiplier) && \n <li>Changed excess multipliers to {excessMultiplier}x</li>}\n {((!isNaN(parseFloat(blockPrice)) ? parseFloat(blockPrice) : block.blockPrice) !== block.blockPrice) && \n <li>Changed block price to {blockPrice}</li>}\n {(blockActive !== block.active) && <li>Block status changed to {blockActive ? \"Active\" : \"Inactive\"}</li>}\n {(taxStatusChanged) && <li>Tax status changed to {taxStatus}</li>}\n {(taxRatesChanged) && <li>Applicable taxes changed to {taxSelectRenderer(taxList)}</li>}\n </ol>\n </>\n }\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row justify-content-between w-100\">\n <div>\n { (blockID !== \"new\") &&\n <LoaderButton type=\"button\" variant=\"danger\" isLoading={isDeleting} onClick={deleteRecord}>\n Delete Block\n </LoaderButton>\n }\n </div>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={closeModal}>\n Cancel\n </Button>\n <LoaderButton disabled={!blockHasChanged} type=\"button\" variant=\"primary\" isLoading={isLoading} onClick={updateBlockRecord}>\n Save Changes\n </LoaderButton>\n </div>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, Form, FormControl, FormGroup, InputGroup, Modal, ToggleButton, ToggleButtonGroup } from \"react-bootstrap\";\nimport LoaderButton from \"./LoaderButton\";\nimport { RequestType, apiRequest, deleteLaunch } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./EditModal.css\"\nimport { isEqual } from \"lodash\";\nimport { formatTaxOptions, toCurrencyString } from \"../libs/utils\";\n\nconst LaunchTypes = {\n Variable: 'Variable Height',\n Known: 'Known Height'\n}\n\nconst FootDefaults = {\n size: 1000,\n per: 100\n}\n\nconst MeterDefaults = {\n size: 300,\n per: 30\n}\n\nexport default function EditLaunchModal({showModal, closeModal, launch, refreshLaunchList}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {club, clubTaxRates, clubUnits} = useAppContext()\n\n const [launchID, setLaunchID] = useState(\"\");\n const [launchPrice, setLaunchPrice] = useState(0);\n const [launchName, setLaunchName] = useState(\"\");\n const [launchHeight, setLaunchHeight] = useState(0);\n const [launchHeightUnit, setLaunchHeightUnit] = useState(\"\");\n const [isDeleting, setIsDeleting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [taxStatus, setTaxStatus] = useState(\"exempt\")\n const [taxList, setTaxList] = useState([])\n const [nextRangeId, setNextRangeId] = useState(0)\n const [isActive, setIsActive] = useState(false);\n\n const [launchType, setLaunchType] = useState(LaunchTypes.Known)\n const [variableHeights, setVariableHeights] = useState([{id: 0, start: 0, end: FootDefaults.size, cost: 0, per: FootDefaults.per}])\n\n const modalTitle = useMemo(() => {\n if(!launch) return \"Edit Launch\";\n if(launch.SK === \"new\") return \"Create New Launch\"\n return `Edit ${launch.SK}`\n }, [launch])\n\n const heightUnit = useMemo(() => {\n if(!clubUnits) return \"ft\"\n return clubUnits.height ? clubUnits.height.S : \"ft\"\n }, [clubUnits])\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n \n const taxSelectRenderer = (selected) => {\n if(selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].value\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n const confirmDelete = async () => {\n const result = await deleteLaunch(club, launchID);\n\n if(result.statusCode !== 200) {\n await refreshLaunchList()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Launch deleted successfully\"\n })\n closeModal()\n } else {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not delete launch\"\n })\n }\n\n setIsDeleting(false); \n }\n\n async function deleteRecord() {\n setIsDeleting(true); // Start button spinner\n sendConfirmModal({\n heading: \"Delete Launch?\",\n body: <>This function has been disabled.<br /> Consider setting to <strong>Inactive</strong> instead.<br /><br /> Contact TakeUpSlack support for further assistance.</>,\n confirmText: \"Delete\",\n rejectText: \"Cancel\",\n confirmColor: \"danger\",\n confirmDisabled: true,\n confirm: confirmDelete,\n reject: () => setIsDeleting(false)\n })\n }\n\n async function updateLaunchRecord() {\n setIsLoading(true);\n // Build up body for API Call\n const parsedFloat = !isNaN(parseFloat(launchPrice)) ? parseFloat(launchPrice) : launch.price;\n const data = {\n price: parsedFloat,\n units: launchHeightUnit,\n }\n\n if(taxStatus !== launch.taxStatus) {\n data.taxStatus = taxStatus;\n }\n const taxRates = taxList.map((e) => e.value)\n if(!isEqual(taxRates, launch.taxRates)) {\n data.taxRates = taxRates;\n }\n\n if(launchType === LaunchTypes.Known) {\n data.height = launchHeight;\n delete data.heightRanges;\n }\n\n if(isActive !== launch.isActive) {\n data.isActive = isActive;\n }\n\n if(launchType === LaunchTypes.Variable) {\n delete data.height;\n data.heightRanges = variableHeights.sort((a, b) => a.start - b.start)\n .map((range) => {\n const newRange = {...range};\n delete newRange.id;\n return newRange;\n });\n }\n\n const body = {\n club: club,\n type: \"LAUNCH\",\n id: (launchID !== \"new\" ? launchID : launchName),\n data: data,\n };\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": body}}\n );\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update launch\"\n });\n } else {\n await refreshLaunchList();\n sendToast({\n status: NotificationStatus.Success,\n message: launchID !== \"new\" ? \"Launch updated successfully\" : \"Launch created successfully\"\n });\n closeModal();\n }\n }\n\n useEffect(() => {\n if(!launch || !launch.SK) return;\n\n setLaunchID(launch.SK);\n setIsActive(launch.isActive ?? true)\n if (launch.SK !== \"new\") {\n setLaunchPrice((\"price\" in launch) ? launch.price : 0);\n setTaxStatus(launch.taxStatus ?? \"exempt\");\n\n const taxRates = launch.taxRates ?? []\n setTaxList(taxRates.map((r) => \n taxOptions.find((o) => o.value === r) ?? {label: \"Unknown\", value: r}\n ))\n\n if(Array.isArray(launch.heightRanges)) {\n setLaunchType(LaunchTypes.Variable)\n setLaunchHeight(launch.height ?? \"\");\n setLaunchHeightUnit(\"\");\n\n let rangeId = 0\n setVariableHeights(launch.heightRanges.map((range) => {\n // Inject ids into the api response so we can check for changes\n range.id = rangeId\n rangeId++\n return range\n }))\n setNextRangeId(rangeId)\n } else {\n setLaunchType(LaunchTypes.Known)\n setLaunchHeight((\"height\" in launch) ? launch.height : 0);\n setLaunchHeightUnit((\"units\" in launch) ? launch.units: \"\");\n setVariableHeights([{start: 0, end: 1000, cost: 0, per: 10}])\n }\n\n } else {\n setLaunchPrice(0);\n setLaunchHeight(0);\n setLaunchHeightUnit(\"\");\n setTaxStatus(\"exempt\")\n setLaunchType(LaunchTypes.Known)\n if(heightUnit === \"m\"){\n setVariableHeights([{start: 0, end: MeterDefaults.size, cost: 0, per: MeterDefaults.per}])\n } else {\n setVariableHeights([{start: 0, end: FootDefaults.size, cost: 0, per: FootDefaults.per}])\n }\n }\n\n setIsLoading(false);\n setIsDeleting(false);\n }, [launch, taxOptions, heightUnit])\n\n\n const taxStatusChanged = useMemo(() => taxStatus !== launch.taxStatus, [taxStatus, launch])\n const taxRatesChanged = useMemo(() => {\n const taxRates = taxList.map((e) => e.value)\n const launchTaxRates = launch.taxRates ?? []\n return !isEqual(taxRates, launchTaxRates)\n }, [taxList, launch])\n\n const launchTypeChanged = useMemo(() => {\n return (Array.isArray(launch.heightRanges) && launchType === LaunchTypes.Known) ||\n (!Array.isArray(launch.heightRanges) && launchType === LaunchTypes.Variable)\n }, [launchType, launch])\n\n const heightRangesChanged = useMemo(() => {\n return !isEqual(launch.heightRanges, variableHeights) && launchType === LaunchTypes.Variable\n }, [launch, variableHeights, launchType])\n\n const launchUpdated = useMemo(() => {\n return (\n (!isNaN(parseFloat(launchPrice)) ? parseFloat(launchPrice) : launch.price) !== launch.price) ||\n (launchID === \"new\") ||\n (launchHeight !== launch.height) ||\n (launchHeightUnit !== launch.units) ||\n taxStatusChanged || taxRatesChanged ||\n heightRangesChanged ||\n launchTypeChanged ||\n isActive !== launch.isActive\n }, [launch, isActive, launchPrice, launchHeight, launchID, launchHeightUnit, taxStatusChanged, taxRatesChanged, heightRangesChanged, launchTypeChanged])\n\n const addVariableHeightRow = (i) => {\n const defaults = heightUnit === \"m\" ? MeterDefaults : FootDefaults \n setVariableHeights(h => {\n const heights = [...h]\n let start = heights[i].end\n let end = start + defaults.size\n\n heights.splice(i + 1, 0, {id: nextRangeId, start, end, cost: 0, per: defaults.per})\n return [...heights]\n })\n setNextRangeId((i) => i + 1)\n }\n \n const removeVariableHeightRow = (i) => {\n setVariableHeights(h => {\n const heights = [...h]\n heights.splice(i, 1)\n return heights\n })\n }\n\n const updateListItem = (index, field, value) => {\n let formattedValue = value;\n\n if(field !== \"cost\" && value !== \"\") {\n formattedValue = parseInt(value)\n }\n\n if(formattedValue < 0) {\n formattedValue = Math.abs(formattedValue)\n }\n\n setVariableHeights(hs => {\n return hs.map((r, i) => {\n let newR = r\n if(i === index) {\n newR = {...r}\n newR[field] = formattedValue\n }\n return newR\n })\n })\n }\n\n const heightErrors = useMemo(() => {\n const points = []\n const errors = {}\n let errorMsg = \"\"\n const overlapErrorMsg = \"Height ranges can only overlap by one\"\n\n for(const i in variableHeights) {\n points.push({p: variableHeights[i].start, i, d: \"start\"})\n points.push({p: variableHeights[i].end, i, d: \"end\"})\n\n if(variableHeights[i].end <= variableHeights[i].start) {\n errors[i] = \"range\"\n errorMsg = '\"To\" height must be greater than \"From\" height'\n }\n if(Math.floor((variableHeights[i].end - variableHeights[i].start) / variableHeights[i].per) < 1) {\n errors[i] = \"per\"\n errorMsg = `\"Per\" segment cannot be larger than the range`\n }\n if(variableHeights[i].per < 1) {\n errors[i] = \"per\"\n errorMsg = `Cost must be \"per\" at least 1 ${heightUnit}`\n }\n }\n\n points.sort((a,b) => {\n if(a.p === b.p) {\n return a.d === b.d ? 0 : a.d === \"start\" ? -1 : 1\n } else {\n return a.p - b.p\n }\n })\n\n let current = -1\n for(let i = 0; i < points.length; i++) {\n const point = points[i]\n\n if(point.d === \"start\") {\n if(current === -1) {\n current = point.i\n } else if(variableHeights[current].end === point.p) {\n current = point.i\n } else {\n errorMsg = overlapErrorMsg\n errors[point.i] = \"range\"\n errors[current] = \"range\"\n\n if(variableHeights[point.i].end > variableHeights[current].end) {\n current = point.i\n }\n }\n } else if(point.i === current) {\n current = -1\n }\n }\n return {positions: errors, message: errorMsg}\n }, [variableHeights, heightUnit])\n\n const variableHeightChanges = useMemo(() => {\n const changeList = []\n if(!launch || !launch.heightRanges || isEqual(variableHeights, launch.heightRanges)){\n return changeList\n }\n\n let oldIdx = 0;\n let newIdx = 0;\n while(newIdx < variableHeights.length || oldIdx < launch.heightRanges.length) {\n const oldRange = launch.heightRanges[oldIdx] ?? {}\n const newRange = variableHeights[newIdx] ?? {}\n \n if(isEqual(oldRange, newRange)){\n newIdx++\n oldIdx++\n continue\n }\n\n if(oldRange.id === newRange.id) {\n if(oldRange.start !== newRange.start) {\n changeList.push(\n `Changed height range #${newIdx + 1} start from ${oldRange.start} ${heightUnit} to ${newRange.start} ${heightUnit}`\n )\n }\n if(oldRange.end !== newRange.end) {\n changeList.push(\n `Changed height range #${newIdx + 1} end from ${oldRange.end} ${heightUnit} to ${newRange.end} ${heightUnit}`\n )\n }\n if(oldRange.cost !== newRange.cost) {\n changeList.push(\n `Changed height range #${newIdx + 1} price from ${toCurrencyString(oldRange.cost, \"CAD\", true)} to ${toCurrencyString(newRange.cost, \"CAD\", true)}`\n )\n }\n if(oldRange.per !== newRange.per) {\n changeList.push(\n `Changed height range #${newIdx + 1} per unit from ${oldRange.per} ${heightUnit} to ${newRange.per} ${heightUnit}`\n )\n }\n newIdx++\n oldIdx++\n continue\n }\n\n if(oldRange.id < newRange.id || (oldRange.id !== undefined && newRange.id === undefined)){\n changeList.push(`Removed height range from ${oldRange.start}${heightUnit} to ${oldRange.end}${heightUnit}`)\n oldIdx++\n continue\n }\n\n if(launch.heightRanges.length - 1 < newRange.id){\n changeList.push(`Added height range from ${newRange.start}${heightUnit} to ${newRange.end}${heightUnit}`)\n newIdx++\n continue\n }\n newIdx++\n oldIdx++\n }\n\n return changeList\n }, [variableHeights, launch, heightUnit])\n\n const renderVariableHeightPicker = () => {\n return (\n <InputGroup>\n <ul className=\"d-flex flex-column gap-1 list-unstyled mb-0\">\n {variableHeights.map((h, i) => \n <li key={i} >\n <div className=\"d-flex flex-row gap-2\">\n <InputGroup >\n <InputGroup.Text>From:</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"numeric\"\n as=\"input\"\n value={h.start}\n min=\"0\"\n className={`${heightErrors.positions[i] === \"range\" ? 'bg-danger text-white' : \"\"}`}\n onChange={e => updateListItem(i, \"start\", e.target.value)}\n />\n <InputGroup.Text>{heightUnit}</InputGroup.Text>\n <InputGroup.Text>To:</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"numeric\"\n as=\"input\"\n value={h.end}\n className={`${heightErrors.positions[i] === \"range\" ? 'bg-danger text-white' : \"\"}`}\n onChange={e => updateListItem(i, \"end\", e.target.value)}\n />\n <InputGroup.Text>{heightUnit}</InputGroup.Text>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>$</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n value={h.cost}\n onChange={e => updateListItem(i, \"cost\", e.target.value)}\n />\n <InputGroup.Text>per</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"numeric\"\n as=\"input\"\n value={h.per}\n className={`${heightErrors.positions[i] === \"per\" ? 'bg-danger text-white' : \"\"}`}\n onChange={e => updateListItem(i, \"per\", e.target.value)}\n />\n <InputGroup.Text>{heightUnit}</InputGroup.Text>\n </InputGroup>\n { variableHeights.length > 1 &&\n <Button\n aria-label=\"Remove Row\"\n variant=\"danger\"\n className=\"fw-bold fs-2 py-0 px-2 lh-1\"\n onClick={() => removeVariableHeightRow(i)}\n >−</Button>\n }\n </div>\n </li>\n )}\n <Form.Text className=\"text-danger m-0\">{heightErrors.message}</Form.Text>\n <Button\n className=\"mt-0\"\n variant=\"success\"\n onClick={() => addVariableHeightRow(variableHeights.length - 1)}\n >Add new Height Range</Button>\n </ul>\n </InputGroup>\n )\n }\n\n return (\n <Modal show={showModal} size=\"lg\" fullscreen=\"lg-down\" onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <div style={{minWidth: launchType === LaunchTypes.Variable ? \"44rem\" : \"2rem\"}}>\n <FormGroup className=\"d-flex flex-column gap-3\" controlId=\"launchInfo\" size=\"lg\">\n { launchID === \"new\" && \n <>\n <h4><b>WARNING:</b> Launch label cannot be changed once entered</h4>\n <InputGroup>\n <InputGroup.Text>Launch label</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={launchName}\n onChange={e => setLaunchName(e.target.value)}\n />\n </InputGroup>\n </>\n }\n \n <ToggleButtonGroup name=\"launchActiveCheck\" type=\"radio\" value={isActive} onChange={(e) => setIsActive(e)}>\n <InputGroup.Text>Launch Status</InputGroup.Text>\n <ToggleButton id=\"launch Active\" variant=\"outline-primary\" name=\"launchActiveCheck\" value={true}>Active</ToggleButton>\n <ToggleButton id=\"Launch Inactive\" variant=\"outline-primary\" name=\"launchActiveCheck\" value={false}>Inactive</ToggleButton>\n </ToggleButtonGroup>\n\n <ToggleButtonGroup name=\"launchTypeCheck\" type=\"radio\" value={launchType} onChange={(e) => setLaunchType(e)}>\n <InputGroup.Text>Launch Type:</InputGroup.Text>\n <ToggleButton id={LaunchTypes.Known} variant=\"outline-primary\" name=\"launchTypeCheck\" value={LaunchTypes.Known}>Fixed</ToggleButton>\n <ToggleButton id={LaunchTypes.Variable} variant=\"outline-primary\" name=\"launchTypeCheck\" value={LaunchTypes.Variable}>Variable</ToggleButton>\n </ToggleButtonGroup>\n\n <InputGroup>\n <InputGroup.Text>{launchType === LaunchTypes.Known ? \"Price per launch\" : \"Connection Cost\"}</InputGroup.Text>\n <InputGroup.Text>$</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n value={launchPrice}\n onChange={e => setLaunchPrice(e.target.value)}\n />\n </InputGroup>\n\n {launchType === LaunchTypes.Variable && renderVariableHeightPicker()}\n \n { launchType === LaunchTypes.Known &&\n <InputGroup>\n <InputGroup.Text>Expected Height</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"numeric\"\n as=\"input\"\n value={launchHeight}\n onChange={e => setLaunchHeight(e.target.value)}\n />\n <InputGroup.Text>{heightUnit}</InputGroup.Text> \n </InputGroup>\n }\n\n <ToggleButtonGroup name=\"taxStatusCheck\" type=\"radio\" value={taxStatus} onChange={(e) => setTaxStatus(e)}>\n <InputGroup.Text>Tax Status:</InputGroup.Text>\n <ToggleButton id=\"exempt\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exempt\">Tax Exempt</ToggleButton>\n <ToggleButton id=\"inclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"inclusive\">Tax Inclusive</ToggleButton>\n <ToggleButton id=\"exclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exclusive\">Tax Exclusive</ToggleButton>\n </ToggleButtonGroup>\n\n {taxStatus !== \"exempt\" && taxStatus !== undefined &&\n <InputGroup>\n <InputGroup.Text>Applicable Taxes:</InputGroup.Text>\n <MultiSelect\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={taxOptions}\n value={taxList}\n onChange={setTaxList}\n valueRenderer={taxSelectRenderer}\n />\n </InputGroup>\n }\n </FormGroup> \n\n {launchUpdated && \n <>\n <hr></hr>\n <div className=\"fs-5 mb-2 fw-semibold\">Confirm the following changes to launch: {launchID}</div>\n <ol className=\"mb-0\">\n {((!isNaN(parseFloat(launchPrice)) ? parseFloat(launchPrice) : launch.price) !== launch.price) && \n <li>{launchType === LaunchTypes.Variable ? \"Connection Cost\" : \"Price\"} changed to {(!isNaN(parseFloat(launchPrice)) ? parseFloat(launchPrice) : launch.price)}</li>\n }\n {(launchHeight !== launch.height || launchHeightUnit !== launch.units) && launchType === LaunchTypes.Known &&\n <li>Height changed to {launchHeight} {launchHeightUnit}</li>\n }\n {(taxStatusChanged) && <li>Tax status changed to {taxStatus}</li>}\n {(taxRatesChanged) && <li>Applicable taxes changed to {taxSelectRenderer(taxList)}</li>}\n {(launchID === \"new\") && <li>New launch record</li>}\n {(variableHeightChanges.length > 0 && launchType === LaunchTypes.Variable) && \n variableHeightChanges.map((change, i) => (\n <li key={i}>{change}</li>\n ))\n }\n {launchTypeChanged && <li>Launch type changed to {launchType}</li>}\n {(isActive !== launch.isActive) && <li>Active changed to {isActive ? \"true\" : \"false\"}</li>}\n </ol>\n </>\n }\n </div>\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row justify-content-between w-100\">\n <div>\n { (launchID !== \"new\") &&\n <LoaderButton type=\"button\" variant=\"danger\" isLoading={isDeleting} onClick={deleteRecord}>\n Delete Launch\n </LoaderButton>\n }\n </div>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={closeModal}>\n Cancel\n </Button>\n <LoaderButton type=\"button\" variant=\"primary\" isLoading={isLoading} disabled={heightErrors.message} onClick={updateLaunchRecord}>\n Save Changes\n </LoaderButton>\n </div>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, FormControl, FormGroup, InputGroup, Modal, ToggleButton, ToggleButtonGroup } from \"react-bootstrap\";\nimport LoaderButton from \"./LoaderButton\";\nimport { RequestType, apiRequest, deleteIntroLaunch } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./EditModal.css\"\nimport { isEqual } from \"lodash\";\nimport { formatTaxOptions } from \"../libs/utils\";\n\n\nexport default function EditIntroLaunchModal({showModal, closeModal, intro, launches, refreshIntroList}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {club, clubTaxRates} = useAppContext()\n\n const [introID, setIntroID] = useState(\"\");\n const [introPrice, setIntroPrice] = useState(0);\n const [introName, setIntroName] = useState(\"\");\n const [introLaunchType, setIntroLaunchType] = useState(\"\");\n const [isDeleting, setIsDeleting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [taxStatus, setTaxStatus] = useState(\"exempt\")\n const [taxList, setTaxList] = useState([])\n const [isActive, setIsActive] = useState(true);\n\n const modalTitle = useMemo(() => {\n if(!intro) return \"Edit Intro Launch\";\n if(intro.SK === \"new\") return \"Create New Intro Launch\"\n return `Edit ${intro.SK}`\n }, [intro])\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n \n const taxSelectRenderer = (selected) => {\n if(selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].value\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n const confirmDelete = async () => {\n const result = await deleteIntroLaunch(club, introID);\n\n if(result.statusCode !== 200) {\n await refreshIntroList()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Intro launch deleted successfully\"\n })\n closeModal()\n } else {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not delete intro launch\"\n })\n }\n\n setIsDeleting(false); \n }\n\n async function deleteRecord() {\n setIsDeleting(true); // Start button spinner\n sendConfirmModal({\n heading: \"Delete Intro Launch?\",\n body: <>This function has been disabled.<br /> Consider setting to <strong>Inactive</strong> instead.<br /><br /> Contact TakeUpSlack support for further assistance.</>,\n confirmText: \"Delete\",\n rejectText: \"Cancel\",\n confirmColor: \"danger\",\n confirmDisabled: true,\n confirm: confirmDelete,\n reject: () => setIsDeleting(false)\n })\n }\n\n async function updateIntroRecord() {\n setIsLoading(true);\n // Build up body for API Call\n const parsedFloat = !isNaN(parseFloat(introPrice)) ? parseFloat(introPrice) : intro.price;\n const data = {\n price: parsedFloat,\n launch: introLaunchType,\n }\n\n if(taxStatus !== intro.taxStatus) {\n data.taxStatus = taxStatus\n }\n const taxRates = taxList.map((e) => e.value)\n if(!isEqual(taxRates, intro.taxRates)) {\n data.taxRates = taxRates\n }\n\n if (!(\"isActive\" in intro) || isActive !== intro.isActive) {\n data.isActive = isActive;\n }\n\n const body = {\n club: club,\n type: \"INTRO_LAUNCH\",\n id: (introID !== \"new\" ? introID : introName),\n data: data,\n };\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update intro launch\"\n })\n } else {\n await refreshIntroList()\n sendToast({\n status: NotificationStatus.Success,\n message: introID !== \"new\" ? \"Intro launch updated successfully\" : \"Intro launch created successfully\"\n })\n closeModal()\n }\n }\n\n useEffect(() => {\n if(!intro || !intro.SK) return;\n\n setIntroID(intro.SK)\n if (intro.SK !== \"new\") {\n setIntroPrice((\"price\" in intro) ? intro.price : 0);\n setIntroLaunchType((\"launch\" in intro) ? intro.launch : \"\");\n setTaxStatus(intro.taxStatus ?? \"exempt\");\n const taxRates = intro.taxRates ?? []\n setTaxList(taxRates.map((r) => \n taxOptions.find((o) => o.value === r) ?? {label: \"Unknown\", value: r}\n ))\n setIsActive((\"isActive\" in intro) ? intro.isActive : true);\n } else {\n setIntroPrice(0);\n setIntroLaunchType(launches[0]?.SK ?? \"\");\n setTaxStatus(\"exempt\")\n setIsActive(true);\n }\n\n setIsLoading(false);\n setIsDeleting(false);\n }, [intro, taxOptions, launches])\n\n\n const taxStatusChanged = useMemo(() => taxStatus !== intro.taxStatus, [taxStatus, intro])\n const taxRatesChanged = useMemo(() => {\n const taxRates = taxList.map((e) => e.value)\n const launchTaxRates = intro.taxRates ?? []\n return !isEqual(taxRates, launchTaxRates)\n }, [taxList, intro])\n const activeChanged = useMemo(() => {\n const wasActive = (\"isActive\" in intro) ? intro.isActive : true;\n return wasActive !== isActive\n }, [isActive, intro])\n\n const introUpdated = useMemo(() => {\n return ((!isNaN(parseFloat(introPrice)) && (parseFloat(introPrice) !== intro.price)) || \n (introID === \"new\") || \n (introLaunchType !== intro.launch)) ||\n taxStatusChanged || taxRatesChanged || activeChanged\n }, [intro, introID, introLaunchType, introPrice, taxStatusChanged, taxRatesChanged, activeChanged])\n\n return (\n <Modal show={showModal} onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <FormGroup className=\"d-flex flex-column gap-3\" controlId=\"introInfo\" size=\"lg\">\n { introID === \"new\" && \n <>\n <h4><b>WARNING:</b> Launch label cannot be changed once entered</h4>\n <InputGroup>\n <InputGroup.Text>Intro Launch label</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={introName}\n onChange={e => setIntroName(e.target.value)}\n />\n </InputGroup>\n </>\n }\n <ToggleButtonGroup name=\"introActiveCheck\" type=\"radio\" value={isActive} onChange={(e) => setIsActive(e)}>\n <InputGroup.Text>Intro Status</InputGroup.Text>\n <ToggleButton id=\"intro Active\" variant=\"outline-primary\" name=\"introActiveCheck\" value={true}>Active</ToggleButton>\n <ToggleButton id=\"intro Inactive\" variant=\"outline-primary\" name=\"introActiveCheck\" value={false}>Inactive</ToggleButton>\n </ToggleButtonGroup>\n <InputGroup>\n <InputGroup.Text>Price per launch $</InputGroup.Text>\n <FormControl\n type=\"number\"\n inputMode=\"decimal\"\n as=\"input\"\n value={introPrice}\n onChange={e => setIntroPrice(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Launch Type</InputGroup.Text>\n <FormControl as=\"select\" value={introLaunchType} onChange={e => setIntroLaunchType(e.target.value)}>\n {launches.map((item, i) => \n <option key={i} value={item.SK}>{item.SK}</option>\n )}\n </FormControl>\n </InputGroup>\n <ToggleButtonGroup name=\"taxStatusCheck\" className=\"flex-wrap\" type=\"radio\" value={taxStatus} onChange={(e) => setTaxStatus(e)}>\n <InputGroup.Text>Tax Status:</InputGroup.Text>\n <ToggleButton id=\"exempt\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exempt\">Tax Exempt</ToggleButton>\n <ToggleButton id=\"inclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"inclusive\">Tax Inclusive</ToggleButton>\n <ToggleButton id=\"exclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exclusive\">Tax Exclusive</ToggleButton>\n </ToggleButtonGroup>\n {taxStatus !== \"exempt\" && taxStatus !== undefined &&\n <InputGroup>\n <InputGroup.Text>Applicable Taxes:</InputGroup.Text>\n <MultiSelect\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={taxOptions}\n value={taxList}\n onChange={setTaxList}\n valueRenderer={taxSelectRenderer}\n />\n </InputGroup>\n }\n </FormGroup> \n {introUpdated && \n <>\n <hr></hr>\n <div className=\"fs-5 mb-2 fw-semibold\">Confirm the following changes to intro launch: {introID}</div>\n <ol>\n {(!isNaN(parseFloat(introPrice)) && (parseFloat(introPrice) !== intro.price)) && \n <li>Price changed to {(!isNaN(parseFloat(introPrice)) ? parseFloat(introPrice) : intro.price)}</li>}\n {(introID === \"new\") && <li>New intro launch record</li>}\n {(introLaunchType !== intro.launch) && <li>Launch Type changed to {introLaunchType}</li>}\n {(taxStatusChanged) && <li>Tax status changed to {taxStatus}</li>}\n {(taxRatesChanged) && <li>Applicable taxes changed to {taxSelectRenderer(taxList)}</li>}\n {(activeChanged) && <li>Status set to {isActive ? \"active\" : \"inactive\"}</li>}\n </ol>\n </>\n }\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row justify-content-between w-100\">\n <div>\n { (introID !== \"new\") &&\n <LoaderButton type=\"button\" variant=\"danger\" isLoading={isDeleting} onClick={deleteRecord}>\n Delete Launch\n </LoaderButton>\n }\n </div>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={closeModal}>\n Cancel\n </Button>\n <LoaderButton type=\"button\" variant=\"primary\" isLoading={isLoading} onClick={updateIntroRecord}>\n Save Changes\n </LoaderButton>\n </div>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, FormControl, FormGroup, InputGroup, Modal } from \"react-bootstrap\";\nimport LoaderButton from \"./LoaderButton\";\nimport { RequestType, apiRequest, deleteTug } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./EditModal.css\"\n\n\nexport default function EditTugModal({showModal, closeModal, tug, refreshTugList}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {club} = useAppContext()\n\n const [tugID, setTugID] = useState(\"\");\n const [tugType, setTugType] = useState(\"\");\n const [tugPlaces, setTugPlaces] = useState(0);\n const [tugStatus, setTugStatus] = useState(\"\");\n const [tugRegistration, setTugRegistration] = useState(\"\");\n const [isDeleting, setIsDeleting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const modalTitle = useMemo(() => {\n if(!tug) return \"Edit Tug\";\n if(tug.SK === \"new\") return \"Create New Tug\"\n return `Edit ${tug.SK}`\n }, [tug])\n\n const confirmDelete = async () => {\n const result = await deleteTug(club, tugID);\n\n if(result.statusCode !== 200) {\n await refreshTugList()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Tug deleted successfully\"\n })\n closeModal()\n } else {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not delete tug\"\n })\n }\n\n setIsDeleting(false); \n }\n\n async function deleteRecord() {\n setIsDeleting(true); // Start button spinner\n sendConfirmModal({\n heading: \"Delete Tug?\",\n body: <>This function has been disabled.<br /> Consider setting to <strong>Not Ready</strong> instead.<br /><br /> Contact TakeUpSlack support for further assistance.</>,\n confirmText: \"Delete\",\n rejectText: \"Cancel\",\n confirmColor: \"danger\",\n confirmDisabled: true,\n confirm: confirmDelete,\n reject: () => setIsDeleting(false)\n })\n }\n\n async function updateTugRecord() {\n setIsLoading(true);\n // Build up body for API Call\n let data = {}\n if (tugPlaces !== tug.places) {\n data.places = tugPlaces;\n }\n if (tugStatus !== tug.status) {\n data.status = tugStatus;\n }\n if (tugType !== tug.aircraftType) {\n data.aircraftType = tugType;\n }\n const body = {\n club: club,\n type: \"TUG\",\n id: (tugID !== \"new\" ? tugID : tugRegistration),\n data: data,\n };\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {\"body\": body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update tug\"\n })\n } else {\n await refreshTugList()\n sendToast({\n status: NotificationStatus.Success,\n message: tugID !== \"new\" ? \"Tug updated successfully\" : \"Tug created successfully\"\n })\n closeModal()\n }\n }\n\n useEffect(() => {\n if(!tug || !tug.SK) return;\n\n setTugID(tug.SK)\n if (tug.SK !== \"new\") {\n setTugType(tug.aircraftType);\n setTugPlaces(tug.places);\n setTugStatus(tug.status);\n } else {\n setTugType(\"\");\n setTugPlaces(1);\n setTugStatus(\"Not ready\");\n }\n\n setIsLoading(false);\n setIsDeleting(false);\n }, [tug])\n\n const tugHasChanged = useMemo(() => {\n return (tugPlaces !== tug.places) ||\n (tugStatus !== tug.status) ||\n (tugType !== tug.aircraftType)\n }, [ tugPlaces, tugStatus, tugType, tug]);\n\n\n return (\n <Modal show={showModal} onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <FormGroup className=\"d-flex flex-column gap-3\" controlId=\"tugInfo\" size=\"lg\">\n { tugID === \"new\" && \n <>\n <span className=\"fs-5 fw-semibold\"><b>WARNING:</b> Registration cannot be changed once entered</span>\n <InputGroup>\n <InputGroup.Text>Registration</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={tugRegistration}\n onChange={e => setTugRegistration(e.target.value)}\n />\n </InputGroup>\n </>\n }\n <InputGroup>\n <InputGroup.Text>Aircraft type: </InputGroup.Text>\n <FormControl\n type=\"text\"\n value={tugType}\n onChange={e => setTugType(e.target.value)}\n />\n </InputGroup>\n <FormGroup onChange={(e) => setTugPlaces(parseFloat(e.target.value))}>\n <div className=\"d-flex gap-2\">\n <span>Seats:</span> \n <input type=\"radio\" id=\"places1\" value=\"1\" name=\"tugSeatGroup\" onChange={setTugPlaces} checked={tugPlaces===1} />\n <label htmlFor=\"places1\">1</label>\n <input type=\"radio\" id=\"places2\" value=\"2\" name=\"tugSeatGroup\" onChange={setTugPlaces} checked={tugPlaces===2} />\n <label htmlFor=\"places2\">2</label>\n <input type=\"radio\" id=\"places3\" value=\"3\" name=\"tugSeatGroup\" onChange={setTugPlaces} checked={tugPlaces===3} />\n <label htmlFor=\"places3\">3</label>\n <input type=\"radio\" id=\"places4\" value=\"4\" name=\"tugSeatGroup\" onChange={setTugPlaces} checked={tugPlaces===4} />\n <label htmlFor=\"places4\">4</label>\n </div>\n </FormGroup>\n <span className=\"fs-5 fw-semibold\">Current status: {tug.status}</span>\n <FormGroup className=\"d-flex gap-2\" onChange={(e) => setTugStatus(e.target.value)}>\n <span>Reset to:</span>\n <input type=\"radio\" name=\"statusGroup\" id=\"statusNotReady\" onChange={setTugStatus} checked={tugStatus===\"Not ready\"} value=\"Not ready\"/>\n <label htmlFor=\"statusNotReady\">Not ready</label>\n <input type=\"radio\" name=\"statusGroup\" id=\"statusReady\" onChange={setTugStatus} checked={tugStatus===\"Ready\"} value=\"Ready\"/>\n <label htmlFor=\"statusReady\">Ready</label>\n </FormGroup>\n </FormGroup> \n {tugHasChanged && \n <>\n <hr></hr>\n <div className=\"fs-5 mb-2 fw-semibold\">Confirm the following changes to tug {tugID}</div>\n <ol className=\"mb-0\">\n {(tugPlaces !== tug.places) && <li>Changed number of places to {tugPlaces}</li>}\n {(tugStatus !== tug.status) && <li>Status changed to {tugStatus}</li>}\n {(tugType !== tug.aircraftType) && <li>Aircraft type changed to {tugType}</li>}\n </ol>\n </>\n }\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row justify-content-between w-100\">\n <div>\n { (tugID !== \"new\") &&\n <LoaderButton type=\"button\" variant=\"danger\" isLoading={isDeleting} onClick={deleteRecord}>\n Delete Tug\n </LoaderButton>\n }\n </div>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={closeModal}>\n Cancel\n </Button>\n <LoaderButton type=\"button\" variant=\"primary\" isLoading={isLoading} onClick={updateTugRecord}>\n Save Changes\n </LoaderButton>\n </div>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}","\"use client\";\n\nimport * as React from 'react';\nexport function isAccordionItemSelected(activeEventKey, eventKey) {\n return Array.isArray(activeEventKey) ? activeEventKey.includes(eventKey) : activeEventKey === eventKey;\n}\nconst context = /*#__PURE__*/React.createContext({});\ncontext.displayName = 'AccordionContext';\nexport default context;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Collapse from './Collapse';\nimport AccordionContext, { isAccordionItemSelected } from './AccordionContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * This component accepts all of [`Collapse`'s props](/docs/utilities/transitions#collapse-1).\n */\nconst AccordionCollapse = /*#__PURE__*/React.forwardRef(({\n as: Component = 'div',\n bsPrefix,\n className,\n children,\n eventKey,\n ...props\n}, ref) => {\n const {\n activeEventKey\n } = useContext(AccordionContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-collapse');\n return /*#__PURE__*/_jsx(Collapse, {\n ref: ref,\n in: isAccordionItemSelected(activeEventKey, eventKey),\n ...props,\n className: classNames(className, bsPrefix),\n children: /*#__PURE__*/_jsx(Component, {\n children: React.Children.only(children)\n })\n });\n});\nAccordionCollapse.displayName = 'AccordionCollapse';\nexport default AccordionCollapse;","\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext({\n eventKey: ''\n});\ncontext.displayName = 'AccordionItemContext';\nexport default context;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionItemContext from './AccordionItemContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionBody = /*#__PURE__*/React.forwardRef(({\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 bsPrefix,\n className,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-body');\n const {\n eventKey\n } = useContext(AccordionItemContext);\n return /*#__PURE__*/_jsx(AccordionCollapse, {\n eventKey: eventKey,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n })\n });\n});\nAccordionBody.displayName = 'AccordionBody';\nexport default AccordionBody;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport classNames from 'classnames';\nimport AccordionContext, { isAccordionItemSelected } from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useAccordionButton(eventKey, onClick) {\n const {\n activeEventKey,\n onSelect,\n alwaysOpen\n } = useContext(AccordionContext);\n return e => {\n /*\n Compare the event key in context with the given event key.\n If they are the same, then collapse the component.\n */\n let eventKeyPassed = eventKey === activeEventKey ? null : eventKey;\n if (alwaysOpen) {\n if (Array.isArray(activeEventKey)) {\n if (activeEventKey.includes(eventKey)) {\n eventKeyPassed = activeEventKey.filter(k => k !== eventKey);\n } else {\n eventKeyPassed = [...activeEventKey, eventKey];\n }\n } else {\n // activeEventKey is undefined.\n eventKeyPassed = [eventKey];\n }\n }\n onSelect == null || onSelect(eventKeyPassed, e);\n onClick == null || onClick(e);\n };\n}\nconst AccordionButton = /*#__PURE__*/React.forwardRef(({\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 bsPrefix,\n className,\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-button');\n const {\n eventKey\n } = useContext(AccordionItemContext);\n const accordionOnClick = useAccordionButton(eventKey, onClick);\n const {\n activeEventKey\n } = useContext(AccordionContext);\n if (Component === 'button') {\n props.type = 'button';\n }\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n onClick: accordionOnClick,\n ...props,\n \"aria-expanded\": Array.isArray(activeEventKey) ? activeEventKey.includes(eventKey) : eventKey === activeEventKey,\n className: classNames(className, bsPrefix, !isAccordionItemSelected(activeEventKey, eventKey) && 'collapsed')\n });\n});\nAccordionButton.displayName = 'AccordionButton';\nexport default AccordionButton;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionButton from './AccordionButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionHeader = /*#__PURE__*/React.forwardRef(({\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 = 'h2',\n 'aria-controls': ariaControls,\n bsPrefix,\n className,\n children,\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-header');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n children: /*#__PURE__*/_jsx(AccordionButton, {\n onClick: onClick,\n \"aria-controls\": ariaControls,\n children: children\n })\n });\n});\nAccordionHeader.displayName = 'AccordionHeader';\nexport default AccordionHeader;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionItemContext from './AccordionItemContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionItem = /*#__PURE__*/React.forwardRef(({\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 bsPrefix,\n className,\n eventKey,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-item');\n const contextValue = useMemo(() => ({\n eventKey\n }), [eventKey]);\n return /*#__PURE__*/_jsx(AccordionItemContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n })\n });\n});\nAccordionItem.displayName = 'AccordionItem';\nexport default AccordionItem;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionBody from './AccordionBody';\nimport AccordionButton from './AccordionButton';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionContext from './AccordionContext';\nimport AccordionHeader from './AccordionHeader';\nimport AccordionItem from './AccordionItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Accordion = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\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 activeKey,\n bsPrefix,\n className,\n onSelect,\n flush,\n alwaysOpen,\n ...controlledProps\n } = useUncontrolled(props, {\n activeKey: 'onSelect'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'accordion');\n const contextValue = useMemo(() => ({\n activeEventKey: activeKey,\n onSelect,\n alwaysOpen\n }), [activeKey, onSelect, alwaysOpen]);\n return /*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, prefix, flush && `${prefix}-flush`)\n })\n });\n});\nAccordion.displayName = 'Accordion';\nexport default Object.assign(Accordion, {\n Button: AccordionButton,\n Collapse: AccordionCollapse,\n Item: AccordionItem,\n Header: AccordionHeader,\n Body: AccordionBody\n});","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Button, Form, FormCheck, FormControl, FormGroup, InputGroup, Modal, Spinner, ToggleButtonGroup, ToggleButton, Row, Col } from \"react-bootstrap\";\nimport { Accordion } from \"react-bootstrap\";\nimport { RequestType, apiRequest, deletePilot, loadRecentPilotTransactions, getUserBlockBalances } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { DateTime } from \"luxon\";\nimport accountsMemberSchema from \"../containers/accounts member schema.json\";\nimport blockSchema from \"../containers/block schema.json\";\nimport LoaderButton from \"./LoaderButton\";\nimport Table from \"./Table\";\nimport \"./EditModal.css\"\nimport { formatTaxOptions } from \"../libs/utils\";\n\nconst transactionTypes = {\n Deposit: {\n name: \"Deposit\",\n successMsg: \"Funds added\",\n failMsg: \"Failed to add funds\",\n },\n Expense: {\n name: \"Expense\",\n successMsg: \"Expense recorded\",\n failMsg: \"Failed to record expense\",\n },\n Block: {\n name: \"Block\",\n successMsg: \"Block added\",\n failMsg: \"Failed to add block time to user\",\n },\n}\n\n\nexport default function EditPilotModal({showModal, closeModal, pilot, paymentMethods, refreshPilotList, blocks}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {userID, club, userIsAdmin, clubMembershipYearEnd, clubFeeList, userCanAddFunds, clubTaxRates, clubTimeZone} = useAppContext()\n\n const [pilotID, setPilotID] = useState(\"\");\n const [pilotFirst, setPilotFirst] = useState(\"\");\n const [pilotLast, setPilotLast] = useState(\"\");\n const [fundAdd, setFundAdd] = useState(0);\n const [fundNote, setFundNote] = useState(\"\");\n const [expenseAdd, setExpenseAdd] = useState(0);\n const [expenseNote, setExpenseNote] = useState(\"\");\n const [isInstructor, setIsInstructor] = useState(false);\n const [isTowPilot, setIsTowPilot] = useState(false);\n const [isAdmin, setIsAdmin] = useState(false);\n const [groundOnly, setGroundOnly] = useState(false);\n const [canAddFunds, setCanAddFunds] = useState(false);\n const [canUpdateGliders, setCanUpdateGliders] = useState(false);\n const [canAddIntros, setCanAddIntros] = useState(false);\n const [canEditLogs, setCanEditLogs] = useState(false);\n const [isActive, setIsActive] = useState(false);\n const [transactionRef, setTransactionRef] = useState(\"\");\n const [transferType, setTransferType] = useState(\"\");\n const [expenseType, setExpenseType] = useState(\"\");\n const [taxStatus, setTaxStatus] = useState(\"exempt\");\n const [taxList, setTaxList] = useState([]);\n const [feeType, setFeeType] = useState(\"\");\n const [block, setBlock] = useState(blocks[0]?.SK ?? \"\");\n const [blockPrice, setBlockPrice] = useState(blocks[0]?.blockPrice ?? 0);\n const [blockStartDate, setBlockStartDate] = useState(0);\n const [blockEndDate, setBlockEndDate] = useState(0);\n const [blockOverride, setBlockOverride] = useState(false);\n const [blockNote, setBlockNote] = useState(\"\");\n\n const [activeExpiration, setActiveExpiration] = useState(\"\")\n const [expirationEnabled, setExpirationEnabled] = useState(true)\n\n const [balance, setBalance] = useState(0);\n const [pilotTransactions, setPilotTransactions] = useState([]);\n const [blockBalances, setBlockBalances] = useState([]);\n const [loadingTransactions, setLoadingTransactions] = useState(false);\n const [loadingBlocks, setLoadingBlocks] = useState(false);\n const [submittingFunds, setSubmittingFunds] = useState(false);\n const [submittingExpenses, setSubmittingExpenses] = useState(false);\n const [submittingBlock, setSubmittingBlock] = useState(false);\n\n const [isDeleting, setIsDeleting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const modalTitle = useMemo(() => {\n if(!pilot) return \"Edit Pilot\";\n if(pilot.SK === \"new\") return \"Create New Pilot\"\n return (\n <div className=\"d-flex justify-content-between\">\n <div>{pilot.first} {pilot.last}, Balance: ${balance}</div>\n </div>\n );\n }, [pilot, balance])\n\n\n const confirmDelete = async () => {\n const result = await deletePilot(club, pilotID);\n\n if(result.statusCode !== 200) {\n await refreshPilotList()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Launch deleted successfully\"\n })\n closeModal()\n } else {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not delete launch\"\n })\n }\n\n setIsDeleting(false); \n }\n\n async function deleteRecord() {\n setIsDeleting(true); // Start button spinner\n sendConfirmModal({\n heading: \"Delete Pilot?\",\n body: <>This function has been disabled.<br /> Consider deselecting <strong>Active</strong> under qualifications instead.<br /><br /> Contact TakeUpSlack support for further assistance.</>,\n confirmText: \"Delete\",\n rejectText: \"Cancel\",\n confirmColor: \"danger\",\n confirmDisabled: true,\n confirm: confirmDelete,\n reject: () => setIsDeleting(false)\n })\n }\n\n async function updateRecord() {\n setIsLoading(true);\n\n // Build up body for API Call\n let data = {}\n if (isInstructor !== pilot.isInstructor) {\n data.isInstructor = isInstructor;\n }\n if (isTowPilot !== pilot.isTowPilot) {\n data.isTowPilot = isTowPilot;\n }\n if (isAdmin !== pilot.isAdmin) {\n data.isAdmin = isAdmin;\n }\n if (isActive !== pilot.isActive) {\n data.isActive = isActive;\n }\n if (groundOnly !== pilot.groundOnly) {\n data.groundOnly = groundOnly;\n }\n if (canEditLogs !== pilot.canEditLogs) {\n data.canEditLogs = canEditLogs;\n }\n if (canAddFunds !== pilot.canAddFunds) {\n data.canAddFunds = canAddFunds;\n }\n if (canAddIntros !== pilot.canAddIntros) {\n data.canAddIntros = canAddIntros;\n }\n if (canUpdateGliders !== pilot.canUpdateGliders) {\n data.canUpdateGliders = canUpdateGliders;\n } \n\n const activeExpirationDate = DateTime.fromISO(activeExpiration, {zone: clubTimeZone})\n if(activeExpirationDate.isValid && expirationEnabled && activeExpirationDate.toMillis() !== pilot.activeExpiration) {\n data.activeExpiration = activeExpirationDate.toMillis()\n } else if(!activeExpirationDate.isValid || !expirationEnabled){\n data.activeExpiration = null\n }\n\n const body = {\n club: club,\n type: \"PILOT\",\n id: pilotID,\n data: data,\n };\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: { \"body\": body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update pilot\"\n })\n } else {\n await refreshPilotList()\n sendToast({\n status: NotificationStatus.Success,\n message: pilotID !== \"new\" ? \"Pilot updated successfully\" : \"Pilot created successfully\"\n })\n closeModal()\n }\n loadBlocksforPilot(pilotID);\n setIsLoading(false)\n }\n\n const submitTransaction = async (e, type) => {\n e.preventDefault()\n let amount = 0;\n let note = \"\";\n if(type === transactionTypes.Deposit.name) {\n setSubmittingFunds(true);\n amount = fundAdd;\n note = fundNote;\n }\n if(type === transactionTypes.Expense.name) {\n setSubmittingExpenses(true);\n amount = expenseAdd;\n note = expenseNote;\n }\n if(type === transactionTypes.Block.name) {\n setSubmittingBlock(true);\n amount = blockPrice;\n note = blockNote;\n }\n\n // If adding money to the account record as a transaction record\n const amountNum = !isNaN(parseFloat(amount)) ? parseFloat(amount) : 0; \n if((type === transactionTypes.Deposit.name) && (amountNum < 0 )) {\n const message = \"You cannot add negative funds to an account\";\n sendAlert({\n status: NotificationStatus.Danger,\n message\n })\n } else {\n const body = {\n club: club,\n time: DateTime.fromObject({}, {zone: clubTimeZone}).toMillis(),\n by: userID,\n transactionType: type,\n note,\n amount: amountNum,\n pilot: pilot.SK,\n }\n\n if(type === transactionTypes.Deposit.name) {\n body.transferType = transferType\n body.transactionRef = transactionRef\n }\n\n if(type === transactionTypes.Expense.name) {\n body.feeType = feeType\n body.taxStatus = taxStatus\n const taxRates = taxList.map((e) => e.value)\n body.taxRates = taxRates\n }\n\n if(type === transactionTypes.Block.name){\n body.block = {\n id : block,\n startDate: blockStartDate,\n endDate: blockEndDate,\n override: blockOverride,\n }\n }\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/add-transaction/\", options: {\"body\": body}}\n )\n if(result.statusCode !== 200) {\n const message = transactionTypes[type].failMsg;\n sendAlert({\n status: NotificationStatus.Danger,\n message\n })\n } else {\n const message = transactionTypes[type].successMsg\n sendToast({\n status: NotificationStatus.Success,\n message\n })\n resetForm(type);\n loadTransactionsForPilot(pilot.SK);\n loadBlocksforPilot(pilot.SK);\n }\n } \n \n if(type === transactionTypes.Deposit.name) {\n setSubmittingFunds(false);\n }\n if(type === transactionTypes.Expense.name) {\n setSubmittingExpenses(false);\n }\n if(type === transactionTypes.Block.name) {\n setSubmittingBlock(false);\n }\n }\n\n const setBlockStartfromClub = useMemo(() => {\n const now = DateTime.now();\n let startDate = DateTime.fromMillis(clubMembershipYearEnd).startOf('day').plus({day:1}) || DateTime.now();\n startDate = startDate.set({year: now.year})\n if (startDate > now.plus({'months': 3})) {\n startDate = startDate.set({year: now.year-1});\n }\n return startDate\n }, [clubMembershipYearEnd]);\n \n const setBlockType = useCallback(async (block) => {\n setBlock(block);\n const blockInfo = blocks.find((a) => a.SK === block)\n setBlockPrice(blockInfo.blockPrice || 0);\n const startDate = setBlockStartfromClub;\n const endDate = startDate.plus({'year':1}).minus({day:1}).endOf('day')\n setBlockStartDate(startDate.toISODate());\n setBlockEndDate(endDate.toISODate());\n },[setBlockStartfromClub, blocks]);\n\n const resetForm = useCallback(async (type) => {\n if(type === transactionTypes.Deposit.name){\n setFundAdd(0);\n setFundNote(\"\");\n setTransactionRef(\"\");\n } else if (type === transactionTypes.Expense.name) {\n setExpenseAdd(0);\n setExpenseNote(\"\");\n setTransactionRef(\"\");\n } else if (type === transactionTypes.Block.name) {\n if (blocks.length > 0) {\n setBlockType(blocks[0].SK);\n } else {\n setBlock(\"\");\n setBlockPrice(0);\n setBlockStartDate(0);\n setBlockEndDate(0);\n }\n setBlockOverride(false);\n setBlockNote(\"\");\n }\n }, [blocks, setBlockType]);\n \n const loadTransactionsForPilot = useCallback(async (id) => {\n if(!id) return\n\n setLoadingTransactions(true)\n const transactionRecords = await loadRecentPilotTransactions(club, id);\n\n if(transactionRecords.length < 1) return\n \n const transactions = transactionRecords.transactions.map((transaction) => {\n const amount = transaction.amount || 0;\n const balance = transaction.balance || 0;\n const date = DateTime.fromMillis(transaction.date, {zone: clubTimeZone}).toISODate()\n\n return({\n \"id\": transaction.id,\n \"date\": date,\n \"description\": transaction.description,\n \"amount\": amount.toFixed(2),\n \"balance\": balance.toFixed(2),\n })\n });\n\n setBalance(transactionRecords.balance.toFixed(2));\n\n setPilotTransactions(transactions.slice(1));\n setLoadingTransactions(false)\n }, [club, clubTimeZone])\n\n const loadBlocksforPilot = useCallback(async (id) => {\n if(!id) return\n\n setLoadingBlocks(true);\n setBlockBalances([]);\n getUserBlockBalances(club, id).then((blockBalances) => {\n if (blockBalances.length < 1) return\n blockBalances.sort((a, b) => a.blockStarts.localeCompare(b.blockStarts));\n const blockInfo = blockBalances.map((block) => {\n const balance = block.blockUnits !== 'unlimited' ? `${block.blockBalance} ${block.blockUnits}` : 'Unlimited'\n \n return({\n \"id\": block.blockId,\n \"name\": block.blockName,\n \"startDate\": block.blockStarts,\n \"endDate\": block.blockExpires,\n \"balance\": balance,\n })\n });\n setBlockBalances(blockInfo);\n });\n setLoadingBlocks(false);\n }, [club])\n\n useEffect(() => {\n if(!pilot || !pilot.SK) return;\n\n setPilotID(pilot.SK)\n loadTransactionsForPilot(pilot.SK)\n loadBlocksforPilot(pilot.SK)\n setPilotFirst(pilot.first);\n setPilotLast(pilot.last);\n setFundAdd(0);\n setFundNote(\"\");\n setTransferType(paymentMethods[0] || \"\")\n setFeeType(clubFeeList[0] || \"\")\n setIsInstructor(\"isInstructor\" in pilot ? pilot.isInstructor : false);\n setIsTowPilot(\"isTowPilot\" in pilot ? pilot.isTowPilot : false);\n setIsAdmin(\"isAdmin\" in pilot ? pilot.isAdmin : false);\n setGroundOnly(\"groundOnly\" in pilot ? pilot.groundOnly : false);\n setCanAddFunds(\"canAddFunds\" in pilot ? pilot.canAddFunds : false);\n setCanUpdateGliders(\"canUpdateGliders\" in pilot ? pilot.canUpdateGliders : false);\n setCanAddIntros(\"canAddIntros\" in pilot ? pilot.canAddIntros : false);\n setCanEditLogs(\"canEditLogs\" in pilot ? pilot.canEditLogs : false);\n setIsActive(\"isActive\" in pilot ? pilot.isActive : false);\n\n resetForm(transactionTypes.Deposit.name)\n resetForm(transactionTypes.Expense.name)\n resetForm(transactionTypes.Block.name)\n\n const activeExpirationDate = DateTime.fromMillis(pilot.activeExpiration ?? Number.NaN, {zone: clubTimeZone})\n if(activeExpirationDate.isValid){\n setExpirationEnabled(true)\n setActiveExpiration(activeExpirationDate.toISODate())\n } else {\n setExpirationEnabled(false)\n if(clubMembershipYearEnd != null){\n const yearEndDate = DateTime.fromMillis(clubMembershipYearEnd, {zone: clubTimeZone})\n setActiveExpiration(yearEndDate.toISODate())\n } else {\n setActiveExpiration(\"\")\n }\n }\n\n setIsLoading(false);\n setIsDeleting(false);\n }, [pilot, paymentMethods, clubFeeList, clubTimeZone, clubMembershipYearEnd, loadTransactionsForPilot, loadBlocksforPilot, resetForm]);\n\n const hasChanged = useMemo(() => {\n return (isInstructor !== pilot.isInstructor) ||\n (isTowPilot !== pilot.isTowPilot) ||\n (isAdmin !== pilot.isAdmin) ||\n (groundOnly !== pilot.groundOnly) ||\n (canAddFunds !== pilot.canAddFunds) ||\n (canAddIntros !== pilot.canAddIntros) ||\n (canUpdateGliders !== pilot.canUpdateGliders) ||\n (canEditLogs !== pilot.canEditLogs) ||\n (isActive !== pilot.isActive)\n }, [pilot, isInstructor, isTowPilot, isAdmin, groundOnly, canAddFunds, canAddIntros, canUpdateGliders, canEditLogs, isActive])\n\n const formCheckLabel = (title, id) => {\n return <label htmlFor={id}>{title}</label>\n }\n\n const feeList = useMemo(() => {\n return Array.isArray(clubFeeList) ? clubFeeList : []\n }, [clubFeeList])\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n\n const taxSelectRenderer = (selected) => {\n if(selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].value\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n function nextSeason() {\n const startDate = DateTime.fromISO(blockStartDate).plus({year: 1});\n const endDate = startDate.plus({'year':1}).minus({day:1}).endOf('day')\n setBlockStartDate(startDate.toISODate());\n setBlockEndDate(endDate.toISODate());\n }\n\n function resetSeason() {\n const startDate = setBlockStartfromClub;\n const endDate = startDate.plus({'year':1}).minus({day:1}).endOf('day')\n setBlockStartDate(startDate.toISODate());\n setBlockEndDate(endDate.toISODate());\n }\n\n function prevSeason() {\n const startDate = DateTime.fromISO(blockStartDate).startOf('day').minus({year: 1});\n const endDate = startDate.plus({'year':1}).minus({day:1}).endOf('day')\n setBlockStartDate(startDate.toISODate());\n setBlockEndDate(endDate.toISODate());\n }\n\n const renderAddFunds = () => {\n return (\n <Form onSubmit={(e) => submitTransaction(e, transactionTypes.Deposit.name)}>\n <FormGroup className=\"d-flex flex-column gap-3\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Transaction type:</InputGroup.Text>\n <FormControl id=\"transaction type\" as=\"select\" value={transferType} onChange={e => setTransferType(e.target.value)}>\n {(paymentMethods.length === 0) && <option key=\"none\" value=\"none\">None</option>}\n { paymentMethods.map((item) =>\n <option key={item} value={item}> {item} </option>\n )}\n </FormControl>\n </InputGroup>\n { (transferType === \"expense\") ? (\n <InputGroup>\n <InputGroup.Text>Expense type:</InputGroup.Text>\n <FormControl id=\"expense type\" as=\"select\" value={expenseType} onChange={e => setExpenseType(e.target.value)}>\n <option key=\"60510\" value=\"60510\">Field maintenance</option>\n <option key=\"60520\" value=\"60520\">Clubhouse supplies</option>\n <option key=\"60530\" value=\"60530\">Glider Maintenance</option>\n <option key=\"60900\" value=\"60900\">Other</option>\n </FormControl>\n </InputGroup>\n ) : (\n <InputGroup>\n <InputGroup.Text>Transaction reference:</InputGroup.Text>\n <FormControl\n id=\"transaction reference\"\n type=\"text\"\n value={transactionRef}\n onChange={e => setTransactionRef(e.target.value)}\n />\n </InputGroup>\n )\n }\n <InputGroup>\n <InputGroup.Text>$</InputGroup.Text>\n <FormControl\n id=\"fundAdd\"\n type=\"text\"\n inputMode=\"decimal\"\n min=\"0\"\n as=\"input\"\n value={fundAdd}\n onChange={e => setFundAdd(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Note:</InputGroup.Text>\n <FormControl\n id=\"fundNote\"\n type=\"text\"\n value={fundNote}\n onChange={e => setFundNote(e.target.value)}\n />\n </InputGroup>\n <LoaderButton \n isLoading={submittingFunds}\n type=\"submit\"\n disabled={Number.isNaN(parseFloat(fundAdd)) || parseFloat(fundAdd) === 0}\n >Submit</LoaderButton>\n </FormGroup>\n </Form>\n )\n }\n\n const renderRecordExpenses = () => {\n return (\n <Form onSubmit={(e) => submitTransaction(e, transactionTypes.Expense.name)}>\n <FormGroup className=\"d-flex flex-column gap-3\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Other charges:</InputGroup.Text>\n <FormControl id=\"other charges\" as=\"select\" value={feeType} onChange={e => setFeeType(e.target.value)}>\n {(feeList.length === 0) && <option key=\"none\" value=\"none\">None</option>}\n { feeList.map((item) =>\n <option key={item} value={item}> {item} </option>\n )}\n </FormControl>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Fee:</InputGroup.Text>\n <InputGroup.Text>$</InputGroup.Text>\n <FormControl\n id=\"expenseAdd\"\n type=\"text\"\n inputMode=\"decimal\"\n min=\"0\"\n as=\"input\"\n value={expenseAdd}\n onChange={e => setExpenseAdd(e.target.value)}\n />\n </InputGroup>\n <ToggleButtonGroup name=\"taxStatusCheck\" className=\"flex-wrap\" type=\"radio\" value={taxStatus} onChange={(e) => setTaxStatus(e)}>\n <InputGroup.Text>Tax Status:</InputGroup.Text>\n <ToggleButton id=\"exempt\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exempt\">Tax Exempt</ToggleButton>\n <ToggleButton id=\"inclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"inclusive\">Tax Inclusive</ToggleButton>\n <ToggleButton id=\"exclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exclusive\">Tax Exclusive</ToggleButton>\n </ToggleButtonGroup>\n {taxStatus !== \"exempt\" &&\n <InputGroup>\n <InputGroup.Text>Applicable Taxes:</InputGroup.Text>\n <MultiSelect\n id=\"taxList\"\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={taxOptions}\n value={taxList}\n onChange={setTaxList}\n valueRenderer={taxSelectRenderer}\n />\n </InputGroup>\n }\n <InputGroup>\n <InputGroup.Text>Note:</InputGroup.Text>\n <FormControl\n id=\"expenseNote\"\n type=\"text\"\n value={expenseNote}\n onChange={e => setExpenseNote(e.target.value)}\n />\n </InputGroup>\n <LoaderButton \n isLoading={submittingExpenses}\n type=\"submit\"\n disabled={Number.isNaN(parseFloat(expenseAdd)) || parseFloat(expenseAdd) === 0}\n >Submit</LoaderButton>\n </FormGroup>\n </Form>\n )\n }\n\n const renderBlockTime = () => {\n return (\n <Form onSubmit={(e) => submitTransaction(e, transactionTypes.Block.name)}>\n <FormGroup className=\"d-flex flex-column gap-3\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Block:</InputGroup.Text>\n <FormControl id=\"other charges\" as=\"select\" value={block} onChange={e => setBlockType(e.target.value)}>\n {(blocks.length === 0) && <option key=\"none\" value=\"none\">None</option>}\n { blocks.map((item) =>\n <option key={item.SK} value={item.SK}> {item.name} - ${item.blockPrice} </option>\n )}\n </FormControl>\n </InputGroup>\n { blockOverride &&\n <InputGroup>\n <InputGroup.Text>Fee override:</InputGroup.Text>\n <InputGroup.Text>$</InputGroup.Text>\n <FormControl\n id=\"blockFee\"\n type=\"text\"\n inputMode=\"decimal\"\n min=\"0\"\n as=\"input\"\n value={blockPrice}\n onChange={e => setBlockPrice(e.target.value)}\n />\n </InputGroup>\n }\n <InputGroup>\n <InputGroup.Text>Start:</InputGroup.Text>\n <FormControl\n id=\"activateDate\"\n type=\"date\"\n value={blockStartDate}\n disabled = {!blockOverride}\n onChange={e => setBlockStartDate(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>End:</InputGroup.Text>\n <FormControl\n id=\"endDate\"\n type=\"date\"\n value={blockEndDate}\n disabled = {!blockOverride}\n onChange={e => setBlockEndDate(e.target.value)}\n />\n </InputGroup>\n <Row className=\"justify-content-between\">\n <Col xs=\"3\">\n <div className=\"d-grid\">\n <Button variant=\"outline-secondary\" type=\"button\" \n onClick = {prevSeason}>\n <h4>Prior Year</h4>\n </Button>\n </div>\n </Col>\n <Col xs=\"4\">\n <div className=\"d-grid\">\n <Button variant=\"outline-secondary\" type=\"button\"\n onClick = {resetSeason}>\n <h4>Reset Season</h4>\n </Button>\n </div>\n </Col>\n <Col xs=\"3\">\n <div className=\"d-grid\">\n <Button variant=\"outline-secondary\" type=\"button\"\n onClick = {nextSeason}>\n <h4>Next Year</h4>\n </Button>\n </div>\n </Col>\n </Row>\n <InputGroup>\n <InputGroup.Text>Note:</InputGroup.Text>\n <FormControl\n id=\"blockNote\"\n type=\"text\"\n value={blockNote}\n onChange={e => setBlockNote(e.target.value)}\n />\n </InputGroup>\n <FormGroup className=\"d-flex flex-column\" size=\"lg\">\n <FormCheck checked={blockOverride} onChange={() => setBlockOverride(!blockOverride)} id=\"override\" label={formCheckLabel(\"Override block settings\", \"override\")}/>\n </FormGroup>\n <LoaderButton \n isLoading={submittingBlock}\n type=\"submit\"\n disabled={blockStartDate === 0 || blockEndDate === 0}\n >Submit</LoaderButton> \n </FormGroup>\n </Form>\n )\n }\n\n const renderChangeQualifications = () => {\n return (\n <Form>\n <FormGroup className=\"d-flex flex-column\" size=\"lg\">\n <FormCheck checked={isInstructor} onChange={() => setIsInstructor(!isInstructor)} id=\"qual1\" label={formCheckLabel(\"Instructor\", \"qual1\")}/>\n <FormCheck checked={isTowPilot} onChange={() => setIsTowPilot(!isTowPilot)} id=\"qual2\" label={formCheckLabel(\"Tow Pilot\", \"qual2\")}/>\n <FormCheck checked={isAdmin} onChange={() => setIsAdmin(!isAdmin)} id=\"qual3\" label={formCheckLabel(\"Admin\", \"qual3\")}/>\n <FormCheck checked={canAddFunds} onChange={() => setCanAddFunds(!canAddFunds)} id=\"qual4\" label={formCheckLabel(\"Can Add User Funds\", \"qual4\")}/>\n <FormCheck checked={canAddIntros} onChange={() => setCanAddIntros(!canAddIntros)} id=\"qual5\" label={formCheckLabel(\"Can Add Intro Certificates\", \"qual5\")}/>\n <FormCheck checked={canUpdateGliders} onChange={() => setCanUpdateGliders(!canUpdateGliders)} id=\"qual6\" label={formCheckLabel(\"Can Update Gliders\", \"qual6\")}/>\n <FormCheck checked={canEditLogs} onChange={() => setCanEditLogs(!canEditLogs)} id=\"qual7\" label={formCheckLabel(\"Can Edit Flight Logs\", \"qual7\")}/>\n <FormCheck checked={groundOnly} onChange={() => setGroundOnly(!groundOnly)} id=\"qual10\" label={formCheckLabel(\"Ground only member\", \"qual10\")}/>\n <InputGroup className=\"d-flex flex-column flex-sm-row justify-content-between align-items-sm-center align-items-start\">\n <FormCheck checked={isActive} onChange={() => setIsActive(!isActive)} id=\"qual8\" label={formCheckLabel(\"Active\", \"qual8\")}/>\n {isActive &&\n <div className=\"w-sm-auto d-flex flex-sm-row align-items-sm-center align-items-start gap-2 flex-column justify-content-between px-4\">\n <span className=\"text-nowrap\">Active status expires on:</span>\n <div className=\"d-flex flex-row gap-2 w-100 align-items-center\">\n {expirationEnabled && <FormControl className={activationIsExpired ? \"bg-warning\" : \"\"} id=\"active-expiration-date\" type=\"date\" value={activeExpiration} onChange={(e) => setActiveExpiration(e.target.value)} />}\n {!expirationEnabled && <FormControl id=\"active-expiration-placeholder\" type=\"text\" placeholder=\"Never\" disabled={true} />}\n <FormCheck\n className=\"h-100\"\n type=\"switch\"\n checked={expirationEnabled}\n onChange={() => setExpirationEnabled((ee) => !ee)}\n />\n </div>\n </div>\n }\n </InputGroup>\n {hasChanged &&\n <>\n <br></br>\n <h4>Confirm the following changes to user {pilotFirst} {pilotLast}</h4>\n <ol className=\"mb-0\">\n {(isInstructor !== pilot.isInstructor) && \n <li>Changed Instructor rating to {isInstructor ? \"true\" : \"false\"}</li>}\n {(isTowPilot !== pilot.isTowPilot) && \n <li>Changed Tow Pilot rating to {isTowPilot ? \"true\" : \"false\"}</li>}\n {(isAdmin !== pilot.isAdmin) && \n <li>Changed Administrator rating to {isAdmin ? \"true\" : \"false\"}</li>}\n {(canAddFunds !== pilot.canAddFunds) && \n <li>Changed permission to add funds to {canAddFunds ? \"true\" : \"false\"}</li>}\n {(canAddIntros !== pilot.canAddIntros) && \n <li>Changed permission to add intro certificates {canAddIntros ? \"true\" : \"false\"}</li>}\n {(canUpdateGliders !== pilot.canUpdateGliders) && \n <li>Changed permission to update gliders to {canUpdateGliders ? \"true\" : \"false\"}</li>}\n {(canEditLogs !== pilot.canEditLogs) && \n <li>Changed permission to update flight logs to {canEditLogs ? \"true\" : \"false\"}</li>}\n {(isActive !== pilot.isActive) && \n <li>Changed status at club to {isActive ? \"active\" : \"inactive\"}</li>}\n {(groundOnly !== pilot.groundOnly) && \n <li>Changed permissions at club to {groundOnly ? \"ground only\" : \"flying\"}</li>}\n </ol>\n <br></br>\n <LoaderButton type=\"button\" variant=\"primary\" isLoading={isLoading} onClick={updateRecord}>\n Save Changes and Exit\n </LoaderButton>\n </>\n }\n </FormGroup>\n </Form>\n )\n }\n\n const activationIsExpired = useMemo(() => {\n const expirationDate = DateTime.fromISO(activeExpiration, {zone: clubTimeZone}).startOf(\"day\")\n const today = DateTime.fromObject({}, {zone: clubTimeZone})\n return (today >= expirationDate)\n }, [activeExpiration, clubTimeZone])\n\n return (\n <Modal size=\"lg\" show={showModal} onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Accordion>\n {(userCanAddFunds || userIsAdmin) &&\n <>\n <Accordion.Item eventKey=\"Add Funds\">\n <Accordion.Header><div className=\"fs-5 fw-semibold\">Add Funds</div></Accordion.Header>\n <Accordion.Body>\n {renderAddFunds()}\n </Accordion.Body>\n </Accordion.Item>\n <Accordion.Item eventKey=\"Record Expense\">\n <Accordion.Header><div className=\"fs-5 fw-semibold\">Record Expense</div></Accordion.Header>\n <Accordion.Body>\n {renderRecordExpenses()}\n </Accordion.Body>\n </Accordion.Item>\n <Accordion.Item eventKey=\"Manage Block Time\">\n <Accordion.Header><div className=\"fs-5 fw-semibold\">Block Time</div></Accordion.Header>\n <Accordion.Body>\n {renderBlockTime()}\n <hr></hr>\n {loadingBlocks ?\n <div className=\"d-flex justify-content-center\"><Spinner /></div> :\n <><h3>Active blocks for pilot</h3>\n <Table headers={Object.values(blockSchema)} items={Object.keys(blockSchema)} rows={blockBalances} />\n </>\n }\n </Accordion.Body>\n </Accordion.Item>\n </>\n }\n {(userIsAdmin) &&\n <Accordion.Item eventKey=\"Change Qualifications\">\n <Accordion.Header><div className=\"fs-5 fw-semibold\">Change qualifications</div></Accordion.Header>\n <Accordion.Body>\n {renderChangeQualifications()}\n </Accordion.Body>\n </Accordion.Item>\n }\n </Accordion>\n {loadingTransactions ?\n <div className=\"d-flex justify-content-center\"><Spinner /></div> :\n <Accordion>\n <Accordion.Item eventKey=\"Recent Transactions\">\n <Accordion.Header><div className=\"fs-5 fw-semibold\">Recent transactions</div></Accordion.Header>\n <Accordion.Body>\n <Table headers={Object.values(accountsMemberSchema)} items={Object.keys(accountsMemberSchema)} rows={pilotTransactions} />\n </Accordion.Body>\n </Accordion.Item>\n </Accordion>\n }\n\n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"d-flex flex-row justify-content-between w-100\">\n <div>\n { (pilotID !== \"new\") &&\n <LoaderButton type=\"button\" variant=\"danger\" isLoading={isDeleting} onClick={deleteRecord}>\n Delete Pilot\n </LoaderButton>\n }\n </div>\n <div className=\"d-flex flex-row gap-2\">\n <Button variant=\"secondary\" onClick={closeModal}>\n Exit\n </Button>\n </div>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}","import React, { useState, useEffect } from \"react\";\nimport { Spinner, Button, Dropdown, Form, Nav} from \"react-bootstrap\";\nimport { Link } from \"react-router\";\nimport { onError } from \"../libs/errorLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./Test.css\";\nimport { loadPilots, returnPilot, returnGlider, returnBlock, returnLaunch, returnTug, loadGliders, loadBlocks, loadLaunches, loadTugs,\n loadIntroLaunches, loadAdminPayload} from \"../libs/databaseAccess\";\nimport \"./Admin.css\";\nimport EditGliderModal from \"../components/EditGliderModal\";\nimport EditBlockModal from \"../components/EditBlockModal\";\nimport EditLaunchModal from \"../components/EditLaunchModal\";\nimport EditIntroLaunchModal from \"../components/EditIntroLaunchModal\";\nimport EditTugModal from \"../components/EditTugModal\";\nimport EditPilotModal from \"../components/EditPilotModal\";\nimport { isUserActive } from \"../libs/utils\";\n\nexport default function Admin() {\n const {\n club,\n isAuthenticated,\n userIsAdmin,\n clubTimeZone,\n userCanAddFunds,\n userCanAddIntros,\n userCanUpdateGliders,\n } = useAppContext();\n\n const [isInitialLoading, setIsInitialLoading] = useState(true);\n const [pilots, setPilots] = useState([]);\n const [gliders, setGliders] = useState([]);\n const [blocks, setBlocks] = useState([]);\n const [launches, setLaunches] = useState([]);\n const [introLaunches, setIntroLaunches] = useState([]);\n const [tugs, setTugs] = useState([]);\n const [paymentMethods, setPaymentMethods] = useState([]);\n const [errorMsg, setErrorMsg] = useState(\"\")\n\n const [showGliderModal, setShowGliderModal] = useState(false)\n const [gliderToEdit, setGliderToEdit] = useState({})\n\n const [showBlockModal, setShowBlockModal] = useState(false)\n const [blockToEdit, setBlockToEdit] = useState({})\n \n const [showLaunchModal, setShowLaunchModal] = useState(false)\n const [launchToEdit, setLaunchToEdit] = useState({})\n \n const [showIntroModal, setShowIntroModal] = useState(false)\n const [introToEdit, setIntroToEdit] = useState({})\n\n const [showTugModal, setShowTugModal] = useState(false)\n const [tugToEdit, setTugToEdit] = useState({})\n \n const [showPilotModal, setShowPilotModal] = useState(false)\n const [pilotToEdit, setPilotToEdit] = useState({})\n\n //Methods\n const sortPilotList = (pilots) => {\n setPilots(pilots.sort((a, b) => (a.first+a.last).localeCompare(b.first+b.last)));\n }\n\n const sortBlockList = (blocks) => {\n if (!blocks) {\n setBlocks([]);\n } else {\n setBlocks(blocks.sort((a, b) => (a.SK).localeCompare(b.SK)));\n }\n }\n\n const sortLaunchList = (launches) => {\n setLaunches(launches.sort((a, b) => (a.SK).localeCompare(b.SK)));\n }\n\n const sortTugList = (tugs) => {\n setTugs(tugs.sort((a, b) => (a.SK).localeCompare(b.SK)));\n }\n\n const sortGliderList = (gliders) => {\n setGliders(gliders.sort((a, b) => (a.SK).localeCompare(b.SK)));\n }\n\n const sortIntroList = (intros) => {\n setIntroLaunches(intros.sort((a, b) => (a.SK).localeCompare(b.SK)));\n }\n\n const refreshPilotList = async () => {\n const pilots = await loadPilots(club);\n sortPilotList(pilots)\n }\n\n const refreshBlockList = async () => {\n const blocks = await loadBlocks(club);\n sortBlockList(blocks)\n }\n\n const refreshLaunchList = async () => {\n const launches = await loadLaunches(club);\n sortLaunchList(launches)\n }\n\n const refreshTugList = async () => {\n const tugs = await loadTugs(club);\n sortTugList(tugs)\n }\n\n const refreshGliderList = async () => {\n const gliders = await loadGliders(club);\n sortGliderList(gliders)\n }\n\n const refreshIntroList = async () => {\n const intros = await loadIntroLaunches(club);\n sortIntroList(intros)\n }\n\n useEffect(() => {\n if (!isAuthenticated || club === \"\") {\n return;\n }\n\n async function onLoad() {\n try {\n if(!userIsAdmin && !userCanAddFunds && !userCanAddIntros && !userCanUpdateGliders) {\n setErrorMsg(`User is not authorized (603)`)\n return\n }\n\n const result = await loadAdminPayload(club)\n\n if(result.statusCode !== 200){\n setErrorMsg(`Could not load content (${result.statusCode})`)\n return\n }\n\n const data = result.body;\n // Pull club specific info from DynamoDB\n if (userIsAdmin || userCanUpdateGliders) {\n sortGliderList(data.gliders)\n }\n\n if (userIsAdmin || userCanAddIntros) {\n // While userCanAddIntros does not allow definition of new intros, it needs to know that Intro types have been defined\n sortIntroList(data.intros)\n }\n \n if (userIsAdmin) {\n sortTugList(data.tugs)\n sortBlockList(data.blocks)\n sortLaunchList(data.launches)\n }\n\n if (userIsAdmin || userCanAddFunds) {\n sortPilotList(data.pilots)\n setPaymentMethods(data.paymentMethods);\n }\n\n setIsInitialLoading(false);\n } catch (e) {\n onError(e);\n }\n }\n\n onLoad();\n\n }, [\n isAuthenticated,\n club,\n userIsAdmin,\n userCanAddFunds,\n userCanUpdateGliders,\n userCanAddIntros\n ]);\n \n function startEditingPilot(id){\n const pilot = returnPilot(club, id, pilots);\n setPilotToEdit(pilot)\n setShowPilotModal(true)\n }\n\n function stopEditingPilot(){\n // The modal takes some time to fade out, so don't blank\n // the record until it has disappeared \n setTimeout(() => setPilotToEdit({}), 500)\n setShowPilotModal(false)\n }\n\n function startEditingGlider(id) {\n if (id !== \"new\") {\n const glider = returnGlider(club, id, gliders);\n setGliderToEdit(glider)\n } else {\n setGliderToEdit({SK: \"new\"})\n }\n setShowGliderModal(true)\n }\n\n function stopEditingGlider() {\n // The modal takes some time to fade out, so don't blank\n // the record until it has disappeared \n setTimeout(() => setGliderToEdit({}), 500)\n setShowGliderModal(false)\n }\n\n function startEditingBlock(id) {\n if (id !== \"new\") {\n const block = returnBlock(club, id, blocks);\n setBlockToEdit(block)\n } else {\n setBlockToEdit({SK: \"new\"})\n }\n setShowBlockModal(true)\n }\n\n function startEditingLaunch(id) {\n if (id !== \"new\") {\n const launch = returnLaunch(club, id, launches);\n setLaunchToEdit(launch)\n } else {\n setLaunchToEdit({SK: \"new\"})\n }\n setShowLaunchModal(true)\n }\n\n function stopEditingBlock() {\n // The modal takes some time to fade out, so don't blank\n // the record until it has disappeared \n setTimeout(() => setBlockToEdit({}), 500)\n setShowBlockModal(false)\n }\n\n function stopEditingLaunch() {\n // The modal takes some time to fade out, so don't blank\n // the record until it has disappeared \n setTimeout(() => setLaunchToEdit({}), 500)\n setShowLaunchModal(false)\n }\n\n function startEditingIntro(id) {\n if (id !== \"new\") {\n const launch = introLaunches.filter((a)=>(a.SK===id)).length>0 ? introLaunches.filter((a)=>(a.SK===id))[0] : {};\n setIntroToEdit(launch)\n } else {\n setIntroToEdit({SK: \"new\"})\n }\n setShowIntroModal(true)\n }\n\n function stopEditingIntro() {\n // The modal takes some time to fade out, so don't blank\n // the record until it has disappeared \n setTimeout(() => setIntroToEdit({}), 500)\n setShowIntroModal(false)\n }\n\n function startEditingTug(id) {\n if (id !== \"new\") {\n const tug = returnTug(club, id, tugs);\n setTugToEdit(tug)\n } else {\n setTugToEdit({SK: \"new\"})\n }\n setShowTugModal(true)\n }\n\n function stopEditingTug() {\n // The modal takes some time to fade out, so don't blank\n // the record until it has disappeared \n setTimeout(() => setTugToEdit({}), 500)\n setShowTugModal(false)\n }\n\n // Dropdown Rendering\n\n // Must use ForwardRef, Dropdown needs access to the DOM of the Menu to measure it\n const CustomPilotMenu = React.forwardRef(\n ({ children, style, className, 'aria-labelledby': labeledBy }, ref) => {\n const [searchStr, setSearchStr] = useState('');\n\n const normalizeString = (str) => {\n if(typeof str !== 'string') return ''\n return str.replace(/\\s/g,'').toLowerCase()\n }\n\n const filterChild = (child) =>{\n if(!searchStr) return true\n if([\".$active-header\", \".$inactive-header\"].includes(child.key)) return true\n const childStr = Array.isArray(child.props.children) ? child.props.children.join() : child.props.children\n if(normalizeString(childStr).includes(normalizeString(searchStr))) return true\n return false\n }\n\n return (\n <div ref={ref} style={style} className={className} aria-labelledby={labeledBy}>\n <Form.Control\n autoFocus\n className=\"mx-3 my-2 w-auto\"\n placeholder=\"Type to filter...\"\n onChange={(e) => setSearchStr(e.target.value)}\n value={searchStr}\n />\n <ul className=\"list-unstyled\">\n {React.Children.toArray(children).filter(\n (child) => filterChild(child)\n )}\n </ul>\n </div>\n );\n },\n );\n\n function renderPilots() {\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n Edit Pilot\n </Dropdown.Toggle>\n\n <Dropdown.Menu as={CustomPilotMenu} className=\"scrollable-dropdown\">\n <Dropdown.Header key=\"active-header\">Active Pilots</Dropdown.Header>\n {pilots.filter((a) => isUserActive(a, clubTimeZone)).map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingPilot(item.SK)} as=\"button\">\n {item.first} {item.last}\n </Dropdown.Item>\n )}\n <Dropdown.Header key=\"inactive-header\">Inactive Pilots</Dropdown.Header>\n {pilots.filter((a) => !isUserActive(a, clubTimeZone)).map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingPilot(item.SK)} as=\"button\">\n {item.first} {item.last}\n </Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n function renderGliders() {\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Button variant=\"success\" onClick = {() => startEditingGlider(\"new\")}>\n New Glider\n </Button>\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n Edit Glider\n </Dropdown.Toggle>\n\n <Dropdown.Menu className=\"scrollable-dropdown\">\n {gliders.map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingGlider(item.SK)} as=\"button\">{item.SK}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n function renderBlocks() {\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Button variant=\"success\" onClick = {() => startEditingBlock(\"new\")}>\n New Rule\n </Button>\n\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n Edit Rule\n </Dropdown.Toggle>\n\n <Dropdown.Menu className=\"scrollable-dropdown\">\n {blocks.map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingBlock(item.SK)} as=\"button\">{item.name}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n function renderLaunches() {\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Button variant=\"success\" onClick = {() => startEditingLaunch(\"new\")}>\n New Launch\n </Button>\n\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n Edit Launch\n </Dropdown.Toggle>\n\n <Dropdown.Menu className=\"scrollable-dropdown\">\n {launches.map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingLaunch(item.SK)} as=\"button\">{item.SK}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n function renderIntros() {\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Button variant=\"success\" onClick = {() => startEditingIntro(\"new\")}>\n New Intro Launch\n </Button>\n\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n Edit Intro Launch\n </Dropdown.Toggle>\n\n <Dropdown.Menu className=\"scrollable-dropdown\">\n {introLaunches.map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingIntro(item.SK)} as=\"button\">{item.SK}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n function renderTugs() {\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Button variant=\"success\" onClick = {() => startEditingTug(\"new\")}>\n New Tug\n </Button>\n\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n Edit Tug\n </Dropdown.Toggle>\n\n <Dropdown.Menu className=\"scrollable-dropdown\">\n {tugs.map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => startEditingTug(item.SK)} as=\"button\">{item.SK}</Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n // Render Admin Sections\n \n function renderUserAdmin(){\n return(\n <section>\n <EditPilotModal\n showModal={showPilotModal}\n closeModal={stopEditingPilot}\n pilot={pilotToEdit}\n refreshPilotList={refreshPilotList}\n paymentMethods={paymentMethods}\n blocks={blocks}\n />\n <h4 className=\"text-center\">User Administration</h4>\n <div className=\"Home\">\n {renderPilots()}\n </div>\n </section>\n )\n }\n\n function renderGliderAdmin(){\n return(\n <section>\n <EditGliderModal\n showModal={showGliderModal}\n closeModal={stopEditingGlider}\n glider={gliderToEdit}\n refreshGliderList={refreshGliderList}\n blocks={blocks}\n />\n <h4 className = \"centerHeader\">Glider Administration</h4>\n <div className=\"Home\">\n {renderGliders()}\n </div>\n </section>\n );\n }\n\n function renderBlockAdmin(){\n return(\n <section>\n <EditBlockModal\n showModal={showBlockModal}\n closeModal={stopEditingBlock}\n block={blockToEdit}\n refreshBlockList={refreshBlockList}\n />\n <h4 className = \"centerHeader\">Glider Rental Rate Rules</h4>\n <div className=\"Home\">\n {renderBlocks()}\n </div>\n </section>\n );\n }\n\n function renderLaunchAdmin(){\n return(\n <section>\n <EditLaunchModal\n showModal={showLaunchModal}\n closeModal={stopEditingLaunch}\n launch={launchToEdit}\n refreshLaunchList={refreshLaunchList}\n />\n <h4 className = \"centerHeader\">Launch Administration</h4>\n <div className=\"Home\">\n {renderLaunches()}\n </div>\n </section>\n );\n }\n\n function renderIntroLaunchAdmin(){\n return(\n <section>\n <EditIntroLaunchModal\n showModal={showIntroModal}\n closeModal={stopEditingIntro}\n intro={introToEdit}\n refreshIntroList={refreshIntroList}\n launches={launches}\n />\n <h4 className = \"centerHeader\">Intro Launch Administration</h4>\n <div className=\"Home\">\n {renderIntros()}\n </div>\n </section>\n );\n }\n\n function renderTugAdmin(){\n return(\n <section>\n <EditTugModal\n showModal={showTugModal}\n closeModal={stopEditingTug}\n tug={tugToEdit}\n refreshTugList={refreshTugList}\n />\n <h4 className = \"centerHeader\">Tug Administration</h4>\n <div className=\"Home\">\n {renderTugs()}\n </div>\n </section>\n );\n }\n\n function renderLoading() {\n return (\n <Spinner className=\"mt-4\" animation=\"border\" role=\"status\">\n <span className=\"visually-hidden\">Loading...</span>\n </Spinner>\n )\n }\n\n function renderError() {\n return (\n <p>Error: {errorMsg}</p>\n )\n }\n\n function renderIntroManagement() {\n return (\n <section className=\"d-flex flex-column gap-3\">\n <h4>Intro Management</h4>\n <Nav.Link as={Link} key=\"intro\" to=\"../intro\">\n <Button className=\"w-100\" variant=\"success\">New Intro Flight</Button>\n </Nav.Link>\n <Nav.Link as={Link} key=\"refund-intro\" to=\"../intro/refund/\">\n <Button className=\"w-100\" variant=\"secondary\">Refund Intro</Button>\n </Nav.Link>\n <Nav.Link as={Link} key=\"cancel-intro\" to=\"../intro/cancel/\">\n <Button className=\"w-100\" variant=\"secondary\">Cancel Intro</Button>\n </Nav.Link>\n </section>\n )\n }\n\n function renderActivities() {\n return (\n <main className=\"d-flex flex-column gap-3 mt-3\">\n {(userIsAdmin || userCanAddFunds) && renderUserAdmin()}\n {(userIsAdmin || userCanUpdateGliders) && renderGliderAdmin()}\n {(userIsAdmin) && renderLaunchAdmin()}\n {(userIsAdmin) && renderTugAdmin()}\n {(userIsAdmin) && renderBlockAdmin()}\n {(userIsAdmin) && renderIntroLaunchAdmin()}\n {(userIsAdmin) && <hr />}\n {(userIsAdmin || userCanAddIntros) && (introLaunches.length > 0) &&\n renderIntroManagement()\n }\n {(userIsAdmin) &&\n <section className=\"d-flex flex-column gap-3\">\n <h4>Exports</h4>\n <Nav.Link as={Link} key = \"export\" to = \"../export\">\n <Button className=\"w-100\" variant=\"secondary\">Club Data Exports</Button>\n </Nav.Link>\n </section> \n }\n </main>\n );\n }\n\n function renderPage() {\n if(errorMsg) {\n return renderError()\n }\n if(!isAuthenticated || isInitialLoading) {\n return renderLoading()\n }\n if(userIsAdmin || userCanAddFunds || userCanAddIntros || userCanUpdateGliders) {\n return renderActivities()\n }\n return renderError()\n }\n\n return (\n <div className=\"Home\">\n {renderPage()}\n </div>\n );\n}\n\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Form, InputGroup, Modal } from \"react-bootstrap\";\nimport LoaderButton from \"./LoaderButton\";\nimport { RequestType, apiRequest } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport \"./EditModal.css\"\nimport { DateTime } from \"luxon\";\n\n\nexport default function ReleaseHeightModal({showModal, closeModal, allPilots, flight, onSuccess}) {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const {club, clubTimeZone, userID, clubUnits} = useAppContext()\n\n const [isLoading, setIsLoading] = useState(false)\n const [releaseHeight, setReleaseHeight] = useState(0)\n\n const heightUnit = useMemo(() => {\n if(!clubUnits) return \" \"\n return clubUnits.height ? clubUnits.height.S : \"ft\" \n }, [clubUnits])\n\n const millisToTimeString = useCallback((millis) => {\n const date = DateTime.fromMillis(millis, {zone: clubTimeZone ?? 'utc'})\n return date.toLocaleString(DateTime.TIME_WITH_SECONDS)\n }, [clubTimeZone])\n\n const modalTitle = useMemo(() => {\n if(!flight || !flight.SK) return \"\"\n return `${flight.first} ${flight.last.slice(0,1)} in ${flight.glider} launched ${millisToTimeString(flight.launchedAt)}`\n }, [millisToTimeString, flight])\n\n const submitReleaseHeight = async (e) => {\n e.preventDefault()\n sendReleaseHeightUpdate(false)\n }\n\n const sendReleaseHeightUpdate = async (overwrite = false) => {\n const releaseHeightNum = parseInt(releaseHeight)\n if(Number.isNaN(releaseHeightNum) || releaseHeightNum === 0) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Must set a release height before submitting\"\n })\n return\n }\n\n setIsLoading(true)\n\n const dateNow = DateTime.fromObject({}, {zone: clubTimeZone})\n const body = {\n club,\n id: flight.SK,\n releaseHeight: releaseHeightNum,\n date: dateNow.toISODate(),\n time: dateNow.toMillis(),\n action: \"ReleaseHeight\",\n by: userID,\n overwrite\n }\n\n const result = await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-flight/\", options: {body}})\n if(result.statusCode === 200) {\n await onSuccess()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Successfully set release height\"\n })\n closeModal()\n } else if(result.statusCode === 409) {\n const releaseSetMember = allPilots[result.body.releaseSetBy] ?? {}\n const releaseSetName = releaseSetMember.SK ? `${releaseSetMember.first} ${releaseSetMember.last}` : \"Unknown\"\n confirmOverwrite(result.body.currentReleaseHeight, releaseSetName)\n } else {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Failed to set release height\"\n })\n }\n setIsLoading(false)\n }\n\n useEffect(() => {\n if(!flight.SK) return\n setReleaseHeight(0)\n }, [flight])\n\n const confirmOverwrite = (currentReleaseHeight, setByName) => {\n sendConfirmModal({\n heading: \"Release Height Already Set\",\n body: `${setByName} previously recorded this release at ${currentReleaseHeight} ${heightUnit}. Would you like to update the release height to ${releaseHeight} ${heightUnit}, or ignore?`,\n confirmText: \"Overwrite\",\n confirmColor: \"danger\",\n confirm: () => sendReleaseHeightUpdate(true),\n rejectText: \"Ignore\",\n reject: closeModal\n })\n }\n\n return (\n <Modal show={showModal} onHide={closeModal}>\n <Modal.Header closeButton>\n <Modal.Title>{modalTitle}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Form className=\"d-flex flex-column gap-3\" onSubmit={submitReleaseHeight}>\n <Form.Group>\n <Form.Label>Release Height:</Form.Label>\n <InputGroup>\n <Form.Control\n autoFocus\n as=\"input\"\n inputMode=\"numeric\"\n type=\"number\"\n value={releaseHeight}\n onChange={(e) => setReleaseHeight(e.target.value)}\n />\n <InputGroup.Text>{heightUnit}</InputGroup.Text>\n </InputGroup>\n </Form.Group>\n <LoaderButton className=\"w-100\" type=\"submit\" variant=\"primary\" isLoading={isLoading}>\n Submit\n </LoaderButton>\n </Form>\n </Modal.Body>\n </Modal>\n );\n}","import React, {useState, useEffect, useCallback, useMemo} from \"react\";\nimport { Alert, Spinner, FormGroup, FormControl, InputGroup, Button, ButtonGroup, ListGroup, Row, Col} from \"react-bootstrap\";\nimport { useNavigate } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport {returnPilot, returnFlight, RequestType, apiRequest, getGroundStatus } from \"../libs/databaseAccess\";\nimport \"./Ground.css\";\nimport { DateTime } from \"luxon\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport ReleaseHeightModal from \"../components/ReleaseHeightModal\";\n\nexport default function Ground() {\n /* TODO: Add tow plane tracking - strategy:\n - Treat tows as flights, assign aircraft and pilot - these become the choosable tow services\n - UI allows assigning or updating tow pilot to tow plane, this closes open tow flights if present and creates new open tow flight\n - Open tow flights are available for glider launch\n - Glider launch also launches the associated tow - tow becomes unavailable to launch\n - When Tows are landed they automatically open a new tow flight, same plane, same pilot\n */\n\n const actionTypes = {\n Landing:\"Landing\", \n Launch:\"Launch\",\n UndoLaunch:\"UndoLaunch\",\n UndoLanding:\"UndoLanding\",\n CancelRequest: \"CancelRequest\",\n Cancel:\"Cancel\",\n } \n\n const { sendAlert } = useNotificationContext();\n const { userID, club, isAuthenticated, clubTimeZone } = useAppContext();\n\n // Form variables\n const [first, setFirst] = useState(\"\");\n const [last, setLast] = useState(\"\");\n const [launchFlight, setLaunchFlight] = useState(\"\");\n const [launchFlightName, setLaunchFlightName] = useState(\"<None>\");\n const [actionType, setActionType] = useState(actionTypes.Launch);\n const [timeDelay, setTimeDelay] = useState(0);\n const [sliderPosition, setSliderPosition] = useState(0);\n const [eventTime, setEventTime] = useState(0);\n const [launchRecord, setLaunchRecord] = useState(null);\n \n const [tugs, setTugs] = useState([]);\n const [tug, setTug] = useState(\"?\");\n //const [towPilots, setTowPilots] = useState([]);\n const [allPilots, setAllPilots] = useState({});\n const [towPilot, setTowPilot] = useState(\"\");\n const [pageLoading, setPageLoading] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [waitingFlights, setWaitingFlights] = useState([]);\n const [activeFlights, setActiveFlights] = useState([]);\n const [landedFlights, setLandedFlights] = useState([]);\n const [loadingCancel, setLoadingCancel] = useState(new Set())\n\n const [showReleaseHeightModal, setShowReleaseHeightModal] = useState(false)\n const [releaseHeightFlight, setReleaseHeightFlight] = useState({})\n\n const [errorMsg, setErrorMsg] = useState(\"\")\n const navigate = useNavigate();\n\n //Per render code\n\n // Return formatted time difference between launch time and landing time\n // But only if a launch time has been saved\n let elapsedTime = 0;\n let hours = 0;\n if (eventTime) {\n elapsedTime = (eventTime - launchRecord)/60/1000;\n if (elapsedTime >= 60) { \n hours = Math.floor(elapsedTime / 60);\n elapsedTime -= hours*60;\n };\n };\n let elapsedTimeString = parseInt(elapsedTime)+\"M\";\n if ((elapsedTime < 10) && (hours > 0)) {\n elapsedTimeString = \"0\"+elapsedTimeString;\n }\n if (hours > 0) {\n elapsedTimeString = parseInt(hours)+\"H\"+elapsedTimeString\n }\n\n // Methods\n const millisToTimeString = useCallback((millis) => {\n if(millis == null) return \"Unknown\"\n const date = DateTime.fromMillis(millis, {zone: clubTimeZone ?? 'utc'})\n return date.toLocaleString(DateTime.TIME_WITH_SECONDS)\n }, [clubTimeZone])\n\n const getClubDateString = useCallback(() => {\n return DateTime.fromObject({}, {zone: clubTimeZone}).toISODate()\n }, [clubTimeZone])\n\n const getFlightRecords = useCallback(async (getPilots=false) => {\n const localDateString = getClubDateString()\n const result = await getGroundStatus(club, localDateString, getPilots)\n if(result.statusCode !== 200){\n setErrorMsg(`Could not update flights / tugs (${result.statusCode})`)\n setPageLoading(false)\n setIsLoading(false)\n return\n }\n const todaysFlights = result.body.flights\n const tugs = result.body.tugs\n\n // Filter for flights still in the air and sort by launch time\n const activeFlights = todaysFlights.filter(a => (a.acceptedAt || a.launchedAt) && !a.landedAt && !a.cancelledAt)\n .sort((a,b) => (functionalStart(a) - functionalStart(b)));\n\n // Filter for flights awaiting launch and sort by request time\n const waitingFlights = todaysFlights.filter(a => !a.acceptedAt && !a.launchedAt && !a.cancelledAt)\n .sort((a,b) => (functionalStart(a) - functionalStart(b)));\n\n // Filter for landed flights and sort by reverse chronological\n const landedFlights = todaysFlights.filter(a => a.landedAt && !a.cancelledAt)\n .sort((a,b) => (b.landedAt - a.landedAt));\n\n // Reload and sort the Tugs in case the pilots were changed\n const sortedTugs = tugs.filter(a => a.pilot).sort((a, b) => ((a.SK).localeCompare(b.SK))).map((tug) => {\n return({\n \"SK\": tug.SK,\n \"pilot\": tug.pilot,\n \"pilotName\": tug.pilotName,\n })\n });\n\n // Initialize if necessary\n if (tug === \"?\" && sortedTugs.length > 0) {\n setTug(sortedTugs[0].SK);\n setTowPilot(sortedTugs[0].pilot);\n }\n \n // Sort data for display and save\n setWaitingFlights(waitingFlights);\n setActiveFlights(activeFlights);\n setLandedFlights(landedFlights);\n setTugs(sortedTugs);\n \n // On refresh check if previous selection has been removed by someone else, and reset as necessary\n const flights = (actionType === actionTypes.Launch) ? waitingFlights : activeFlights;\n //if ((flights.length === 1)) { // If there is only one available flight, preselect it if not already selected\n // setLaunchFlight(flights[0].SK);\n // setLaunchFlightName(flights[0].glider); \n //} else { // This is critical to preventing an update loop, Make sure only one setLaunchFlight can be called per update\n const flight = returnFlight(club, launchFlight, flights, localDateString);\n if (!flight && launchFlight !== tug) {\n setLaunchFlight(\"\");\n setLaunchFlightName(\"<None>\");\n }\n\n if(getPilots) {\n // Pull club specific info from DynamoDB\n const pilots = result.body.pilots;\n setAllPilots(pilots.reduce((map, p) => {\n map[p.SK] = p;\n return map\n }, {}))\n // Build a tow pilot list\n //const towPilots = pilots.filter(pilot => pilot.isTowPilot).sort((a, b) => (a.first+a.last).localeCompare(b.first+b.last));\n //setTowPilots(towPilots);\n // TODO: Record the active tow pilot for a tug such that that pilot is the default until the active pilot changes\n\n // Get current pilot info\n const pilot = returnPilot(club, userID, pilots)\n if (typeof pilot !== 'undefined'){\n if (\"first\" in pilot) { \n setFirst(pilot.first);\n }\n if (\"last\" in pilot) { \n setLast(pilot.last);\n }\n } \n }\n setErrorMsg(\"\")\n setPageLoading(false)\n setIsLoading(false)\n }, [club, actionType, actionTypes.Launch, launchFlight, tug, userID, getClubDateString])\n\n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\") {\n return false;\n }\n \n try {\n await getFlightRecords(true)\n } catch (e) {\n onError(e);\n }\n \n return true\n }\n\n if (onLoad()) {\n // Refresh flight status\n const interval = setInterval(getFlightRecords, 10000);\n return () => {\n clearInterval(interval);\n };\n }\n\n }, [isAuthenticated, club, getFlightRecords]);\n\n // Initialize time\n useEffect(() => {\n const date = DateTime.fromObject({}, {zone: clubTimeZone})\n setEventTime(date.toMillis())\n }, [clubTimeZone])\n\n function functionalStart(flight){\n if (flight.acceptedAt && flight.launchedAt) {\n return ((flight.acceptedAt > flight.launchedAt) ? flight.acceptedAt : flight.launchedAt);\n }\n if (flight.acceptedAt) {\n return (flight.acceptedAt);\n }\n if (flight.launchedAt) {\n return (flight.launchedAt);\n }\n\n }\n\n // Effect to update displayed time\n useEffect(() => {\n const timer = () => {\n const dateStruct = new Date(); // Returns UTC time (what will be stored)\n setEventTime(dateStruct.getTime() - (!isNaN(parseInt(timeDelay)) ? parseInt(timeDelay) : 0)*60*1000); \n }\n const id = setInterval(timer, 10000);\n return () => {\n clearInterval(id);\n };\n },[eventTime, launchRecord, timeDelay])\n\n function createFlightBody(id, action) {\n // Build up body for API Call\n // TODO: Add tug info to body (and update back end)\n const transactionTime = new Date();\n const body = {\n date: getClubDateString(),\n club: club,\n id: id,\n action: action,\n time: eventTime,\n by: userID,\n enteredTime: transactionTime.getTime(),\n };\n if (action === actionTypes.Launch) {\n body.towPilot = towPilot;\n body.tug = tug;\n }\n return body\n }\n\n async function submitUpdate() {\n setIsLoading(true);\n const bodyContent = createFlightBody(launchFlight, actionType);\n const result = await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-flight/\", options: {\"body\": bodyContent}});\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: 'No action taken - ' + result.body.message\n })\n setIsLoading(false);\n return\n }\n setLaunchFlight(null);\n setLaunchFlightName(\"<None>\");\n setTimeDelay(0);\n setSliderPosition(0);\n const dateStruct = new Date();\n setEventTime(dateStruct.getTime());\n getFlightRecords() // sets isLoading to false when request succeeds\n }\n\n const setCanceling = (id) => {\n setLoadingCancel((s) => {\n s.add(id);\n return s;\n })\n }\n \n const setNotCancelling = (id) => {\n setLoadingCancel((s) => {\n s.delete(id);\n return s;\n })\n }\n\n async function submitCancelLaunch(id) {\n const flight = returnFlight(club, id, activeFlights, getClubDateString());\n setCanceling(id)\n if (window.confirm(`Undo launch of ${flight.glider} at ${millisToTimeString(flight.launchedAt)}?`)) {\n const bodyContent = createFlightBody(id, actionTypes.UndoLaunch);\n // Update the flight information\n const result = await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-flight/\", options: {\"body\": bodyContent}});\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: `Failed to cancel launch`\n })\n setNotCancelling(id)\n return\n }\n getFlightRecords()\n }\n setNotCancelling(id)\n }\n\n async function submitCancelLanding(id) {\n const flight = returnFlight(club, id, landedFlights, getClubDateString());\n setCanceling(id)\n if (window.confirm(`Undo landing of ${flight.glider} at ${millisToTimeString(flight.landedAt)}?`)) {\n const bodyContent = createFlightBody(id, actionTypes.UndoLanding);\n // Update the flight information\n const result = await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-flight/\", options: {\"body\": bodyContent}});\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: `Failed to cancel landing`\n })\n setNotCancelling(id)\n return\n }\n getFlightRecords()\n }\n setNotCancelling(id)\n }\n\n async function submitCancelRequest(id) {\n const bodyContent = createFlightBody(id, actionTypes.CancelRequest);\n // Update the flight informatin\n await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-flight/\", options: {\"body\": bodyContent}});\n getFlightRecords()\n }\n\n async function submitCancelIntro(id){\n const introUpdateData = {\n \"flightRef\":'',\n }\n const introUpdateBody = {\n \"club\":club,\n \"type\":\"INTRO\",\n \"id\":id,\n \"data\":introUpdateData,\n }\n await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-item/\", options: {\n \"body\": introUpdateBody,\n }});\n }\n\n function setLaunchValues(event){\n // Record the relevant information about the selected flight\n // The flight id, glider id\n const id = event.target.value;\n let flightName = null;\n let flightLaunch = null;\n let flightId = null\n\n if (id !== tug){\n const flights = (actionType === actionTypes.Launch) ? waitingFlights : activeFlights;\n const flight = returnFlight(club, id, flights, getClubDateString());\n flightName = flight.glider;\n flightLaunch = flight.launchedAt;\n flightId = id;\n } else {\n flightName = tug;\n flightId = tug;\n }\n\n setLaunchFlight(flightId);\n setLaunchFlightName(flightName);\n if (actionType === actionTypes.Landing) {\n setLaunchRecord(flightLaunch); // Use to report flight duration\n } else {\n setLaunchRecord(null);\n }\n\n }\n\n function updateTime(delay){\n const effectiveDelay = !isNaN(parseInt(delay)) ? parseInt(delay) : 0;\n const dateStruct = new Date();\n const launchTime = dateStruct.getTime() - (effectiveDelay)*60*1000;\n setTimeDelay(delay);\n setEventTime(launchTime);\n const position = -72.8054*Math.log(+delay+0.51); // See updateSlider for explanation\n setSliderPosition(!isNaN(position) ? position : 0);\n }\n\n function updateSlider(position) {\n // Updates the slider position\n // Manage separately to allow updateTime to handle blank entries, and to have smooth (non-integer) scrolling\n // Map linear position to exponential, fitting slider minimum to 960 minutes (16 hours)\n // e.g.: Slider position = [0,500] -> delay = (e^(ln(961)/500))^position = 1.01383^position\n // The reverse conversion is position = ln(delay)/ln(961/500) = 72.8054*ln(delay)\n // With some rounds and offsets pushed in to make integers and enable slide to 0.\n // Math.trunc is apparently not fully supported by IE, so using round with an offset instead\n const delay = (Math.pow(1.01383,-position)-0.51);\n const effectiveDelay = !isNaN(parseInt(delay)) ? parseInt(delay) : 0;\n const dateStruct = new Date();\n const launchTime = dateStruct.getTime() - (effectiveDelay)*60*1000;\n setTimeDelay(Math.round(delay-0.51));\n setEventTime(launchTime);\n setSliderPosition(-72.8054*Math.log(delay+0.51));\n }\n\n function updateAction(action){\n setActionType(action);\n const dateStruct = new Date();\n const launchTime = dateStruct.getTime() - (!isNaN(parseInt(timeDelay)) ? parseInt(timeDelay) : 0)*60*1000;\n setEventTime(launchTime);\n }\n\n const eventTimeString = useMemo(() => millisToTimeString(eventTime), [eventTime, millisToTimeString])\n\n function cancelRequest() {\n const flight = returnFlight(club, launchFlight, waitingFlights, getClubDateString());\n\n if (window.confirm(`Confirm remove ${flight.first} ${flight.last} in ${flight.glider} from flight line.`)) {\n submitCancelRequest(flight.SK);\n if(flight.flyWith === 'Intro' && 'introRef' in flight){\n submitCancelIntro(flight.introRef);\n }\n }\n }\n\n function setLaunchReleaseHeight(flight) {\n setShowReleaseHeightModal(true)\n setReleaseHeightFlight(flight)\n }\n\n function closeReleaseHeightModal() {\n setShowReleaseHeightModal(false)\n setReleaseHeightFlight({})\n }\n\n function updateTugAndPilot(tugChoice) {\n setTug(tugChoice);\n const tugInfo = tugs.filter(a => a.SK === tugChoice)\n setTowPilot(tugInfo[0].pilot);\n }\n\n function renderTugs(tugs) {\n return (\n <div className=\"tugs\">\n <h4 className = \"centerHeader\">Launched By:</h4>\n <ButtonGroup className=\"mb-3 flex-wrap\">\n <Button key=\"new\" value=\"new\" variant=\"outline-primary\" onClick = {() => navigate(\"../fuel\")}>Check in Tow Pilot</Button>\n { tugs.map((item) => (\n <Button variant=\"outline-secondary\" key={item.SK} value={item.SK} onClick = {(e) => updateTugAndPilot(e.target.value)} \n active={(item.SK === tug)}>\n {item.SK} {item.pilotName}\n </Button>\n ))}\n </ButtonGroup>\n </div>\n );\n }\n\n\n function renderFlightsWaiting(flights) {\n return (\n <div className=\"flights\">\n <h4 className = \"centerHeader\">Next Flight:</h4>\n <ButtonGroup className=\"mb-3 flex-wrap\">\n { flights.map((item) => (\n <Button variant=\"outline-secondary\" key={item.SK} value={item.SK} onClick = {(e) => setLaunchValues(e)} \n active={(item.SK === launchFlight)}>\n {item.glider + ((flights.length < 10) ? (\", \" + item.first+\" \"+item.last.slice(0,1)) : \"\")}\n </Button>\n ))\n }\n </ButtonGroup>\n </div>\n );\n }\n\n function renderFlightsAirborn(flights) {\n return (\n <div className=\"flights\">\n <h4 className = \"centerHeader\">Choose Glider to Land</h4>\n <ButtonGroup className=\"mb-3 flex-wrap\">\n { flights.map((item) => (\n <Button variant=\"outline-secondary\" key={item.SK} value={item.SK} onClick = {(e) => setLaunchValues(e)} \n active={(item.SK === launchFlight)}> \n {item.glider + \", \" + item.first+\" \"+item.last.slice(0,1)}\n </Button>\n ))\n }\n </ButtonGroup>\n </div>\n );\n }\n\n function renderCancelButtons(flight, page) {\n const cancelFn = page === actionTypes.Launch ? submitCancelLaunch : submitCancelLanding\n const undoSuffix = page === actionType.Landing ? `landed ${millisToTimeString(flight.landedAt)}` : `launched ${millisToTimeString(flight.launchedAt)}`\n const cancelButton = (\n <LoaderButton\n variant=\"danger\"\n key={flight.SK}\n value={flight.SK}\n onClick = {(e) => cancelFn(e.target.value)}\n active={flight.SK === launchFlight}\n isLoading={loadingCancel.has(flight.SK)}\n disabled={loadingCancel.has(flight.SK)}\n className=\"w-100\"\n >\n {`Undo ${flight.first} ${flight.last.slice(0,1)} in ${flight.glider} ${undoSuffix}`}\n </LoaderButton>\n )\n\n const setReleaseHeightButton = (\n <Button\n value={flight.SK}\n variant=\"warning\"\n disabled={loadingCancel.has(flight.SK)}\n onClick = {() => setLaunchReleaseHeight(flight)}\n className=\"w-100\"\n >\n Release Height\n </Button>\n )\n\n if(flight.releaseHeight === 0) {\n return (\n <div key={flight.SK} className=\"undo-btn-container\">\n {cancelButton}\n {setReleaseHeightButton}\n </div>\n )\n } else {\n return cancelButton\n }\n }\n\n function renderCancellableLaunches(flights) {\n return (\n <div className=\"flights\">\n <ListGroup className=\"gap-2\">\n { (flights.length === 0) ? <p>No launches to undo</p> : \n <>\n { flights.map((flight, i) => renderCancelButtons(flight, actionTypes.Launch)) }\n </>\n }\n </ListGroup>\n </div>\n );\n }\n \n function renderCancellableLandings(flights) {\n return (\n <div className=\"flights\">\n <ListGroup className=\"gap-2\">\n { (flights.length === 0) ? <p>No landings to undo</p> : \n <>\n { flights.map((flight) => renderCancelButtons(flight, actionTypes.Landing))}\n </>\n }\n </ListGroup>\n </div>\n );\n }\n\n function renderLoading() {\n return (\n <Spinner className=\"mt-4\" animation=\"border\" role=\"status\">\n <span className=\"visually-hidden\">Loading...</span>\n </Spinner>\n )\n }\n\n function renderActivities() {\n return (\n <main className=\"d-flex flex-column gap-3 pt-3\">\n { ((first !== \"\") || (last !== \"\")) ?\n <h4 className=\"my-0\">Line Manager for {first} {last}</h4> :\n <h4 className=\"my-0\">Line Management</h4>\n }\n <hr className=\"my-1\"/>\n <Row className=\"justify-content-between\">\n <Col xs=\"3\">\n <div className=\"d-grid\">\n <Button variant=\"outline-secondary\" type=\"button\" disabled={pageLoading} active={actionType === actionTypes.Launch} \n onClick = {() => updateAction(actionTypes.Launch)}>\n <h4>Launch</h4>\n </Button>\n </div>\n </Col>\n <Col xs=\"3\">\n <div className=\"d-grid\">\n <Button variant=\"outline-secondary\" type=\"button\" disabled={pageLoading} active={actionType === actionTypes.Landing} \n onClick = {() => updateAction(actionTypes.Landing)}>\n <h4>Land</h4>\n </Button>\n </div>\n </Col>\n </Row>\n <hr className=\"my-1\"/>\n { actionType === actionTypes.Landing &&\n <div>\n {(renderFlightsAirborn((activeFlights)))}\n </div>\n }\n { (actionType === actionTypes.Launch || actionType === actionTypes.Cancel) &&\n <div>\n {(renderFlightsWaiting((waitingFlights)))} \n {(renderTugs((tugs)))} \n <hr className=\"my-1\"/>\n </div>\n }\n { actionType !== \"\" && eventTime &&\n <>\n <input type=\"range\" className=\"w-100\" id=\"points\" name=\"points\" min={-500} max=\"0\" \n onChange={e => updateSlider(e.target.value)}\n value = {sliderPosition}\n />\n <FormGroup controlId=\"timeDelay\" size=\"lg\">\n <InputGroup>\n {<InputGroup.Text id=\"basic-addon1\">Happened </InputGroup.Text>}\n <FormControl\n type=\"number\"\n inputMode=\"numeric\"\n as=\"input\"\n value={timeDelay}\n onChange={e => updateTime(e.target.value)}\n />\n <InputGroup.Text>Minutes ago </InputGroup.Text>\n </InputGroup>\n </FormGroup>\n <div className=\"btn-container\">\n <LoaderButton\n type=\"submit\"\n variant=\"success\"\n isLoading={isLoading} \n disabled={(actionType === actionTypes.Launch && tug === \"?\") || !launchFlight}\n onClick= {() => submitUpdate()}\n className=\"fs-4 w-100\"\n >\n {(actionType === actionTypes.Launch) && \n `Launch ${launchFlightName} at ${eventTimeString} with ${tug}`\n }\n { (actionType === actionTypes.Landing) && (!launchRecord) &&\n `Land ${launchFlightName} at ${eventTimeString}`\n }\n { (actionType === actionTypes.Landing) && (launchRecord) &&\n `Land ${launchFlightName} at ${eventTimeString} (${elapsedTimeString})`\n }\n </LoaderButton> \n { (actionType === actionTypes.Launch || actionType === actionTypes.Landing) &&\n <LoaderButton\n type=\"submit\"\n variant=\"danger\"\n isLoading={isLoading} \n disabled={!launchFlight}\n onClick= {() => actionType === actionTypes.Launch ? cancelRequest() : submitCancelLaunch(launchFlight)}\n >\n {actionType === actionTypes.Launch ? \"Remove from flightline\" : \"Undo launch\"}\n </LoaderButton> \n }\n </div>\n </>\n }\n <hr className=\"my-1\"/>\n <ReleaseHeightModal \n showModal={showReleaseHeightModal}\n onSuccess={getFlightRecords}\n allPilots={allPilots}\n closeModal={closeReleaseHeightModal}\n flight={releaseHeightFlight} \n />\n { actionType === actionTypes.Launch &&\n <div>\n <h4>Flights in Progress:</h4>\n {(renderCancellableLaunches((activeFlights)))}\n </div>\n } \n { actionType === actionTypes.Landing &&\n <div>\n <h4>Landed Flights:</h4>\n {(renderCancellableLandings((landedFlights)))}\n </div>\n }\n <div className=\"position-fixed bottom-0 start-50 translate-middle w-100 px-3\">\n <Alert show={errorMsg.length > 0} className=\"w-100 mb-0\" variant=\"danger\" dismissible onClose={() => setErrorMsg(\"\")}>\n {errorMsg}\n </Alert>\n </div>\n </main>\n );\n }\n\n return (\n <div>\n {(isAuthenticated && !pageLoading) ? renderActivities() : renderLoading()}\n </div>\n );\n}\n","import React from 'react';\nimport { isoTimeToLocaleTime } from '../libs/utils';\n\nconst SelectableTable = (props) => {\n const { handler, headers, items, rows } = props;\n return (\n <div>\n <table className=\"table table-bordered table-hover\">\n <TableHeader headers={headers}></TableHeader>\n <TableBody handler={handler} headers={headers} items={items} rows={rows}></TableBody>\n </table>\n </div>\n );\n}\n\nconst TableHeader = (props) => {\n const { headers } = props;\n return(\n <thead className=\"thead-dark\" key=\"header-1\">\n <tr key=\"header-0\">\n { headers && headers.map((value, index) => {\n return <th className=\"text-center\" key={index}><div>{value}</div></th>\n })}\n </tr>\n </thead>\n );\n}\n\nconst TableBody = (props) => {\n const { handler, headers, items, rows } = props;\n const columns = headers ? headers.length : 0;\n const showSpinner = rows === null;\n\n function buildRow(row, items, i) {\n if(\"isDateDivider\" in row){\n return(\n <tr key={i} >\n <td colSpan={items.length}>{row[\"dateString\"]}</td>\n </tr>\n );\n }\n else{\n const needsReleaseHeight = row.releaseHeight === 0;\n return (\n <tr role='button' key={i} onClick={() => handler(row, i)} >\n { items.map((value, index) => {\n return(\n <td className={needsReleaseHeight ? 'bg-warning' : ''} key={index}>\n {[\"takeoff\", \"landing\"].includes(value) ? isoTimeToLocaleTime(row[value]) : row[value]}\n </td>\n )\n })}\n </tr>\n )\n }\n };\n\n return(\n <tbody>\n {showSpinner &&\n <tr key=\"spinner-0\">\n <td colSpan={columns} className=\"text-center\">\n <div className=\"spinner-border\" role=\"status\">\n \n </div>\n </td>\n </tr>\n }\n { !showSpinner && rows && rows.map((value, i) => {\n return buildRow(value, items, i);\n })}\n </tbody>\n );\n}\n\n\nexport default SelectableTable;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Table = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n striped,\n bordered,\n borderless,\n hover,\n size,\n variant,\n responsive,\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'table');\n const classes = classNames(className, decoratedBsPrefix, variant && `${decoratedBsPrefix}-${variant}`, size && `${decoratedBsPrefix}-${size}`, striped && `${decoratedBsPrefix}-${typeof striped === 'string' ? `striped-${striped}` : 'striped'}`, bordered && `${decoratedBsPrefix}-bordered`, borderless && `${decoratedBsPrefix}-borderless`, hover && `${decoratedBsPrefix}-hover`);\n const table = /*#__PURE__*/_jsx(\"table\", {\n ...props,\n className: classes,\n ref: ref\n });\n if (responsive) {\n let responsiveClass = `${decoratedBsPrefix}-responsive`;\n if (typeof responsive === 'string') {\n responsiveClass = `${responsiveClass}-${responsive}`;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: responsiveClass,\n children: table\n });\n }\n return table;\n});\nexport default Table;","import { isEqualWith } from 'lodash'\nimport { DateTime } from 'luxon'\nimport {useCallback, useMemo} from'react'\nimport { OverlayTrigger, Popover, Table } from 'react-bootstrap'\nimport { nameFromPilotId } from '../libs/utils'\n\nconst ModificationTypes = {\n \"introRef\": \"Intro Flight\",\n \"landedAt\": \"Landing Time\",\n \"launchedAt\": \"Launch Time\",\n \"passengerFirst\": \"Passenger Name\",\n \"passengerLast\": \"Passenger Name\",\n \"shareCost\": \"Flight Cost Shared\",\n \"pilotInCharge\": \"Pilot in Charge\",\n \"flightCost\": \"Flight Cost\",\n \"time\": \"Time\",\n \"tug\": \"Tug\",\n \"towPilot\": \"Tow Pilot\",\n \"glider\": \"Glider\",\n \"launchType\": \"Launch Type\",\n \"launchCost\": \"Launch Cost\",\n \"user\": \"Pilot\",\n \"passengerID\": \"Passenger Name\",\n \"flyWith\": \"Fly With\"\n}\n\nconst CostModificationTypes = {\n \"launchCost\": \"Launch\",\n \"flightCost\": \"Flight\"\n}\n\nconst RevisionsTable = ({rawFlights = [], currentFlightData = {}, allPilots = []}) => {\n \n const flight = useMemo(() => {\n const flightData = rawFlights.find((f) => f.SK === currentFlightData.SK )\n // Copy the flight object since we're going to modify it\n return {...flightData}\n }, [currentFlightData.SK, rawFlights])\n\n\n // We want most recent changes first\n const revisions = useMemo(() => currentFlightData.history.sort((a,b) => b.submittedAt - a.submittedAt), [currentFlightData])\n\n function isEmptyValues(value) {\n return value === undefined ||\n value === null ||\n Number.isNaN(value) ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'string' && value.length === 0);\n }\n\n // Make isEqual treat empty or null or undefined values as equal to each other\n const customizer = useCallback((a,b) => {\n if(isEmptyValues(a) && isEmptyValues(b)) return true\n }, [])\n\n const revisionList = useMemo(() => revisions.reduce((list, r) => {\n const revision = {...r}\n const newRevision = {\n by: revision.by,\n date: DateTime.fromMillis(revision.submittedAt ?? 0),\n changes: [],\n costChanges: []\n }\n delete revision.by\n delete revision.submittedAt\n\n \n let oldPassenger, newPassenger\n if(revision.passengerID) {\n oldPassenger = nameFromPilotId(revision.passengerID, allPilots)\n } else {\n oldPassenger = revision.passengerFirst ? `${revision.passengerFirst} ${revision.passengerLast}` : \"None\"\n }\n if(flight.passengerID) {\n newPassenger = nameFromPilotId(flight.passengerID, allPilots)\n } else {\n newPassenger = flight.passengerFirst ? `${flight.passengerFirst} ${flight.passengerLast}` : \"None\"\n }\n\n const newPilot = flight.user ? nameFromPilotId(flight.user, allPilots) : \"None\"\n const oldPilot = revision.user ? nameFromPilotId(revision.user, allPilots) : newPilot\n\n\n Object.keys(revision).forEach((k) => {\n // \"time\" and \"id\" were erroniously included in old revisions so we ignore them\n // we also ignore non-user level changes like transaction ids\n if([\"time\", \"id\", \"launchTransaction\", \"landingTransaction\", \"first\", \"last\", \"passengerLast\", \"introRef\"].includes(k)) return\n // Some properties we want to update on the state tracking object but not report ot the user\n if(k === 'passengerID') {\n flight[k] = revision[k]\n return\n }\n // Children can be objects or arrays so we need to check deep equality\n if(isEqualWith(revision[k], flight[k], customizer)) return\n\n let oldVal = revision[k]\n let newVal = flight[k]\n\n // Handle special cases\n if(k === 'pilotInCharge') {\n oldVal = oldVal ? oldPilot : oldPassenger\n newVal = newVal ? newPilot : newPassenger\n }\n\n if(k === 'passengerFirst') {\n oldVal = oldPassenger\n newVal = newPassenger\n }\n\n const newChange = {\n old: oldVal,\n new: newVal,\n parameter: k,\n parameterName: ModificationTypes[k] ?? k,\n }\n\n // Update the state of 'flight' to before the processed revision\n flight[k] = revision[k]\n if(k === 'passengerFirst'){\n flight.passengerLast = revision.passengerLast\n }\n\n if([\"flightCost\", \"launchCost\"].includes(k)){\n newRevision.costChanges.push(newChange)\n } else {\n newRevision.changes.push(newChange)\n }\n })\n list.push(newRevision)\n return list\n }, []),[flight, revisions, customizer, allPilots])\n\n\n const shortChangesString = (changes) => {\n if(changes.length <= 0) return \"None\"\n let str = changes[0].parameterName\n let moreChangesNum = changes.length - 1\n if (moreChangesNum > 0) {\n str += ` [+${moreChangesNum}]`\n }\n return str\n }\n\n const shortCostString = (changes) => {\n if(changes.length <= 0) return \"None\"\n let costStr = CostModificationTypes[changes[0].parameter] ?? \"Unknown\"\n if(changes.length === 1) return costStr\n if(changes.length > 2) {\n costStr += ` [+${changes.length - 1}]`\n } else {\n costStr += `, ${CostModificationTypes[changes[1].parameter] ?? \"Unknown\"}`\n }\n return costStr\n }\n\n const renderParameter = (parameter, value) => {\n if(isEmptyValues(value)) return 'None'\n switch(parameter) {\n case 'landedAt':\n case 'launchedAt':\n case 'time':\n const date = DateTime.fromMillis(value ?? 0)\n return date.toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)\n case 'launchCost':\n case 'flightCost':\n return `$${value.toFixed(2)}`\n case 'shareCost':\n return value ? \"Yes\" : \"No\"\n case \"user\":\n case \"passengerID\":\n case 'towPilot':\n const pilot = allPilots.find((p) => p.SK === value)\n return pilot ? nameFromPilotId(pilot.SK, allPilots) : \"Unknown\"\n default:\n return value;\n }\n }\n\n const changePopover = (changes, date = undefined) => {\n return (\n <Popover>\n <Popover.Header>{date ? `${date.toLocaleString(DateTime.DATETIME_MED)}` : \"All Changes\"}</Popover.Header>\n <Popover.Body className=\"d-flex flex-column gap-2\">\n {changes.map((c, i) => \n <span key={i}>\n <strong>{c.parameterName}: </strong>\n {`${renderParameter(c.parameter, c.old)} → ${renderParameter(c.parameter, c.new)}`}\n </span>\n )}\n {changes.length <= 0 && <span>No changes for this revision</span>}\n </Popover.Body>\n </Popover>\n )\n }\n\n const costPopover = (changes, date = undefined) => {\n return (\n <Popover>\n <Popover.Header>{date ? `${date.toLocaleString(DateTime.DATETIME_MED)}` : \"All Changes\"}</Popover.Header>\n <Popover.Body className=\"d-flex flex-column gap-2\">\n {changes.map((c, i) => \n <span key={i}>\n <strong>{c.parameterName}: </strong>\n {`${renderParameter(c.parameter, c.old)} → ${renderParameter(c.parameter, c.new)}`}\n {` [${c.new - c.old >= 0 ? '+' : '-'}$${Math.abs(c.new - c.old)}]`}\n </span>\n )}\n {changes.length <= 0 && <span>No cost changes for this revision</span>}\n </Popover.Body>\n </Popover>\n )\n }\n\n return (\n <Table className=\"table table-bordered table-hover\" style={{minWidth: \"30rem\"}}>\n <thead className=\"fw-bold\">\n <tr>\n <td>Date Changed</td>\n <td>Changed By</td>\n <td>Parameter Changed</td>\n <td>Cost Changed</td>\n </tr>\n </thead>\n\n <tbody>\n {flight.flightLocked && \n <tr>\n <td className=\"bg-danger text-center text-white\" colSpan=\"4\" >Flight Locked</td>\n </tr>\n }\n {revisionList.map((rev, i) => \n <tr key={i}>\n <td>{rev.date ? rev.date.toLocaleString(DateTime.DATETIME_MED) : \"Unknown\"}</td>\n <td>{nameFromPilotId(rev.by, allPilots)}</td>\n <OverlayTrigger trigger=\"click\" placement=\"top\" overlay={changePopover(rev.changes, rev.date)}>\n <td role=\"button\">{shortChangesString(rev.changes)}</td>\n </OverlayTrigger>\n <OverlayTrigger trigger=\"click\" placement=\"top\" overlay={costPopover(rev.costChanges, rev.date)}>\n <td role=\"button\">{shortCostString(rev.costChanges)}</td>\n </OverlayTrigger>\n </tr>\n )}\n </tbody>\n </Table>\n )\n}\n\nexport default RevisionsTable","import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { Button, Container, Row, Col, FormControl, FormGroup, InputGroup, ToggleButton, ToggleButtonGroup, Form, FormLabel, Alert, Modal, Spinner, Accordion } from \"react-bootstrap\";\nimport { onError } from \"../libs/errorLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { returnPilot, returnIntro, RequestType, apiRequest, loadLogsPayload } from \"../libs/databaseAccess\";\nimport \"./Logs.css\";\nimport schema from \"./schema.json\"\nimport userSchema from \"./user schema.json\"\nimport towSchema from \"./tow schema.json\"\nimport SelectableTable from \"../components/SelectableTable.js\"\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib.js\";\nimport { isUserActive, isUserPilot, isoTimeToLocaleTime, nameFromPilotId } from \"../libs/utils.js\";\nimport RevisionsTable from \"../components/RevisionsTable.js\";\nimport { DateTime } from \"luxon\";\nimport LoaderButton from \"../components/LoaderButton.js\";\n\nconst flightTypes = {\n \"Alone\":\"Alone\", \n \"Instructor\":\"Instructor\",\n \"Member\":\"Member\",\n \"Intro\":\"Intro\",\n \"Friend\":\"Friend\",\n}\n\nconst ModalState = {\n \"INFO\": \"info\",\n \"EDIT\": \"edit\",\n \"CONFIRM\": \"confirm\"\n}\n\nexport default function Logs() {\n const emptyTimes = {\n time: null,\n count: null,\n intros: null,\n instruction: null\n }\n\n function initDate() {\n const newDate = new Date()\n newDate.setTime(newDate.getTime() - (newDate.getTimezoneOffset()*60*1000))\n return newDate.toISOString().substring(0,10)\n }\n\n const {userID, club, isAuthenticated, tzoffset, userIsAdmin, userCanEditLogs, clubTimeZone, clubUnits} = useAppContext();\n const {sendAlert, sendToast} = useNotificationContext();\n const [pilotFlights, setPilotFlights] = useState(null); // For filtered display\n const [allPilotFlights, setAllPilotFlights] = useState(null); // Full list\n const [allFlights, setAllFlights] = useState(null); // Full List\n const [allGliderFlights, setAllGliderFlights] = useState(null); // For filtered display\n const [allTowFlights, setAllTowFlights] = useState(null);\n const [towPilots, setTowPilots] = useState(null);\n const [actionType, setActionType] = useState(\"by time\");\n const [startDate, setStartDate] = useState(initDate());\n const [endDate, setEndDate] = useState(initDate());\n const [flightViewType, setFlightViewType] = useState(\"All\");\n const [totalGliderTime, setTotalGliderTime] = useState({emptyTimes});\n const [totalPilotTime, setTotalPilotTime] = useState({emptyTimes});\n const [totalTowTime, setTotalTowTime] = useState({emptyTimes});\n const [gliders, setGliders] = useState(null);\n const [pilotGliders, setPilotGliders] = useState(null);\n const [currentFlightData, setCurrentFlightData] = useState(null);\n const [flightPilot, setFlightPilot] = useState(null);\n const [flightPassenger, setFlightPassenger] = useState(null);\n const [flightGlider, setFlightGlider] = useState(null);\n const [flightType, setFlightType] = useState(null);\n const [launchType, setLaunchType] = useState(null);\n const [flightTakeoff, setFlightTakeoff] = useState(null);\n const [flightLanding, setFlightLanding] = useState(null);\n const [releaseHeight, setReleaseHeight] = useState(null);\n const [pilotInCharge, setPilotInCharge] = useState(null);\n const [shareCost, setShareCost] = useState(null);\n const [towPilot, setTowPilot] = useState(null);\n const [tug, setTug] = useState(null);\n const [introSelected, setIntroSelected] = useState(null);\n const [rawFlights, setRawFlights] = useState([])\n\n const [allGliders, setAllGliders] = useState(null);\n const [allActivePilots, setAllActivePilots] = useState(null);\n const [allPilots, setAllPilots] = useState(null);\n const [launchTypes, setLaunchTypes] = useState(null);\n const [tugs, setTugs] = useState(null);\n const [intros, setIntros] = useState([]);\n const [searchText, setSearchText] = useState(\"\");\n const [errorMsg, setErrorMsg] = useState(\"\")\n const [expandRevisions, setExpandRevisions] = useState(false)\n\n const [showInfoModal, setShowInfoModal] = useState(false)\n const [infoModalState, setInfoModalState] = useState(ModalState.INFO)\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n //Per render code\n\n let flightTimes = null;\n let flightSummary = \"\";\n if (actionType === \"by time\") {\n flightTimes = totalGliderTime;\n }\n if (actionType === \"by tow\") {\n flightTimes = totalTowTime;\n }\n if (actionType === \"personal\") {\n flightTimes = totalPilotTime;\n }\n\n if (flightTimes.time > 0) {\n let timeString = toHHMM(flightTimes.time);\n let flightName = (flightTimes.time === 1) ? \"flight\" : \"flights total\";\n flightSummary = `${timeString} in ${flightTimes.count} ${flightName}`;\n if (flightTimes.intros > 0) {\n flightName = (flightTimes.intros === 1) ? \"intro\" : \"intros\";\n timeString = toHHMM(flightTimes.introTime);\n flightSummary += `, ${timeString} in ${flightTimes.intros} ${flightName}`;\n }\n if (flightTimes.instruction > 0) {\n timeString = toHHMM(flightTimes.instructionalTime);\n flightSummary += `, ${timeString} in ${flightTimes.instruction} instructional`;\n }\n }\n\n //Methods\n const getFlightTime = useCallback((flights) => {\n let time = 0;\n let flightCount = 0;\n let introTime = 0;\n let introCount = 0;\n let instructionalTime = 0;\n let instructionalCount = 0;\n if(flights !== null && flights !== undefined) {\n for(var flight of flights){\n if(!isNaN(flight.duration)) {\n time += flight.duration;\n flightCount += 1;\n if(flight.flyWith === flightTypes.Intro) {\n introTime += flight.duration;\n introCount += 1;\n }\n if(flight.flyWith === flightTypes.Instructor) {\n instructionalTime += flight.duration;\n instructionalCount += 1;\n }\n }\n }\n }\n const flightTotals = {\n time: time,\n count: flightCount,\n introTime: introTime,\n intros: introCount,\n instructionalTime: instructionalTime,\n instruction: instructionalCount\n }\n return flightTotals;\n },[]);\n\n const loadFlights = useCallback(async (loadSetup) => {\n try {\n\n //for multiple dates\n let startDateTime = new Date(startDate)\n let endDateTime = new Date(endDate)\n\n // Set endDateTime to end of day\n endDateTime.setTime(endDateTime.getTime() + (24 * 60 * 60 * 1000) - 1)\n \n // offset the dates being interpreted as UTC\n startDateTime.setTime(startDateTime.getTime() + (tzoffset*60*1000))\n endDateTime.setTime(endDateTime.getTime() + (tzoffset*60*1000))\n\n const response = await loadLogsPayload(club, startDateTime.getTime(), endDateTime.getTime(), loadSetup)\n\n if(response.statusCode !== 200){\n setErrorMsg(`Could not load logs (${response.statusCode})`)\n return\n }\n\n const todaysFlights = response.body.flights\n const pilots = response.body.pilots\n \n if(loadSetup) {\n const gliders = response.body.gliders\n const launches = response.body.launches\n const tugList = response.body.tugs\n const intros = response.body.intros\n\n setAllPilots(pilots);\n setAllActivePilots(pilots.filter((a) => isUserActive(a, clubTimeZone)).sort((a, b) => (a.first+a.last).localeCompare(b.first+b.last)));\n setAllGliders(gliders.sort((a,b) => ((a.SK).localeCompare(b.SK))));\n setLaunchTypes(launches.sort((a,b) => ((a.SK).localeCompare(b.SK))));\n setTugs(tugList);\n setIntros(intros.sort((a,b)=>(a.SN.toString().localeCompare(b.SN.toString()))));\n }\n\n setRawFlights(todaysFlights)\n\n // Remap data into display form\n var flights = todaysFlights.reduce(function(list, item) {\n if(item.cancelledAt) return list\n\n var takeoffTime = functionalStart(item);\n var landingTime = item.landedAt;\n\n function toLocalTime(time){\n if(!time) return \"Not recorded\"\n const date = DateTime.fromMillis(time, {zone: clubTimeZone })\n return date.set({second: 0, millisecond: 0}).toISOTime({ suppressSeconds: true, includeOffset: false})\n }\n\n // Preload name strings to be used for P1 and P2 display\n const submitterName = item.first + \" \" + item.last;\n let otherName = \"\";\n if ((item.passengerFirst !== \"\") || (item.passengerLast !== \"\")) {\n // Generate a passenger name as long as there is either a first or a lintroast name recorded\n // This need not be a member pilot (no need to check SK)\n otherName = item.passengerFirst + \" \" + item.passengerLast\n };\n\n let towPilotName = \"\";\n if (item.towPilot !== \"\") {\n const towPilot = returnPilot(club, item.towPilot, pilots)\n if ((towPilot) && (towPilot.first !== \"\") && (towPilot.last !== \"\")) {\n towPilotName = towPilot.first + \" \" + towPilot.last\n }\n };\n\n let launchCost = \"$0\";\n let flightCost = \"$0\";\n if ((userID === item.user) && (item.flyWith !== \"Intro\")) {\n launchCost = item.launchCost ? (item.launchCost).toFixed(2) : 0\n flightCost = item.flightCost ? (item.flightCost).toFixed(2) : 0\n }\n var duration = 0;\n if(!takeoffTime || !landingTime){\n duration = NaN;\n }\n else{\n duration = Math.round((landingTime - takeoffTime)/1000/60,0); //convert to minutes\n }\n\n list.push({\n \"user\" : item.user,\n \"passengerID\" : item.passengerID,\n \"glider\": item.glider,\n \"P1\": item.pilotInCharge ? submitterName : otherName, \n \"P2\": item.pilotInCharge ? otherName : submitterName,\n \"takeoff\": toLocalTime(takeoffTime),\n \"landing\": toLocalTime(landingTime),\n \"takeoffMillis\": takeoffTime,\n \"landingMillis\": landingTime,\n \"duration\": duration,\n \"durationString\": toHHMM(duration),\n \"launchType\": item.launchType,\n \"flyWith\": item.flyWith,\n \"pilotInCharge\":item.pilotInCharge,\n \"shareCost\": item.shareCost,\n \"SK\": item.SK,\n \"launchCost\": launchCost,\n \"flightCost\" : flightCost,\n \"towPilot\": item.towPilot,\n \"towPilotName\": towPilotName,\n \"tug\": item.tug,\n 'launchTransaction': item.launchTransaction,\n 'landingTransaction':item.landingTransaction,\n \"dateString\": item.PK.substring(item.PK.lastIndexOf(\"#\")+1),\n 'introRef': 'introRef' in item ? item.introRef : '',\n \"history\": item.corrections ?? [],\n \"flightLocked\": item.flightLocked,\n \"releaseHeight\": item.releaseHeight\n });\n return list\n }, []);\n\n //For multiple dates\n flights.sort((a,b) => (a.takeoff > b.takeoff) ? 1 : -1);\n setGliders([...new Set(flights.map( item => item.glider))].sort());\n let flightsWithDateEntries = [];\n let dateTracker = new Date(startDateTime.getTime());\n while(dateTracker < endDateTime){\n const dateStr = dateTracker.toISOString().slice(0,10)\n let dateEntry = {\n \"isDateDivider\": true,\n \"dateString\": dateStr,\n }\n let flightsOnDate = flights.filter((a)=>(a.dateString === dateStr));\n flightsOnDate.forEach((item, index) => {\n item.seq = index+1;\n });\n if(flightsOnDate.length > 0){\n flightsWithDateEntries.push(dateEntry);\n }\n flightsWithDateEntries = flightsWithDateEntries.concat(flightsOnDate);\n dateTracker.setTime(dateTracker.getTime() + 24*3600*1000);\n }\n flights = flightsWithDateEntries;\n \n //for multiple dates\n let personalFlightsWithAllDates = flights.filter(a => ((\"isDateDivider\" in a) || (a.user === userID) || (a.passengerID === userID)));\n let personalFlights = personalFlightsWithAllDates.filter(a => (!(\"isDateDivider\" in a) || personalFlightsWithAllDates.filter((b)=>(b.dateString === a.dateString)).length>1));\n let filteredPersonalFlights = personalFlights.filter(a=>(!(\"isDateDivider\" in a)));\n setPilotGliders([...new Set(filteredPersonalFlights.map( item => item.glider))].sort());\n setPilotFlights(personalFlights);\n setAllPilotFlights(personalFlights);\n setTotalPilotTime(getFlightTime(personalFlights));\n setAllFlights(flights);\n setAllGliderFlights(flights);\n setTotalGliderTime(getFlightTime(flights));\n setTotalTowTime(getFlightTime(flights));\n setAllTowFlights(flights);\n var allPilotEntry = {\n \"first\":\"All\",\n \"last\":\"\",\n \"SK\":\"All\",\n }\n setTowPilots([allPilotEntry].concat(pilots.filter((a)=>(a.isTowPilot)).sort((a, b) => (a.first+a.last).localeCompare(b.first+b.last))));\n setFlightViewType(\"All\");\n\n } catch (e) {\n onError(e); \n }\n }, [userID, club, tzoffset, startDate, endDate, getFlightTime, clubTimeZone])\n\n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return false;\n }\n \n loadFlights(true)\n\n return true;\n }\n\n onLoad();\n // if (onLoad()) {\n // // Refresh flight status\n // const interval = setInterval(loadFlights, 20000);\n // return () => {\n // clearInterval(interval);\n // };\n // }\n }, [isAuthenticated, club, userID, loadFlights]);\n\n function functionalStart(flight){\n if (flight.acceptedAt && flight.launchedAt) {\n return ((flight.acceptedAt > flight.launchedAt) ? flight.acceptedAt : flight.launchedAt);\n }\n if (flight.acceptedAt) {\n return flight.acceptedAt;\n }\n return flight.launchedAt;\n }\n\n function toHHMM(delta) {\n let minutes = delta;\n let hours = Math.floor(minutes/60);\n const hourString = hours.toString();\n minutes -= hours*60;\n minutes = Math.round(minutes);\n const minuteString = minutes < 10 ? \"0\" + minutes.toString() : minutes.toString();\n return !isNaN(hours) ? hourString + \":\" + minuteString : \"tbd\";\n }\n\n function changeList(listType){\n if (actionType === \"by tow\" && listType !== \"by tow\") {\n setGliderView(\"All\");\n }\n if (actionType !== \"by tow\" && listType === \"by tow\") {\n setTowView(\"All\");\n }\n if (listType === \"personal\") {\n // In case All Flights were filtered to a glider that was not flown by the pilot, when changing to the pilot view\n if (!(pilotGliders.includes(flightViewType))) {\n setFlightViewType(\"All\");\n setGliderView(\"All\");\n }\n }\n //loadFlights();\n setActionType(listType);\n }\n\n function setGliderView(glider) {\n let personalFlights = allPilotFlights.filter(a => ((\"isDateDivider\" in a) || (a.user === userID) || (a.passengerID === userID)));\n let filteredFlights = allFlights;\n if (glider !== \"All\") {\n filteredFlights = filteredFlights.filter(a => (\"isDateDivider\" in a || a.glider === glider));\n filteredFlights = filteredFlights.filter(a => (!(\"isDateDivider\" in a) || filteredFlights.filter((b)=>(b.dateString === a.dateString)).length>1));\n personalFlights = personalFlights.filter(a => (\"isDateDivider\" in a || a.glider === glider));\n personalFlights = personalFlights.filter(a => (!(\"isDateDivider\" in a) || personalFlights.filter((b)=>(b.dateString === a.dateString)).length>1));\n }\n setAllGliderFlights(filteredFlights);\n setTotalGliderTime(getFlightTime(filteredFlights));\n setPilotFlights(personalFlights);\n setTotalPilotTime(getFlightTime(personalFlights));\n setFlightViewType(glider);\n }\n\n function setTowView(pilot){\n setFlightViewType(pilot);\n if (pilot === \"All\") {\n setAllTowFlights(allFlights);\n setTotalTowTime(getFlightTime(allFlights));\n } else {\n var filteredFlights = allFlights.filter(a => (\"isDateDivider\" in a || a.towPilot === pilot));\n var dateFiltered = filteredFlights.filter(a => (!(\"isDateDivider\" in a) || filteredFlights.filter((b)=>(b.dateString === a.dateString)).length>1));\n setAllTowFlights(dateFiltered);\n setTotalTowTime(getFlightTime(dateFiltered));\n }\n }\n\n function selectRow(flight){\n var data;\n data = {\n 'glider':flight.glider,\n 'P1':flight.P1,\n 'P2':flight.P2,\n 'flyWith':flight.flyWith,\n 'launchType':flight.launchType,\n 'takeoff':flight.takeoff,\n 'landing':flight.landing,\n \"takeoffMillis\": flight.takeoffMillis,\n \"landingMillis\": flight.landingMillis,\n 'SK':flight.SK,\n 'pilotInCharge':flight.pilotInCharge,\n 'shareCost': flight.shareCost,\n 'towPilot':flight.towPilot,\n 'tug':flight.tug,\n 'launchTransaction': flight.launchTransaction,\n 'landingTransaction':flight.landingTransaction,\n 'user':flight.user,\n 'history': flight.history,\n 'flightLocked': flight.flightLocked,\n \"launchCost\": flight.launchCost,\n \"flightCost\" : flight.flightCost,\n 'passengerID':flight.passengerID,\n 'dateString' :flight.dateString,\n 'releaseHeight' :flight.releaseHeight,\n }\n setFlightGlider(flight.glider);\n setFlightPilot(flight.user);\n if(flight.flyWith !== 'Alone' && flight.passengerID === '')\n {\n if(flight.pilotInCharge){\n setFlightPassenger(flight.P2);\n data.passengerID = flight.P2;\n\n }\n else{\n setFlightPassenger(flight.P1);\n data.passengerID = flight.P1;\n }\n }\n else{\n setFlightPassenger(flight.passengerID);\n }\n setFlightType(flight.flyWith);\n setLaunchType(flight.launchType);\n setFlightTakeoff(flight.takeoff);\n setFlightLanding(flight.landing);\n setReleaseHeight(flight.releaseHeight?.toString());\n setPilotInCharge(flight.pilotInCharge);\n setTowPilot(flight.towPilot);\n setTug(flight.tug);\n setShareCost(flight.shareCost);\n if(!flight.shareCost){\n setShareCost(false);\n data.shareCost=false;\n }\n if('introRef' in flight && flight.introRef!==''){\n data[\"introRef\"] = flight.introRef;\n setIntroSelected(flight.introRef);\n }\n setCurrentFlightData(data);\n setShowInfoModal(true)\n }\n\n function setFlightFlyWith(event){\n if(event === 'Alone'){\n setFlightPassenger('');\n setShareCost(false);\n setPilotInCharge(true);\n setIntroSelected(null);\n }\n else if(event === 'Member'||event === 'Instructor'){\n if(flightType === 'Intro'||flightType === 'Friend'){\n setFlightPassenger('');\n }\n if(event === 'Instructor'){\n let passengerList = allActivePilots.filter((a)=>(a.SK===flightPassenger));\n if(passengerList.length > 0 && !passengerList[0].isInstructor){\n setFlightPassenger('');\n }\n setShareCost(false);\n setPilotInCharge(false);\n }\n setIntroSelected(null);\n }\n else{\n let passengerList = allActivePilots.filter((a)=>(a.SK===flightPassenger));\n var passenger = passengerList.length > 0 ? passengerList[0].first+' '+passengerList[0].last: flightPassenger;\n if(event === 'Intro'){\n setFlightPassenger('');\n setLaunchType(undefined);\n setPilotInCharge(true);\n }\n else\n {\n setFlightPassenger(passenger);\n setIntroSelected(null);\n }\n setShareCost(false);\n }\n setFlightType(event);\n }\n\n function setStart(date){\n setAllFlights(null);\n setAllGliderFlights(null);\n setAllTowFlights(null);\n setPilotFlights(null);\n\n if(date>endDate){\n setEndDate(endDate);\n }\n setStartDate(date);\n }\n\n function setEnd(date){\n setAllFlights(null);\n setAllGliderFlights(null);\n setAllTowFlights(null);\n setPilotFlights(null);\n\n if(startDate>date){\n setStartDate(date);\n }\n setEndDate(date);\n }\n \n function selectIntro(item){\n const intro = returnIntro(club, item, intros);\n setIntroSelected(intro.SK);\n setLaunchType(intro.launchType);\n setFlightPassenger(intro.recipientFirst+' '+intro.recipientLast);\n }\n\n function filterIntro(filterText, intro) {\n const lowerFilter = filterText.toLowerCase();\n let match = (filterText === \"\") ? true : false;\n if (!match) {\n match = intro.SN.toLowerCase().includes(lowerFilter)\n }\n if (!match) {\n const fullName = `${intro.recipientFirst} ${intro.recipientLast}`.toLowerCase();\n match = fullName.includes(lowerFilter)\n }\n if (!match) {\n match = intro.buyerEmail.toLowerCase().includes(lowerFilter)\n }\n return (match)\n }\n\n function updateLaunchType(launchId) {\n setLaunchType(launchId)\n const launch = launchTypes.find((t) => t.SK === launchId)\n if(launch) {\n if(launch.heightRanges != null && releaseHeight == null) {\n setReleaseHeight(0)\n } else if(launch.heightRanges == null && releaseHeight != null) {\n setReleaseHeight(null)\n }\n }\n }\n\n function renderFlightInfoForm() {\n const activePilotList = allActivePilots.filter((a)=>(isUserPilot(a)));\n const pilot = allActivePilots.find((a)=>(a.SK===currentFlightData.user));\n const passenger = allActivePilots.find((a)=>(a.SK===currentFlightData.passengerID)) || currentFlightData.passengerID;\n const newPilot = allActivePilots.find((a)=>(a.SK===flightPilot)) || '';\n const newPassenger = allActivePilots.find((a)=>(a.SK===flightPassenger)) || ''; \n const oldTowPilot = allActivePilots.find((a)=>(a.SK===currentFlightData.towPilot)) || '';\n const flightTypes = [\"Alone\", \"Instructor\",\"Member\",\"Intro\",\"Friend\"];\n\n return (\n <div className=\"d-flex flex-column gap-3\">\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Glider:</InputGroup.Text>\n <FormControl as=\"select\" value = {flightGlider} onChange = {(e) => setFlightGlider(e.target.value)}>\n {<option key=\"current\" value= {currentFlightData.glider}>{currentFlightData.glider}</option>}\n {allGliders.filter((a) => (a.SK!==currentFlightData.glider)).map((item, i) =>\n <option key={i} value={item.SK}> {item.SK} </option>\n )}\n </FormControl>\n </InputGroup>\n {currentFlightData.glider !== flightGlider && <Form.Text>Original: {currentFlightData.glider}</Form.Text>}\n </FormGroup>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Pilot:</InputGroup.Text>\n <FormControl as=\"select\" value = {flightPilot} onChange = {(e) => setFlightPilot(e.target.value)}>\n {<option key=\"current\" value= {pilot.SK}>{pilot.first} {pilot.last}</option>}\n {activePilotList.filter((a) => (a.SK!==pilot)).map((item, i) =>\n <option key={i} value={item.SK}> {item.first} {item.last} </option>\n )}\n </FormControl>\n </InputGroup>\n {pilot.SK !== flightPilot && <Form.Text>Original: {pilot.first} {pilot.last}</Form.Text>}\n </FormGroup>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Flying With:</InputGroup.Text>\n <FormControl as=\"select\" value = {flightType} onChange = {(e) => setFlightFlyWith(e.target.value)}>\n {<option key=\"current\" value={currentFlightData.flyWith}>{currentFlightData.flyWith}</option>}\n {flightTypes.filter((a) => (a!==currentFlightData.flyWith)).map((item, i) =>\n <option key={i} value={item}> {item} </option>\n )}\n </FormControl>\n </InputGroup>\n {currentFlightData.flyWith !== flightType && <Form.Text>Original: {currentFlightData.flyWith}</Form.Text>}\n </FormGroup>\n { flightType === 'Intro' && \n <>\n <FormGroup controlId=\"introSearch\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Search for intro: </InputGroup.Text>\n <FormControl\n type=\"text\"\n placeholder=\"Start typing reference number, name, or email\"\n value = {searchText}\n onChange={e => setSearchText(e.target.value)}\n />\n </InputGroup>\n </FormGroup>\n { intros.filter((a) => (filterIntro(searchText, a))).slice(0,5).map((item, i) =>\n <Button key={i} value={item.SK} onClick = {(e) => selectIntro(e.target.value)}>{item.SN}, {item.recipientFirst} {item.recipientLast}, {item.buyerEmail}</Button>\n )\n }\n </>\n }\n {(flightType==='Member') &&\n <div>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Passenger:</InputGroup.Text>\n <FormControl as=\"select\" value = {flightPassenger} onChange = {(e) => setFlightPassenger(e.target.value)}>\n {flightPassenger!==''&&passenger!==\"\"&&<option key=\"current\" value={passenger.SK}>{passenger.first} {passenger.last}</option>}\n {flightPassenger===\"\"&&<option key=\"current\" value={''}>Member</option>}\n {activePilotList.filter((a) => (a.SK!==passenger)).map((item, i) =>\n <option key={i} value={item.SK}> {item.first} {item.last} </option>\n )}\n </FormControl>\n </InputGroup>\n {typeof passenger !== 'string' && flightPassenger !== passenger.SK && <Form.Text>Original: {passenger.first} {passenger.last}</Form.Text>}\n {typeof passenger === 'string' && flightPassenger !== passenger && <Form.Text>Original: {passenger === '' ? \"None\" : passenger}</Form.Text>}\n </FormGroup>\n </div>\n }\n {(flightType==='Instructor') &&\n <div>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Instructor:</InputGroup.Text>\n <FormControl as=\"select\" value={flightPassenger} onChange = {(e) => setFlightPassenger(e.target.value)}>\n {activePilotList.filter((a) => (a.SK===passenger.SK && a.isInstructor)).length===1&&<option key=\"current\" value={passenger.SK}>{passenger.first} {passenger.last}</option>}\n {activePilotList.filter((a) => (a.SK===passenger.SK && a.isInstructor)).length===0&&<option key=\"current\" value={''}>Instructor</option>}\n {activePilotList.filter((a) => (a.SK!==passenger.SK)&&(a.isInstructor === true)).map((item, i) =>\n <option key={i} value={item.SK}> {item.first} {item.last} </option>\n )}\n </FormControl>\n </InputGroup>\n {typeof passenger !== 'string' && flightPassenger !== passenger.SK && <Form.Text>Original: {passenger.first} {passenger.last}</Form.Text>}\n {typeof passenger === 'string' && flightPassenger !== passenger && <Form.Text>Original: {passenger === '' ? \"None\" : passenger}</Form.Text>}\n </FormGroup>\n </div>\n }\n { (flightType === 'Intro' || flightType === 'Friend') && \n <div>\n <FormGroup controlId=\"passengerFirst\" size=\"lg\">\n <InputGroup>\n {<InputGroup.Text>Passenger Name: </InputGroup.Text>}\n <FormControl\n type=\"text\"\n value={flightPassenger}\n disabled = {flightType === 'Intro'}\n onChange={e => setFlightPassenger(e.target.value)}\n />\n </InputGroup>\n {typeof passenger !== 'string' && flightPassenger !== passenger.SK && <Form.Text>Original: {passenger.first} {passenger.last}</Form.Text>}\n {typeof passenger === 'string' && flightPassenger !== passenger && <Form.Text>Original: {passenger === '' ? \"None\" : passenger}</Form.Text>}\n </FormGroup>\n </div>\n } \n { ((flightType === \"Instructor\") || (flightType === \"Member\") || (flightType === \"Friend\")) &&\n <>\n <FormGroup controlId=\"pilotInCharge\" size=\"lg\"><h4 style={{display: \"inline\"}}>Pilot in Command: </h4>\n <ToggleButtonGroup name=\"pilotFormCheck\" type=\"radio\" value={pilotInCharge} onChange={setPilotInCharge}>\n <ToggleButton id=\"Instructor\" name=\"pilotFormCheck\" value={true} disabled={flightType === \"Instructor\"}>{newPilot.first} {newPilot.last}</ToggleButton>\n {newPassenger !== '' && <ToggleButton id=\"passengerName\" name=\"pilotFormCheck\" value={false} disabled={flightType === \"Instructor\"}>\n {(newPassenger === \"\") ? flightType : newPassenger.first+' '+newPassenger.last}\n </ToggleButton>}\n {newPassenger === '' && <ToggleButton id=\"unnamed\" name=\"pilotFormCheck\" value={false} disabled={flightType === \"Instructor\"}>\n {(flightPassenger === \"\") ? flightType : flightPassenger}\n </ToggleButton>}\n </ToggleButtonGroup>\n </FormGroup>\n </>\n }\n {flightType === 'Member' && \n <FormGroup controlId=\"splitCost\" size=\"lg\"><h4 style={{display: \"inline\"}}>Share Flight Cost? </h4>\n <ToggleButtonGroup name=\"splitFormCheck\" type=\"radio\" value={shareCost} onChange={setShareCost}>\n <ToggleButton id=\"No\" name=\"splitFormCheck\" value={false}>No</ToggleButton>\n <ToggleButton id=\"Yes\" name=\"splitFormCheck\" value={true}>Yes</ToggleButton>\n </ToggleButtonGroup>\n </FormGroup>\n }\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Launch Type:</InputGroup.Text>\n <FormControl as=\"select\" value={launchType} onChange={(e) => updateLaunchType(e.target.value)} disabled={flightType === 'Intro'}>\n {launchType === '' && <option key=\"current\" value={''}>Launch Type</option>}\n {launchTypes.map((item, i) =>\n <option key={i} value={item.SK} > {item.SK} </option>\n )}\n </FormControl>\n </InputGroup>\n {currentFlightData.launchType !== launchType && <Form.Text>Original: {currentFlightData.launchType}</Form.Text>}\n </FormGroup>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Tow Pilot:</InputGroup.Text>\n <FormControl as=\"select\" value = {towPilot} onChange = {(e) => setTowPilot(e.target.value)}>\n {!towPilot && <option key=\"current\" value= {currentFlightData.towPilot}>{\"None\"}</option>}\n {towPilot && activePilotList.filter((a) => (a.SK === currentFlightData.towPilot)).map((item, i) =>\n <option key={i} value={item.SK}> {item.first} {item.last} </option>\n )}\n {activePilotList.filter((a) => (a.SK !== currentFlightData.towPilot && a.isTowPilot)).map((item, i) =>\n <option key={i+1} value={item.SK}> {item.first} {item.last} </option>\n )}\n </FormControl>\n </InputGroup>\n {currentFlightData.towPilot !== towPilot && <Form.Text>Original: {typeof oldTowPilot !== 'string' ? oldTowPilot.first+' '+oldTowPilot.last : \"None\"}</Form.Text>}\n </FormGroup>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Tug:</InputGroup.Text>\n <FormControl as=\"select\" value = {tug} onChange = {(e) => setTug(e.target.value)}>\n {!tug && <option key=\"current\" value= {currentFlightData.tug}>{\"None\"}</option>}\n {currentFlightData.tug && <option key=\"current\" value= {currentFlightData.tug}>{currentFlightData.tug}</option>}\n {tugs.filter((a) => (a.SK!==currentFlightData.tug)).map((item, i) =>\n <option key={i} value={item.SK}> {item.SK} </option>\n )}\n </FormControl>\n </InputGroup>\n {currentFlightData.tug !== tug && <Form.Text>Original: {currentFlightData.tug ? currentFlightData.tug : \"None\"}</Form.Text>}\n </FormGroup>\n <FormGroup controlId=\"takeoffTime\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Launch Time:</InputGroup.Text>\n <FormControl\n type=\"time\"\n step=\"60000\"\n defaultValue={flightTakeoff}\n onChange={e => setFlightTakeoff(e.target.value)}\n />\n </InputGroup>\n {currentFlightData.takeoff !== flightTakeoff && <Form.Text muted>Original: {isoTimeToLocaleTime(currentFlightData.takeoff)}</Form.Text>}\n </FormGroup>\n <FormGroup controlId=\"landingTime\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Landing Time:</InputGroup.Text>\n <FormControl as = 'input'\n type=\"time\"\n step=\"60000\"\n defaultValue={flightLanding}\n onChange={e => setFlightLanding(e.target.value)}\n />\n </InputGroup>\n {currentFlightData.landing !== flightLanding && <Form.Text muted>Original: {isoTimeToLocaleTime(currentFlightData.landing)}</Form.Text>}\n </FormGroup>\n {releaseHeight != null && \n <FormGroup controlId=\"releaseHeight\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Release Height:</InputGroup.Text>\n <FormControl\n as = 'input'\n type=\"number\"\n min=\"0\"\n defaultValue={releaseHeight}\n onChange={e => setReleaseHeight(e.target.value)}\n />\n <InputGroup.Text>{heightUnit}</InputGroup.Text>\n </InputGroup>\n {currentFlightData.releaseHeight?.toString() !== releaseHeight && <Form.Text muted>Original: {releaseHeightToString(currentFlightData.releaseHeight)}</Form.Text>}\n </FormGroup>\n }\n </div>\n )\n }\n\n const heightUnit = useMemo(() => {\n if(!clubUnits) return \"ft\"\n return clubUnits.height ? clubUnits.height.S : \"ft\"\n }, [clubUnits])\n\n function releaseHeightToString(releaseHeight) {\n const height = parseInt(releaseHeight)\n if(releaseHeight == null) {\n return \"N/a\"\n } else if(height === 0 || Number.isNaN(height)) {\n return \"Not Recorded\"\n } else {\n return `${height} ${heightUnit}`\n }\n }\n\n function renderFlightInfo() {\n const infoEntries = []\n\n const releaseHeightStr = releaseHeightToString(currentFlightData.releaseHeight)\n\n infoEntries.push({label: \"Glider\", value: currentFlightData.glider})\n infoEntries.push({label: \"Pilot\", value: nameFromPilotId(currentFlightData.user, allPilots)})\n infoEntries.push({label: \"Flying with\", value: currentFlightData.flyWith})\n if(flightType === 'Member') {\n infoEntries.push({label: \"Passenger\", value: nameFromPilotId(currentFlightData.passengerID, allPilots)})\n infoEntries.push({label: \"Cost Shared\", value: currentFlightData.shareCost ? \"Yes\" : \"No\"})\n }\n if(flightType === 'Intro' || flightType === 'Friend') {\n infoEntries.push({label: \"Passenger\", value: currentFlightData.passengerID})\n }\n if(flightType === 'Instructor') {\n infoEntries.push({label: \"Instructor\", value: nameFromPilotId(currentFlightData.passengerID, allPilots)})\n }\n if(flightType === \"Instructor\" || flightType === \"Member\" || flightType === \"Friend\" || flightType === \"Intro\"){\n infoEntries.push({label: \"Pilot in Charge\", value: currentFlightData.P1})\n }\n infoEntries.push({label: \"Launch Type\", value: currentFlightData.launchType})\n infoEntries.push({label: \"Tow Pilot\", value: nameFromPilotId(currentFlightData.towPilot, allPilots)})\n infoEntries.push({label: \"Tug\", value: currentFlightData.tug ? currentFlightData.tug : \"None\"})\n infoEntries.push({label: \"Date\", value: currentFlightData.dateString})\n infoEntries.push({label: \"Takeoff\", value: isoTimeToLocaleTime(currentFlightData.takeoff)})\n infoEntries.push({label: \"Landing\", value: isoTimeToLocaleTime(currentFlightData.landing)})\n infoEntries.push({label: \"Release Height\", value: releaseHeightStr})\n if ((userID === currentFlightData.user) && (currentFlightData.flyWith !== \"Intro\")) {\n infoEntries.push({label: \"Launch Cost\", value: `$${currentFlightData.launchCost ?? 0}`})\n infoEntries.push({label: \"Flight Cost\", value: `$${currentFlightData.flightCost ?? 0}`})\n }\n infoEntries.push({label: \"Flight ID\", value: currentFlightData.SK})\n return(\n <div className=\"d-flex flex-column gap-3\">\n {infoEntries.map((entry, i) =>\n <span key={i}>\n <strong>{entry.label}: </strong>{entry.value}\n </span>\n )}\n {(userIsAdmin || userCanEditLogs) && \n <Button onClick={() => setInfoModalState(ModalState.EDIT)} disabled={currentFlightData.flightLocked}>\n {currentFlightData.flightLocked ? \"Flight Locked\" : \"Edit Flight\"}\n </Button>}\n\n {renderFlightRevisions()}\n </div>\n )\n }\n\n function renderFlightRevisions() {\n return (\n <section>\n <Accordion defaultActiveKey={expandRevisions ? '0' : ''} onSelect={(e) => setExpandRevisions(e !== null)}>\n <Accordion.Item eventKey=\"0\">\n <Accordion.Header>Revisions</Accordion.Header>\n <Accordion.Body className=\"overflow-x-scroll\">\n {(currentFlightData.history && currentFlightData.history.length > 0) || currentFlightData.flightLocked ?\n <RevisionsTable currentFlightData={currentFlightData} allPilots={allPilots} rawFlights={rawFlights} /> :\n <span>This flight record has not been modified</span>\n }\n </Accordion.Body>\n </Accordion.Item>\n </Accordion>\n </section>\n )\n }\n\n function renderModalContent(){\n switch(infoModalState){\n default:\n case ModalState.INFO:\n return(<>\n <Modal.Header closeButton>\n <Modal.Title>Flight Info</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n {(!allGliders || !allActivePilots || !launchTypes || !tugs) ?\n <div className=\"d-flex align-items-center justify-content-center my-2\">\n <Spinner/>\n </div>\n : (showInfoModal && renderFlightInfo())\n }\n </Modal.Body>\n\n <Modal.Footer>\n <Button onClick={() => resetFlightInfo()}>Close</Button>\n </Modal.Footer>\n </>)\n case ModalState.EDIT:\n return(<>\n <Modal.Header closeButton>\n <Modal.Title>Editing Flight</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n {(!allGliders || !allActivePilots || !launchTypes || !tugs) ?\n <div className=\"d-flex align-items-center justify-content-center my-2\">\n <Spinner/>\n </div>\n : (showInfoModal && renderFlightInfoForm())\n }\n </Modal.Body>\n\n <Modal.Footer>\n <Button variant=\"secondary\" onClick={() => setInfoModalState(ModalState.INFO)}>Cancel</Button>\n <Button onClick={() => setInfoModalState(ModalState.CONFIRM)}>Submit Changes</Button>\n </Modal.Footer>\n </>)\n case ModalState.CONFIRM:\n return(<>\n <Modal.Header>\n <Modal.Title>Confirm Changes</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n {renderFlightChanges()}\n </Modal.Body>\n\n <Modal.Footer>\n <Button variant=\"secondary\" onClick={() => setInfoModalState(ModalState.EDIT)}>Back</Button>\n <LoaderButton isLoading={isSubmitting} onClick={() => submitAPICall()}>Confirm</LoaderButton>\n </Modal.Footer>\n </>)\n }\n }\n\n function closeModal() {\n setInfoModalState(ModalState.INFO)\n setShowInfoModal(false)\n }\n\n function renderFlightInfoModal(){\n return (\n <>\n <Modal show={showInfoModal} fullscreen=\"sm-down\" onHide={closeModal} background=\"static\" animation={false}\n dialogClassName=\"modal-dialog-max-width\"\n >\n {renderModalContent()}\n </Modal>\n </>\n )\n }\n\n //displays new flight info, with old flight info crossed out\n function renderFlightChanges(){\n var pilotList = allActivePilots.filter((a)=>(a.SK===flightPilot));\n var passengerList = allActivePilots.filter((a)=>(a.SK===flightPassenger));\n var pilot = pilotList.length > 0 ? pilotList[0] : null;\n var passenger = passengerList.length > 0 ? passengerList[0] : null;\n var oldTowPilotList = allActivePilots.filter((a)=>(a.SK===currentFlightData.towPilot));\n var oldTowPilot = oldTowPilotList.length > 0 ? oldTowPilotList[0] : null;\n var newTowPilotList = allActivePilots.filter((a)=>(a.SK===towPilot));\n var newTowPilot = newTowPilotList.length > 0 ? newTowPilotList[0] : null;\n return (\n <>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Glider:</span>\n {currentFlightData.glider !== flightGlider && <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.glider}</span>}\n <span> {flightGlider}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Pilot:</span>\n {currentFlightData.user !== flightPilot && \n <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.pilotInCharge ? currentFlightData.P1 : currentFlightData.P2}</span>}\n <span> {pilot ? pilot.first+' '+pilot.last : 'None'}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Flying With:</span>\n {currentFlightData.flyWith !== flightType && <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.flyWith}</span>}\n <span> {flightType}</span>\n </div>\n {currentFlightData.flyWith !== 'Alone' && flightType!=='Alone'&&\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Passenger:</span> \n {currentFlightData.passengerID !== flightPassenger && \n <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.pilotInCharge ? currentFlightData.P2 : currentFlightData.P1}</span>}\n <span> {passenger ? passenger.first+' '+passenger.last : flightPassenger}</span>\n </div>\n }\n {currentFlightData.flyWith === 'Alone' && flightType!=='Alone'&&\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Passenger:</span>\n <span style = {{\"textDecoration\":\"line-through\"}}> None</span>\n <span> {passenger ? passenger.first+' '+passenger.last : flightPassenger}</span>\n </div>\n }\n {currentFlightData.flyWith !== 'Alone' && flightType==='Alone'&&\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Passenger:</span> \n <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.pilotInCharge ? currentFlightData.P2 : currentFlightData.P1}</span>\n <span> None</span>\n </div>\n }\n {(currentFlightData.flyWith==='Member' || flightType==='Member') && \n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Sharing Cost?:</span> \n {currentFlightData.shareCost !== shareCost && \n <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.shareCost.toString()}</span>}\n <span> {shareCost.toString()}</span>\n </div>\n }\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Pilot in Command:</span>\n {currentFlightData.pilotInCharge !== pilotInCharge && <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.P1}</span>} \n {passenger && <span> {pilotInCharge ? pilot.first+' '+pilot.last : passenger.first+' '+passenger.last}</span>}\n {!passenger && <span> {pilotInCharge ? pilot.first+' '+pilot.last : flightPassenger}</span>}\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Launch:</span>\n {currentFlightData.launchType !== launchType && <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.launchType}</span>}\n <span> {launchType}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Takeoff Time:</span>\n {currentFlightData.takeoff !== flightTakeoff && <span style = {{\"textDecoration\":\"line-through\"}}> {isoTimeToLocaleTime(currentFlightData.takeoff)}</span>}\n <span> {isoTimeToLocaleTime(flightTakeoff)}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Landing Time:</span>\n {currentFlightData.landing !== flightLanding && <span style = {{\"textDecoration\":\"line-through\"}}> {isoTimeToLocaleTime(currentFlightData.landing)}</span>}\n <span> {isoTimeToLocaleTime(flightLanding)}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Release Height:</span>\n {releaseHeightToString(currentFlightData.releaseHeight) !== releaseHeightToString(releaseHeight) && \n <span style = {{\"textDecoration\":\"line-through\"}}> {releaseHeightToString(currentFlightData.releaseHeight)}</span>}\n <span> {releaseHeightToString(releaseHeight)}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Tow Pilot:</span>\n {currentFlightData.towPilot && currentFlightData.towPilot !== towPilot && <span style = {{\"textDecoration\":\"line-through\"}}> {oldTowPilot ? oldTowPilot.first+' '+oldTowPilot.last : \"None\"}</span>}\n {!currentFlightData.towPilot && towPilot && <span style = {{\"textDecoration\":\"line-through\"}}> None</span>}\n <span> {newTowPilot ? newTowPilot.first+' '+newTowPilot.last : \"None\"}</span>\n </div>\n <div className=\"fs-4\">\n <span className=\"fw-semibold\">Tug:</span>\n {currentFlightData.tug && currentFlightData.tug !== tug && <span style = {{\"textDecoration\":\"line-through\"}}> {currentFlightData.tug}</span>}\n {!currentFlightData.tug && tug && <span style = {{\"textDecoration\":\"line-through\"}}> None</span>}\n <span> {tug ? tug : \"None\"}</span>\n </div>\n </>\n );\n }\n\n async function submitAPICall(){\n setIsSubmitting(true)\n var pilot = allActivePilots.filter((a)=>(a.SK===flightPilot));\n var passenger = allActivePilots.filter((a)=>(a.SK===flightPassenger));\n const launchDate = DateTime.fromISO(`${currentFlightData.dateString}T${flightTakeoff}`, {zone: clubTimeZone})\n const landDate = DateTime.fromISO(`${currentFlightData.dateString}T${flightLanding}`, {zone: clubTimeZone})\n\n // Since the time inputs stripped seconds / milliseconds we check if the new date is equivalent to the old date\n const ogTakeoff = DateTime.fromMillis(currentFlightData.takeoffMillis ?? 0)\n const ogLanding = DateTime.fromMillis(currentFlightData.landingMillis ?? 0)\n const takeoffChanged = ogTakeoff.set({second: 0, millisecond: 0}).toMillis() !== launchDate.toMillis()\n const landingChanged = ogLanding.set({second: 0, millisecond: 0}).toMillis() !== landDate.toMillis()\n const newReleaseHeight = parseInt(releaseHeight)\n\n if(!Number.isNaN(newReleaseHeight) && newReleaseHeight < 0) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Release height must be positive\"\n })\n setIsSubmitting(false)\n return\n }\n\n const data = {\n \"action\":\"ChangeFlight\",\n \"by\":userID,\n \"club\":club,\n \"date\":currentFlightData.dateString,//localDateString,\n \"id\":currentFlightData.SK,\n \"glider\":flightGlider,\n \"first\":pilot.length > 0 ? pilot[0].first : '',\n \"last\":pilot.length > 0 ? pilot[0].last : '',\n \"user\":pilot.length > 0 ? pilot[0].SK : '',\n \"passengerFirst\":passenger.length > 0 ? passenger[0].first : flightPassenger.substring(0,flightPassenger.indexOf(\" \")),\n \"passengerLast\":passenger.length > 0 ? passenger[0].last : flightPassenger.substring(flightPassenger.indexOf(\" \")+1),\n \"passengerID\":passenger.length > 0 ? passenger[0].SK : '',\n \"pilotInCharge\":pilotInCharge,\n \"towPilot\":towPilot,\n \"tug\":tug,\n \"launchType\":launchType,\n \"shareCost\":flightType === \"Member\" ? shareCost : false,\n \"flyWith\":flightType,\n \"launchedAt\": takeoffChanged ? launchDate.toMillis() : currentFlightData.takeoffMillis,\n \"landedAt\": landingChanged ? landDate.toMillis() : currentFlightData.landingMillis,\n 'launchTransaction': currentFlightData.launchTransaction,\n 'landingTransaction':currentFlightData.landingTransaction,\n \"releaseHeight\": !Number.isNaN(newReleaseHeight) ? newReleaseHeight : releaseHeight == null ? null : 0\n }\n if(introSelected){\n data[\"introRef\"] = introSelected;\n } \n else if(currentFlightData.flyWith === 'Intro' && flightType !== 'Intro'){\n data[\"introRef\"] = '';\n const oldIntroBody = {\n 'type':'INTRO',\n 'id':currentFlightData.introRef,\n 'club':club,\n 'data':{'flightRef':''},\n }\n await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-item/\", options: {'body':oldIntroBody}});\n }\n if(flightType === 'Intro'){\n const newIntroBody = {\n 'type':'INTRO',\n 'id':introSelected,\n 'club':club,\n 'data':{'flightRef':currentFlightData.SK},\n };\n await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-item/\", options: {'body':newIntroBody}});\n }\n const response = await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-flight/\", options: {\"body\": data}});\n if(response.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: response.body.message ?? \"Could not update flight\",\n })\n } else {\n await loadFlights()\n resetFlightInfo();\n sendToast({\n status: NotificationStatus.Success,\n message: `Sucessfully updated flight ${data.id}`\n })\n }\n setIsSubmitting(false)\n }\n\n function resetFlightInfo(){\n setShowInfoModal(false)\n setInfoModalState(ModalState.INFO)\n setCurrentFlightData({});\n setFlightGlider(null);\n setFlightPilot(null);\n setFlightPassenger(null);\n setFlightType(null);\n setLaunchType(null);\n setFlightTakeoff(null);\n setFlightLanding(null);\n setReleaseHeight(null);\n setPilotInCharge(null);\n setTowPilot(null);\n setTug(null);\n }\n\n function localeDateString(dateStr) {\n const date = new Date(dateStr)\n // offset the date being interpreted as UTC\n date.setTime(date.getTime() + (tzoffset*60*1000))\n return date.toLocaleDateString(window.navigator.language, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\"\n }) \n }\n\n return (\n <>\n {renderFlightInfoModal()}\n <h1 className=\"text-center my-3\">\n {startDate !== endDate && `Flight Logs for ${localeDateString(startDate)} to ${localeDateString(endDate)}`}\n {startDate === endDate && `Flight Logs for ${localeDateString(startDate)}`}\n </h1>\n <Form>\n <div className=\"d-flex flex-sm-row flex-column gap-3 justify-content-between text-sm-center text-start\">\n <div>\n <FormGroup controlId=\"startDate\" size=\"lg\">\n <FormLabel>Start Date:</FormLabel>\n <FormControl\n autoFocus\n type=\"date\"\n value={startDate}\n disabled={startDate === \"\"}\n onChange={e => setStart(e.target.value)}\n />\n </FormGroup>\n </div>\n <div>\n <FormGroup controlId=\"endDate\" size=\"lg\">\n <FormLabel>End Date:</FormLabel>\n <FormControl\n type=\"date\"\n value={endDate}\n disabled={endDate === \"\"}\n onChange={e => setEnd(e.target.value)}\n />\n </FormGroup>\n </div>\n </div>\n </Form>\n <hr></hr>\n <Container>\n <Row>\n <Col xs={6}>\n <Button variant=\"outline-secondary\" type=\"button\" disabled={false} active={actionType === \"by time\"} onClick = {() => changeList(\"by time\")}>\n All flights\n </Button>\n <Button variant=\"outline-secondary\" type=\"button\" disabled={false} active={actionType === \"personal\"} onClick = {() => changeList(\"personal\")}>\n My flights\n </Button>\n <Button variant=\"outline-secondary\" type=\"button\" disabled={false} active={actionType === \"by tow\"} onClick = {() => changeList(\"by tow\")}>\n Tows\n </Button>\n </Col>\n <Col xs={6}>\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Filter by: </InputGroup.Text>\n {(actionType === \"by time\") &&\n <FormControl title=\"glider filter\" as=\"select\" value={flightViewType} onChange = {(e) => setGliderView(e.target.value)}>\n {[\"All\"].concat(gliders).map((item) =>\n <option key={item + \"1\"} value={item}> {item} </option>\n )}\n </FormControl>\n }\n {(actionType === \"personal\") &&\n <FormControl title=\"glider filter\" as=\"select\" value={flightViewType} onChange = {(e) => setGliderView(e.target.value)}>\n {[\"All\"].concat(pilotGliders).map((item) =>\n <option key={item + \"2\"} value={item}> {item} </option>\n )}\n </FormControl>\n }\n {(actionType === \"by tow\") &&\n <FormControl title=\"tow pilot filter\" as=\"select\" value={flightViewType} onChange = {(e) => setTowView(e.target.value)}>\n {towPilots.map((item) =>\n <option key={item.SK} value={item.SK}>{item.first} {item.last}</option>\n )}\n </FormControl>\n }\n </InputGroup>\n </FormGroup>\n </Col>\n </Row>\n </Container>\n\n <div>\n <p>{flightSummary}</p>\n </div>\n\n <div className=\"container p-2\">\n <Alert show={errorMsg.length > 0} variant=\"danger\" onClose={() => setErrorMsg(\"\")} dismissible>{errorMsg}</Alert>\n <div className=\"row overflow-x-scroll\">\n <div className=\"col\">\n { actionType === \"personal\" &&\n <SelectableTable handler = {selectRow} headers={Object.values(userSchema)} items={Object.keys(userSchema)} rows={pilotFlights} />\n }\n { (actionType === \"by time\") &&\n <SelectableTable handler = {selectRow} headers={Object.values(schema)} items={Object.keys(schema)} rows={allGliderFlights} />\n }\n { (actionType === \"by tow\") &&\n <SelectableTable handler = {selectRow} headers={Object.values(towSchema)} items={Object.keys(towSchema)} rows={allTowFlights} />\n }\n </div>\n </div>\n </div>\n </>\n );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '../Amplify';\nimport { fetchAuthSession as fetchAuthSessionInternal } from './internal/fetchAuthSession';\n/**\n * Fetch the auth session including the tokens and credentials if they are available. By default it\n * does not refresh the auth tokens or credentials if they are loaded in storage already. You can force a refresh\n * with `{ forceRefresh: true }` input.\n *\n * @param options - Options configuring the fetch behavior.\n * @throws {@link AuthError} - Throws error when session information cannot be refreshed.\n * @returns Promise<AuthSession>\n */\nexport const fetchAuthSession = (options) => {\n return fetchAuthSessionInternal(Amplify, options);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify, fetchAuthSession } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { assertAuthTokens } from '../utils/types';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { toAttributeType } from '../utils/apiHelpers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { createUpdateUserAttributesClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\n/**\n * Updates user's attributes while authenticated.\n *\n * @param input - The UpdateUserAttributesInput object\n * @returns UpdateUserAttributesOutput\n * @throws - {@link UpdateUserAttributesException}\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport const updateUserAttributes = async (input) => {\n const { userAttributes, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const clientMetadata = options?.clientMetadata;\n assertTokenProviderConfig(authConfig);\n const { userPoolEndpoint, userPoolId } = authConfig;\n const { tokens } = await fetchAuthSession({ forceRefresh: false });\n assertAuthTokens(tokens);\n const updateUserAttributesClient = createUpdateUserAttributesClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { CodeDeliveryDetailsList } = await updateUserAttributesClient({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.UpdateUserAttributes),\n }, {\n AccessToken: tokens.accessToken.toString(),\n ClientMetadata: clientMetadata,\n UserAttributes: toAttributeType(userAttributes),\n });\n return {\n ...getConfirmedAttributes(userAttributes),\n ...getUnConfirmedAttributes(CodeDeliveryDetailsList),\n };\n};\nfunction getConfirmedAttributes(attributes) {\n const confirmedAttributes = {};\n Object.keys(attributes)?.forEach(key => {\n confirmedAttributes[key] = {\n isUpdated: true,\n nextStep: {\n updateAttributeStep: 'DONE',\n },\n };\n });\n return confirmedAttributes;\n}\nfunction getUnConfirmedAttributes(codeDeliveryDetailsList) {\n const unConfirmedAttributes = {};\n codeDeliveryDetailsList?.forEach(codeDeliveryDetails => {\n const { AttributeName, DeliveryMedium, Destination } = codeDeliveryDetails;\n if (AttributeName)\n unConfirmedAttributes[AttributeName] = {\n isUpdated: false,\n nextStep: {\n updateAttributeStep: 'CONFIRM_ATTRIBUTE_WITH_CODE',\n codeDeliveryDetails: {\n attributeName: AttributeName,\n deliveryMedium: DeliveryMedium,\n destination: Destination,\n },\n },\n };\n });\n return unConfirmedAttributes;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createUpdateUserAttributesClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('UpdateUserAttributes'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { updateUserAttributes } from \"aws-amplify/auth\";\nimport { Dropdown, Form, Nav} from \"react-bootstrap\";\nimport { useNavigate, Link } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport { loadClubs, returnClub, getUserData, loadPilotClubs, RequestType, apiRequest } from \"../libs/databaseAccess\";\n\nimport LoaderButton from \"../components/LoaderButton\";\n\nexport default function Settings() {\n const {userID, club, isAuthenticated, loadClubInfo } = useAppContext();\n const [allClubs, setAllClubs] = useState([]);\n const [newClubs, setNewClubs] = useState([]);\n const [pilotClubs, setPilotClubs] = useState([]);\n const [userInfo, setUserInfo] = useState([]);\n const navigate = useNavigate();\n\n const refreshClubList = useCallback(async () => {\n if (!isAuthenticated || userID === \"\") {\n return;\n }\n\n try {\n // Pull club specific info from DynamoDB\n let pilotClubList = await loadPilotClubs(userID);\n // Remove base (no associated club) record and sort\n pilotClubList = pilotClubList.filter((a) => (a.clubId !== \"None\"));\n\n // Generate a list of club keys. Note that keys() is not supported by IE, so using .map instead\n const pilotClubIds = pilotClubList.map(function(item) {\n return item.clubId;\n });\n \n // Load full list of clubs\n let clubList = await loadClubs();\n setAllClubs(clubList); // Save full club list, including the None placeholder for new signups\n clubList = clubList.filter((a) => (a.SK !== \"None\")).sort((a,b) => (a.shortName > b.shortName) ? 1 : -1);\n\n // Add club names into the pilotClubList\n pilotClubList = pilotClubList.map(function(item) {\n const clubRecord = returnClub(item.clubId, clubList);\n return clubRecord\n })\n\n setNewClubs(clubList.filter((a) => !(pilotClubIds.includes(a.SK))));\n setPilotClubs(pilotClubList.sort((a,b) => (a.shortName > b.shortName) ? 1 : -1));\n // And get user data\n const userData = await getUserData(\"None\", userID);\n setUserInfo(userData);\n } catch (e) {\n onError(e); \n }\n }, [userID, isAuthenticated])\n\n useEffect(() => {\n refreshClubList()\n }, [refreshClubList]);\n\n function createPilotBody(clubId) {\n // Build up body for API Call\n const data = {\n first: userInfo.first,\n last: userInfo.last,\n createdAt: Date.now(),\n clubId: clubId,\n pilotId: userID,\n };\n const body = {\n club: clubId,\n type: \"PILOT\",\n id: userID,\n data: data,\n };\n return body\n }\n\n async function setUserClub(newClub){\n try {\n await updateUserAttributes({\n userAttributes: {'custom:club': newClub}\n });\n } catch (err) {\n console.log('error updating user club ', err);\n }\n }\n\n // TODO: This is not forcing an overall refresh, so it is not loading the new club.\n async function switchClub(newClub){\n const currentClub = returnClub(club, allClubs);\n // Update Cognito data with selected club\n if (window.confirm(`Do you wish to switch your active club from ${currentClub.name} to ${newClub.name}?`)) {\n await setUserClub(newClub.SK);\n await loadClubInfo()\n navigate(\"../\");\n }\n }\n\n async function requestClub(addClub){\n if (window.confirm(`Do you wish to request an active membership at ${addClub.name}?`)) {\n const bodyContent = createPilotBody(addClub.SK);\n await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-item/\", options: {\n \"body\": bodyContent\n }});\n refreshClubList()\n }\n }\n\n\n // Must use ForwardRef, Dropdown needs access to the DOM of the Menu to measure it\n const CustomClubMenu = React.forwardRef(\n ({ children, style, className, 'aria-labelledby': labeledBy }, ref) => {\n const [searchStr, setSearchStr] = useState('');\n\n const normalizeString = (str) => {\n if(typeof str !== 'string') return ''\n return str.replace(/\\s/g,'').toLowerCase()\n }\n\n const filterChild = (child) =>{\n if(!searchStr) return true\n const childStr = Array.isArray(child.props.children) ? child.props.children.join() : child.props.children\n if(normalizeString(childStr).includes(normalizeString(searchStr))) return true\n return false\n }\n\n return (\n <div ref={ref} style={style} className={className} aria-labelledby={labeledBy}>\n <div className=\"mx-3 my-2\">\n <Form.Control\n autoFocus\n className=\"w-100\"\n placeholder=\"Type to filter...\"\n onChange={(e) => setSearchStr(e.target.value)}\n value={searchStr}\n />\n </div>\n <ul className=\"list-unstyled mb-0\">\n {React.Children.toArray(children).filter(\n (child) => filterChild(child)\n )}\n </ul>\n </div>\n );\n },\n );\n\n function showLoading() {\n if(allClubs.length === 0) {\n return ( <div className=\"spinner-border\" role=\"status\"></div> ) ;\n } \n return null;\n }\n\n function selectClubDropdown(buttonText, clubList, selectClub) {\n if(clubList.length === 0) {\n return;\n }\n return (\n <div className=\"d-flex gap-2 justify-content-center\">\n <Dropdown drop=\"down-centered\">\n <Dropdown.Toggle variant=\"secondary\">\n {buttonText}\n </Dropdown.Toggle>\n\n <Dropdown.Menu as={CustomClubMenu} className=\"scrollable-dropdown\">\n {clubList.map((item) => \n <Dropdown.Item key={item.SK} onClick = {() => selectClub(item)} as=\"button\">\n {item.name}\n </Dropdown.Item>\n )}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n\n return (\n <div className=\"Settings d-flex flex-column gap-3 py-4\">\n <h1>User Settings</h1>\n <Nav.Link as={Link} to=\"../settings/password\">\n <LoaderButton variant=\"outline-secondary\" size=\"lg\">\n Change Password\n </LoaderButton>\n </Nav.Link>\n <Nav.Link as={Link} to=\"../settings/profile\">\n <LoaderButton variant=\"outline-secondary\" size=\"lg\">\n Profile\n </LoaderButton>\n </Nav.Link>\n <hr className=\"my-1\" />\n <h2>Club Membership Management</h2>\n {(club === \"\") ? \n <div className=\"text-center\">\n <div className=\"spinner-border\" role=\"status\"></div> \n </div>\n :\n <>\n <div className=\"d-flex flex-column flex-sm-row gap-3 justify-content-center\">\n {showLoading()}\n {selectClubDropdown(\"Switch Active Club\", pilotClubs, switchClub)}\n {selectClubDropdown(\"Request Membership at Club\", newClubs, requestClub)}\n </div>\n <div className=\"fs-4 fw-semibold\">Active Club: {club || \"None\"} </div>\n </>\n }\n </div>\n );\n}","import {useCallback, useMemo, useState} from \"react\";\nimport {Button, Form, InputGroup, OverlayTrigger, Popover, Spinner, Table, CloseButton} from \"react-bootstrap\";\nimport {truncate} from \"lodash\"\nimport \"../containers/Accounting.css\"\nimport { fuzzify, toCurrencyString } from \"../libs/utils\";\n\nconst FilterAny = \"Any\"\n\nexport const AccountingTableTypes = {\n \"Overview\": \"Account Overview\",\n \"CashIn\": \"Cash In\",\n \"MembersPayable\": \"Member Accounts Payable\",\n \"IntrosPayable\": \"Intro Accounts Payable\",\n \"TaxesPayable\": \"Sales Tax Accounts Payable\",\n \"Revenue\": \"Revenue\",\n \"MemberTransactions\": \"MemberTransactions\",\n \"TaxTransactions\": \"TaxTransactions\",\n \"DepositTransactions\": \"DepositTransactions\",\n \"TowRevenue\": \"Tows Revenue\",\n \"RentalRevenue\": \"Rental Revenue\",\n \"IntroRevenue\": \"Intros Revenue\",\n \"OtherRevenue\": \"Other Revenue\",\n}\n\nconst RevenueAccounts = {\n [AccountingTableTypes.TowRevenue]: \"towRevenue\",\n [AccountingTableTypes.RentalRevenue]: \"rentalRevenue\",\n [AccountingTableTypes.IntroRevenue]: \"introRevenue\",\n [AccountingTableTypes.OtherRevenue]: \"otherRevenue\",\n};\n\nconst DefaultSort = {\n [AccountingTableTypes.CashIn]: {column: 0, asc: false},\n [AccountingTableTypes.MembersPayable]: {column: 0, asc: false},\n [AccountingTableTypes.IntrosPayable]: {column: 0, asc: false},\n [AccountingTableTypes.Revenue]: {column: 0, asc: false},\n [AccountingTableTypes.MemberTransactions]: {column: 0, asc: false},\n [AccountingTableTypes.TaxTransactions]: {column: 0, asc: false},\n [AccountingTableTypes.DepositTransactions]: {column: 0, asc: false},\n}\n\nconst getSortingValue = (col) => {\n if(col.sort != null) {\n return col.sort;\n }\n if(col.display != null) {\n return col.display\n }\n return col\n}\n\nconst getDisplayValue = (col) => {\n if(col.display != null) {\n return col.display\n }\n return col\n}\n\nconst sortRows = (rows, sortColumn, sortAscending) =>{\n if(rows.length < 1) return []\n const typeCheck = getSortingValue(rows[0][sortColumn])\n if(typeof typeCheck === 'string'){\n return rows.sort((a,b) => {\n const aSort = getSortingValue(a[sortColumn])\n const bSort = getSortingValue(b[sortColumn])\n return (sortAscending ? 1 : -1) * bSort.localeCompare(aSort)\n })\n } else if(typeof typeCheck === 'number'){\n return rows.sort((a,b) => {\n const aSort = getSortingValue(a[sortColumn])\n const bSort = getSortingValue(b[sortColumn])\n return (sortAscending ? -1 : 1) * (bSort - aSort)\n })\n }\n return rows\n}\n\nconst TableEntry = ({account, summary, onDrill, rowClass}) => {\n return (\n <>\n {summary ?\n <>\n <tr className={`text-start ${rowClass ? rowClass : \"\"}`}>\n <td\n role={onDrill ? \"button\" : \"cell\"}\n onClick={onDrill}\n >\n {account}\n </td>\n <td className=\"text-end\">{toCurrencyString(summary.start, \"CAD\") ?? \"Unknown\"}</td>\n <td className=\"text-end\">{toCurrencyString(summary.debit, \"CAD\") ?? \"Unknown\"}</td>\n <td className=\"text-end\">{toCurrencyString(summary.credit, \"CAD\") ?? \"Unknown\"}</td>\n <td className=\"text-end\">{toCurrencyString(summary.end, \"CAD\")}</td>\n </tr>\n </> :\n <tr colSpan=\"5\"></tr>\n }\n </>\n )\n}\n\nconst filterRow = (row, filters) => {\n for(const filter of filters) {\n const colValue = getDisplayValue(row[filter.col])\n if(!filter.fuzzy && filter.value !== FilterAny) {\n if(colValue !== filter.value) {\n return false\n }\n } else if(filter.fuzzy && filter.value) {\n const fuzzyCol = fuzzify(colValue)\n if(!fuzzyCol.includes(filter.value)) {\n return false\n }\n }\n }\n \n return true\n}\n\nconst BreakdownTable = ({breakdown, summary, sortAscending, sortColumn, mapper, isTransactionHistory, filters, onDrill, width}) => {\n const rows = useMemo(() => {\n if(!breakdown) return []\n const rows = breakdown.map(mapper)\n return rows\n }, [breakdown, mapper])\n\n const organizedRows = useMemo(() => {\n let newRows = rows;\n\n if(Array.isArray(filters) && filters.length > 0) {\n newRows = newRows.filter((r) => filterRow(r, filters))\n }\n\n return sortRows(newRows, sortColumn, sortAscending)\n }, [rows, sortColumn, sortAscending, filters])\n\n const tableWidth = useMemo(() => {\n return width ? parseInt(width) : (organizedRows[0] ?? [0,0]).length\n }, [width, organizedRows])\n\n return (\n <tbody>\n {organizedRows.map((row, i) => {\n const rowElements = [];\n\n for(const j in row) {\n let tooltipText;\n const col = row[j]\n const drillable = (onDrill && j === \"0\")\n \n let align = col.align\n if(!align) {\n align = j === \"0\" ? \"text-start\" : 'text-end'\n \n }\n let cellText = col.display !== undefined ? col.display : col\n if(cellText.length > 60 && !drillable) {\n tooltipText = cellText\n cellText = truncate(cellText, {\n length: 60,\n separator: /\\s/g\n })\n }\n\n const element = ( \n <td\n className={align}\n key={j}\n role={(drillable || tooltipText) ? \"button\" : \"cell\"}\n onClick={drillable? () => onDrill(row) : () => {}}\n >\n {cellText}\n </td>\n )\n\n if(tooltipText) {\n const tooltip = (\n <Popover className=\"py-2 px-3\" id={`${i}-${j}`}>{tooltipText}</Popover>\n )\n\n rowElements.push((\n <OverlayTrigger trigger=\"click\" key={`${i}-${j}`} overlay={tooltip}>\n {element}\n </OverlayTrigger>\n ))\n } else {\n rowElements.push(element)\n }\n }\n\n return (\n <tr key={i}>\n {rowElements.map((element) => element)}\n </tr>\n )\n })}\n { isTransactionHistory ?\n <tr>\n <td className=\"text-start\" colSpan={tableWidth - 1}>Starting Balance</td>\n <td className=\"text-end\">{toCurrencyString(summary.start, \"CAD\")}</td>\n </tr> :\n <TableEntry summary={summary} account=\"Total\" />\n }\n </tbody>\n )\n}\n\nconst SummaryTable = ({summaries, onDrill}) => {\n return (\n <tbody>\n <TableEntry account=\"Cash In\" onDrill={() => onDrill(AccountingTableTypes.CashIn)} summary={summaries.cashIn} />\n <TableEntry account=\"Members A/P\" onDrill={() => onDrill(AccountingTableTypes.MembersPayable)} summary={summaries.membersPayable} />\n <TableEntry account=\"Intro A/P\" onDrill={() => onDrill(AccountingTableTypes.IntrosPayable)} summary={summaries.introsPayable} />\n <TableEntry account=\"Sales Tax A/P\" onDrill={() => onDrill(AccountingTableTypes.TaxesPayable)} summary={summaries.taxesPayable} />\n <TableEntry account=\"Tows Revenue\" onDrill={() => onDrill(AccountingTableTypes.TowRevenue)} summary={summaries.towRevenue} />\n <TableEntry account=\"Rental Revenue\" onDrill={() => onDrill(AccountingTableTypes.RentalRevenue)} summary={summaries.rentalRevenue} />\n <TableEntry account=\"Intros Revenue\" onDrill={() => onDrill(AccountingTableTypes.IntroRevenue)} summary={summaries.introRevenue} />\n <TableEntry account=\"Other Revenue\" onDrill={() => onDrill(AccountingTableTypes.OtherRevenue)} summary={summaries.otherRevenue} />\n </tbody>\n )\n}\n\nexport default function AccountingSummaryTable({currentTable, setCurrentTable, summaries, breakdowns, transactions, getTransactions, isLoading, feeList}) {\n const [tableName, setTableName] = useState(AccountingTableTypes.Overview)\n const [sortColumn, setSortColumn] = useState(0)\n const [sortAscending, setSortAscending] = useState(false)\n const [feeFilter, setFeeFilter] = useState(FilterAny)\n const [noteFilter, setNoteFilter] = useState(\"\")\n\n const fuzzyNoteFilter = useMemo(() => fuzzify(noteFilter), [noteFilter])\n\n\n // OnDrill functions - update state when a user drills down\n const onDrill = useCallback((table) => {\n setCurrentTable(table)\n setTableName(table)\n const defaultSort = DefaultSort[table]\n if(defaultSort) {\n setSortColumn(defaultSort.column)\n setSortAscending(defaultSort.asc)\n }\n\n if(table === AccountingTableTypes.OtherRevenue) {\n setFeeFilter(FilterAny)\n }\n }, [setCurrentTable])\n\n const feeFilterOptions = useMemo(() => {\n return [FilterAny, ...feeList]\n }, [feeList])\n\n const drillMember = useCallback((data) => {\n getTransactions(\"membersPayable\", data[0].ref)\n setTableName(`${data[0].display} Transaction History`)\n const table = AccountingTableTypes.MemberTransactions\n setCurrentTable(table)\n setSortColumn(DefaultSort[table].column)\n setSortAscending(DefaultSort[table].asc)\n }, [getTransactions, setCurrentTable])\n \n const drillTaxes = useCallback((data) => {\n getTransactions(\"taxesPayable\", data[0])\n setTableName(`${data[0]} Transaction History`)\n const table = AccountingTableTypes.TaxTransactions\n setCurrentTable(table)\n setSortColumn(DefaultSort[table].column)\n setSortAscending(DefaultSort[table].asc)\n }, [getTransactions, setCurrentTable])\n\n const drillDeposit = useCallback((data) => {\n getTransactions(\"cashIn\", data[0])\n setTableName(`${data[0]} Transaction History`)\n const table = AccountingTableTypes.DepositTransactions\n setCurrentTable(table)\n setSortColumn(DefaultSort[table].column)\n setSortAscending(DefaultSort[table].asc) \n }, [getTransactions, setCurrentTable])\n\n // Mappers for row layouts\n const introMapper = (t) => [\n {display: t.dateStr, sort: t.timestamp},\n {display: t.soldTo ?? \"\", align: \"text-start\"},\n {display: t.SN ?? \"\", align: \"text-start\"},\n {display: t.note ?? \"\", align: \"text-start\"},\n {display: toCurrencyString(t.change, \"CAD\"), sort: t.change},\n {display: toCurrencyString(t.balance, \"CAD\"), sort: t.balance},\n ]\n\n const memberTransactionMapper = (t) => [\n {display: t.dateStr, sort: t.timestamp},\n {display: t.description ?? \"\", align: \"text-center\"},\n {display: toCurrencyString(t.amount, \"CAD\"), sort: t.amount},\n {display: toCurrencyString(t.balance, \"CAD\"), sort: t.balance},\n ]\n\n const taxTransactionMapper = (t) => [\n {display: t.dateStr, sort: t.timestamp},\n {display: t.user ?? \"\", align: \"text-start\"},\n {display: t.description ?? \"\", align: \"text-center\"},\n {display: toCurrencyString(t.amount, \"CAD\"), sort: t.amount},\n {display: toCurrencyString(t.balance, \"CAD\"), sort: t.balance},\n ]\n\n const revenueMapper = (t) => [\n {display: t.dateStr, sort: t.timestamp},\n {display: t.member ?? \"\", align: \"text-start\"},\n {display: t.fee ?? \"\", align: \"text-center\"},\n {display: toCurrencyString(t.change, \"CAD\"), sort: t.change},\n {display: toCurrencyString(t.balance, \"CAD\"), sort: t.balance},\n ]\n\n const otherRevenueMapper = (t) => [\n {display: t.dateStr, sort: t.timestamp},\n {display: t.member ?? \"\", align: \"text-start\"},\n {display: t.fee ?? \"\", align: \"text-center\"},\n {display: t.note ?? \"\", align: \"text-center\"},\n {display: toCurrencyString(t.change, \"CAD\"), sort: t.change},\n {display: toCurrencyString(t.balance, \"CAD\"), sort: t.balance},\n ]\n\n const membersPayableMapper = (t) => [\n {display: t.account, ref: t.userId},\n {display: toCurrencyString(t.start, \"CAD\"), sort: t.start},\n {display: toCurrencyString(t.debit, \"CAD\"), sort: t.debit},\n {display: toCurrencyString(t.credit, \"CAD\"), sort: t.credit},\n {display: toCurrencyString(t.end, \"CAD\"), sort: t.end},\n ]\n\n const debitCreditMapper = (t) => [\n t.account,\n {display: toCurrencyString(t.start, \"CAD\"), sort: t.start},\n {display: toCurrencyString(t.debit, \"CAD\"), sort: t.debit},\n {display: toCurrencyString(t.credit, \"CAD\"), sort: t.credit},\n {display: toCurrencyString(t.end, \"CAD\"), sort: t.end},\n ]\n\n const depositTransactionMapper = (t) => [\n {display: t.dateStr, sort: t.timestamp},\n {display: t.user ?? \"\", align: \"text-start\"},\n {display: t.note, align: \"Text-center\"},\n {display: toCurrencyString(t.amount, \"CAD\"), sort: t.amount},\n {display: toCurrencyString(t.balance, \"CAD\"), sort: t.balance},\n ]\n\n // Table State - Memos for holding the state of the body and headers of the table\n const tableBody = useMemo(() => {\n switch(currentTable){\n default:\n case AccountingTableTypes.Overview:\n return <SummaryTable summaries={summaries} onDrill={onDrill} />\n case AccountingTableTypes.CashIn:\n return (\n <BreakdownTable\n breakdown={breakdowns.cashIn}\n summary={summaries.cashIn}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n onDrill={drillDeposit}\n mapper={debitCreditMapper}\n width=\"5\"\n />\n )\n case AccountingTableTypes.DepositTransactions:\n return (\n <BreakdownTable \n breakdown={transactions.cashIn.transactions ?? []}\n summary={{start: transactions.cashIn.start ?? 0}}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={depositTransactionMapper}\n width=\"5\"\n isTransactionHistory\n />\n )\n case AccountingTableTypes.MembersPayable:\n return (\n <BreakdownTable\n breakdown={breakdowns.membersPayable}\n summary={summaries.membersPayable}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={membersPayableMapper}\n onDrill={drillMember}\n width=\"5\"\n />\n )\n case AccountingTableTypes.TaxesPayable:\n return (\n <BreakdownTable\n breakdown={breakdowns.taxesPayable}\n summary={summaries.taxesPayable}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={debitCreditMapper}\n onDrill={drillTaxes}\n width=\"5\"\n />\n )\n case AccountingTableTypes.IntrosPayable:\n return (\n <BreakdownTable \n breakdown={breakdowns.introsPayable}\n summary={summaries.introsPayable}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={introMapper}\n width=\"6\"\n isTransactionHistory\n />\n )\n case AccountingTableTypes.MemberTransactions:\n return (\n <BreakdownTable \n breakdown={transactions.membersPayable.transactions ?? []}\n summary={{start: transactions.membersPayable.start ?? 0}}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={memberTransactionMapper}\n width=\"4\"\n isTransactionHistory\n />\n )\n case AccountingTableTypes.TaxTransactions:\n return (\n <BreakdownTable \n breakdown={transactions.taxesPayable.transactions ?? []}\n summary={{start: transactions.taxesPayable.start ?? 0}}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={taxTransactionMapper}\n width=\"5\"\n isTransactionHistory\n />\n )\n case AccountingTableTypes.Revenue:\n case AccountingTableTypes.TowRevenue:\n case AccountingTableTypes.RentalRevenue:\n case AccountingTableTypes.IntroRevenue:\n case AccountingTableTypes.OtherRevenue:\n const accountName = RevenueAccounts[currentTable]\n if(!accountName) return (<></>)\n\n const isOtherRevenue = currentTable === AccountingTableTypes.OtherRevenue\n\n return (\n <BreakdownTable\n breakdown={breakdowns[accountName]}\n summary={summaries[accountName]}\n sortColumn={sortColumn}\n sortAscending={sortAscending}\n mapper={isOtherRevenue ? otherRevenueMapper : revenueMapper}\n width={isOtherRevenue ? 6 : 5}\n filters={[{col: 2, value: feeFilter}, {col: 3, value: fuzzyNoteFilter, fuzzy: true}]}\n isTransactionHistory\n />\n )\n }\n }, [\n currentTable,\n summaries,\n breakdowns,\n sortAscending,\n sortColumn,\n feeFilter,\n fuzzyNoteFilter,\n drillMember,\n drillTaxes,\n drillDeposit,\n onDrill,\n transactions\n ])\n\n const tableHeaders = useMemo(() => {\n switch(currentTable){\n default:\n case AccountingTableTypes.CashIn:\n case AccountingTableTypes.MembersPayable:\n return [\n {title: \"Account\", sort: \"string\"},\n {title: \"Starting Balance\", sort: \"number\"},\n {title: \"Debits\", sort: \"number\"},\n {title: \"Credits\", sort: \"number\"},\n {title: \"Ending Balance\", sort: \"number\"}\n ]\n case AccountingTableTypes.IntrosPayable:\n return [\n {title: \"Date\", sort: \"number\"},\n {title: \"Buyer\", sort: \"string\"},\n {title: \"Serial No.\", sort: \"string\"},\n {title: \"Note\", sort: \"string\"},\n {title: \"Change\", sort: \"number\"},\n {title: \"Balance\", sort: \"number\"}\n ]\n case AccountingTableTypes.Revenue:\n case AccountingTableTypes.TowRevenue:\n case AccountingTableTypes.RentalRevenue:\n case AccountingTableTypes.IntroRevenue:\n return [\n {title: \"Date\", sort: \"number\"},\n {title: \"Member\", sort: \"string\"},\n {title: \"Fee Name\", sort: \"string\"},\n {title: \"Value\", sort: \"number\"},\n {title: \"Balance\", sort: \"number\"}\n ]\n case AccountingTableTypes.OtherRevenue:\n return [\n {title: \"Date\", sort: \"number\"},\n {title: \"Member\", sort: \"string\"},\n {title: \"Fee Name\", sort: \"string\"},\n {title: \"Note\", sort: \"string\"},\n {title: \"Value\", sort: \"number\"},\n {title: \"Balance\", sort: \"number\"}\n ]\n case AccountingTableTypes.Overview:\n return [\n {title: \"Account\"},\n {title: \"Starting Balance\"},\n {title: \"Debits\"},\n {title: \"Credits\"},\n {title: \"Ending Balance\"}\n ]\n case AccountingTableTypes.MemberTransactions:\n return [\n {title: \"Date\", sort: \"number\"},\n {title: \"Activity\"},\n {title: \"Change\", sort: \"number\"},\n {title: \"Balance\", sort: \"number\"},\n ]\n case AccountingTableTypes.TaxTransactions:\n return [\n {title: \"Date\", sort: \"number\"},\n {title: \"Member\"},\n {title: \"Transaction Type\"},\n {title: \"Change\", sort: \"number\"},\n {title: \"Balance\", sort: \"number\"},\n ]\n case AccountingTableTypes.DepositTransactions:\n return [\n {title: \"Date\", sort: \"number\"},\n {title: \"Member\"},\n {title: \"Note\"},\n {title: \"Change\", sort: \"number\"},\n {title: \"Balance\", sort: \"number\"},\n ]\n }\n }, [currentTable])\n\n const updateSort = (index, sort) => {\n if(sortColumn === index){\n setSortAscending(s => !s)\n } else {\n setSortColumn(index)\n setSortAscending(sort === 'string' ? false : true)\n }\n }\n\n const backToButton = useMemo(() => {\n let label = \"Back to Overview\"\n let link = AccountingTableTypes.Overview\n if(currentTable === AccountingTableTypes.MemberTransactions) {\n label = \"Back to Members A/P\"\n link = AccountingTableTypes.MembersPayable\n } else if(currentTable === AccountingTableTypes.TaxTransactions) {\n label = \"Back to Sales Tax A/P\"\n link = AccountingTableTypes.TaxesPayable\n } else if(currentTable === AccountingTableTypes.DepositTransactions) {\n label = \"Back to Cash In\"\n link = AccountingTableTypes.CashIn\n }\n\n return (\n <Button onClick={() => onDrill(link)} variant=\"secondary\" className=\"py-1\">\n {label}\n </Button>\n )\n }, [currentTable, onDrill])\n\n return (\n <Table bordered>\n <thead>\n <tr>\n <td colSpan=\"6\">\n <div className=\"table-title\">\n <div className=\"d-flex flex-row\">\n {currentTable !== AccountingTableTypes.Overview && backToButton}\n </div>\n <h2 className=\"fs-4 my-1\">{tableName}</h2>\n <div className=\"flex-fill-sm d-flex flex-row\" aria-hidden>\n </div>\n\n {currentTable === AccountingTableTypes.OtherRevenue &&\n <div className=\"note-filter\">\n <InputGroup>\n <InputGroup.Text>Search Notes:</InputGroup.Text>\n <Form.Control value={noteFilter} onChange={(e) => setNoteFilter(e.target.value)} />\n { noteFilter &&\n <InputGroup.Text className=\"px-1 bg-danger text-white\">\n <CloseButton variant=\"white\" onClick={() => setNoteFilter(\"\")} />\n </InputGroup.Text>\n }\n </InputGroup>\n\n <InputGroup>\n <InputGroup.Text>Filter by:</InputGroup.Text>\n <Form.Select aria-label=\"Filter list\" value={feeFilter} onChange={(e) => setFeeFilter(e.target.value)}>\n {feeFilterOptions.map((option) => \n <option key={option} value={option}>{option}</option>\n )}\n </Form.Select>\n </InputGroup>\n </div>\n } \n </div>\n </td>\n </tr>\n {!isLoading &&\n <tr className=\"text-start\">\n {tableHeaders.map((h, i) => \n <td role={h.sort ? \"button\" : \"cell\"} onClick={() => {if(h.sort) updateSort(i, h.sort)}} className=\"bg-dark text-white\" key={i}>\n <div className=\"d-flex flex-row justify-content-between no-user-select\">\n {h.title}\n {h.sort && \n <span className={`${sortAscending ? '' : 'sort-arrow-descending'} ${sortColumn === i ? 'opacity-100' : 'opacity-0'}`} >\n ▲\n </span>\n }\n </div>\n </td>\n )}\n </tr>\n }\n </thead>\n {isLoading ?\n <tbody><tr><td><Spinner /></td></tr></tbody> :\n tableBody\n }\n </Table>\n );\n}\n","import React, { useState, useEffect, useCallback} from \"react\";\nimport { Form, FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\nimport { onError } from \"../libs/errorLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { loadDepositTransactions, loadTaxTransactions, loadTransactions, loadUserTransactions } from \"../libs/databaseAccess\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport \"./Accounting.css\";\nimport AccountingSummaryTable, { AccountingTableTypes } from \"../components/AccountingSummaryTable.js\";\nimport { DateTime } from \"luxon\";\nimport { debounce } from \"lodash\"\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib.js\";\n\nexport default function Logs() {\n const {userID, club, clubName, isAuthenticated, clubTimeZone } = useAppContext();\n const { sendAlert } = useNotificationContext();\n\n const [isLoading, setIsLoading] = useState(true);\n const [startDate, setStartDate] = useState(\"2000-01-01\");\n const [endDate, setEndDate] = useState(\"2000-01-01\");\n const [title, setTitle] = useState(\"\");\n const [summaries, setSummaries] = useState({})\n const [currentTransactions, setCurrentTransactions] = useState(null)\n const [transactionsCache, setTransactionsCache] = useState({})\n const [currentTable, setCurrentTable] = useState(AccountingTableTypes.Overview)\n const [feeList, setFeeList] = useState([])\n \n const [breakdowns, setBreakdowns] = useState({\n membersPayable: [],\n cashIn: [],\n introsPayable: [],\n taxesPayable: [],\n towRevenue: [],\n rentalRevenue: [],\n introRevenue: [],\n otherRevenue: []\n })\n const [transactions, setTransactions] = useState({\n membersPayable: {},\n cashIn: {},\n introsPayable: {},\n taxesPayable: {},\n towRevenue: {},\n rentalRevenue: {},\n introRevenue: {},\n otherRevenue: {}\n })\n\n const formatSectionDates = (section, timeZone, whereFormat) => {\n for(let i = 0; i < section[whereFormat].length; i++) {\n const date = DateTime.fromMillis(section[whereFormat][i].timestamp, {zone: timeZone})\n section[whereFormat][i].dateStr = `${date.toISODate()} ${date.toLocaleString(DateTime.TIME_SIMPLE)}`\n }\n }\n\n const getRecords = useCallback(async () => {\n if ((startDate === \"2000-01-01\") || (endDate === \"2000-01-01\") || !club || !clubTimeZone) {\n // If still starting up, exit\n return;\n }\n\n // Pull club specific info from DynamoDB\n setIsLoading(true);\n const startDateVal = DateTime.fromISO(startDate, {zone: clubTimeZone}).startOf(\"day\").toMillis()\n const endDateVal = DateTime.fromISO(endDate, {zone: clubTimeZone}).endOf(\"day\").toMillis()\n const transactionResults = await loadTransactions(club, startDateVal, endDateVal);\n\n if(transactionResults.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not load accounting table\"\n })\n setIsLoading(false)\n return\n }\n\n const {membersPayable, deposits, introsPayable, taxesPayable, towRevenue, rentalRevenue, introRevenue, otherRevenue, feeList} = transactionResults.body\n\n // Convert timestamps to club time string \n\n formatSectionDates(introsPayable, clubTimeZone, \"breakdown\")\n formatSectionDates(taxesPayable, clubTimeZone, \"transactions\")\n formatSectionDates(towRevenue, clubTimeZone, \"breakdown\")\n formatSectionDates(rentalRevenue, clubTimeZone, \"breakdown\")\n formatSectionDates(introRevenue, clubTimeZone, \"breakdown\")\n formatSectionDates(otherRevenue, clubTimeZone, \"breakdown\")\n\n setBreakdowns({\n membersPayable: membersPayable.breakdown,\n cashIn: deposits.breakdown,\n introsPayable: introsPayable.breakdown,\n taxesPayable: taxesPayable.breakdown,\n towRevenue: towRevenue.breakdown,\n rentalRevenue: rentalRevenue.breakdown,\n introRevenue: introRevenue.breakdown,\n otherRevenue: otherRevenue.breakdown\n })\n setSummaries({\n membersPayable: membersPayable.summary,\n cashIn: deposits.summary,\n introsPayable: introsPayable.summary,\n taxesPayable: taxesPayable.summary,\n towRevenue: towRevenue.summary,\n rentalRevenue: rentalRevenue.summary,\n introRevenue: introRevenue.summary,\n otherRevenue: otherRevenue.summary\n })\n setFeeList(feeList)\n\n setIsLoading(false);\n }, [club, endDate, startDate, clubTimeZone, sendAlert]);\n\n useEffect(() => {\n if((currentTable !== AccountingTableTypes.MemberTransactions &&\n currentTable !== AccountingTableTypes.TaxTransactions &&\n currentTable !== AccountingTableTypes.DepositTransactions) ||\n !currentTransactions\n ) {\n return\n }\n\n const loadTransactions = async () => {\n setIsLoading(true);\n const {id, type} = currentTransactions;\n // Avoid making a network request if not necessary\n if(transactionsCache[type+id]) {\n setTransactions(t => {\n t[type] = transactionsCache[type+id]\n return t\n })\n setIsLoading(false)\n return\n }\n \n const startDateVal = DateTime.fromISO(startDate, {zone: clubTimeZone}).startOf(\"day\").toMillis()\n const endDateVal = DateTime.fromISO(endDate, {zone: clubTimeZone}).endOf(\"day\").toMillis()\n let response = {}\n if(type === \"membersPayable\") {\n response = await loadUserTransactions(club, id, startDateVal, endDateVal);\n } else if(type === \"taxesPayable\") {\n response = await loadTaxTransactions(club, id, startDateVal, endDateVal);\n } else if(type === \"cashIn\") {\n response = await loadDepositTransactions(club, id, startDateVal, endDateVal);\n }\n\n if(response.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not load transactions history\"\n })\n setCurrentTable(\n type === \"membersPayable\" ?\n AccountingTableTypes.MembersPayable :\n type === \"taxesPayable\" ?\n AccountingTableTypes.TaxesPayable :\n AccountingTableTypes.CashIn\n )\n setIsLoading(false)\n return\n }\n\n const transactionsResult = response.body\n \n for(const i in transactionsResult.transactions) {\n const date = DateTime.fromMillis(transactionsResult.transactions[i].timestamp, {zone: clubTimeZone})\n transactionsResult.transactions[i].dateStr = `${date.toISODate()} ${date.toLocaleString(DateTime.TIME_SIMPLE)}`\n }\n \n setTransactions(t => {\n t[type] = transactionsResult\n return t\n })\n setTransactionsCache((cache) => {\n cache[type+id] = transactionsResult\n return cache\n })\n \n setIsLoading(false);\n }\n\n loadTransactions()\n }, [transactionsCache, club, clubTimeZone, endDate, startDate, currentTable, currentTransactions, sendAlert])\n\n const getTransactions = (type, id) => {\n // Make sure we change both of these at the same time or else the previous transactions\n // will appear for a split second before the loading starts which is jarring as a user\n setIsLoading(true)\n setCurrentTransactions({type, id})\n }\n\n useEffect(() => {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n\n try {\n const today = DateTime.fromObject({}, {zone: clubTimeZone})\n // Initialize search to the current date\n setStartDate(today.toISODate());\n setEndDate(today.toISODate());\n setTitle(clubName);\n } catch (e) {\n onError(e); \n }\n\n }, [isAuthenticated, club, userID, clubName, clubTimeZone]);\n\n useEffect(() => {\n getRecords()\n }, [getRecords])\n\n\n // Debounce input to prevent multiple calls when user quickly changes months\n const updateStart = debounce((date) => {\n setStartDate(date);\n //Reset cache when changing date\n setTransactionsCache({})\n }, 500)\n \n // Debounce input to prevent multiple calls when user quickly changes months\n const updateEnd = debounce((date) => {\n setEndDate(date);\n //Reset cache when changing date\n setTransactionsCache({})\n }, 500)\n\n function updateRecords(){\n getRecords();\n setTransactionsCache({})\n }\n\n return (\n <main className=\"mt-4\">\n <div className=\"row\">\n <Form>\n <div className=\"d-flex justify-content-between\">\n <div className=\"col-sm-4\" >\n <FormGroup controlId=\"startDate\" className=\"pull-left\" size=\"lg\">\n <FormLabel>Start Date</FormLabel>\n <FormControl\n autoFocus\n type=\"date\"\n value={startDate}\n disabled={startDate === \"2000-01-01\"}\n onChange={e => updateStart(e.target.value)}\n />\n </FormGroup>\n </div>\n <div className=\"col-sm-4\">\n <h2>{title} Summary</h2>\n </div>\n <div className=\"col-sm-4\">\n <FormGroup controlId=\"endDate\" className=\"pull-right\" size=\"lg\">\n <FormLabel>End Date</FormLabel>\n <FormControl\n type=\"date\"\n value={endDate}\n disabled={endDate === \"2000-01-01\"}\n onChange={e => updateEnd(e.target.value)}\n />\n </FormGroup>\n </div>\n </div>\n </Form>\n </div>\n\n <LoaderButton type=\"submit\" size=\"lg\" isLoading={isLoading} onClick={() => updateRecords()}>\n Update\n </LoaderButton>\n\n <div className=\"container p-2\">\n <div className=\"row\">\n <div className=\"col\">\n <AccountingSummaryTable\n currentTable={currentTable}\n setCurrentTable={setCurrentTable}\n summaries={summaries}\n breakdowns={breakdowns}\n transactions={transactions}\n getTransactions={getTransactions}\n isLoading={isLoading}\n feeList={feeList}\n />\n </div>\n </div>\n </div>\n </main>\n );\n }\n\n","import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { FormGroup, FormControl, InputGroup, Button, ButtonGroup, FormCheck, ToggleButtonGroup, ToggleButton} from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport { RequestType, apiRequest, loadIntroLaunches, loadPaymentMethods } from \"../libs/databaseAccess\";\nimport ShortUniqueId from 'short-unique-id';\nimport \"./Test.css\";\nimport { DateTime } from \"luxon\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { formatTaxOptions, toCurrencyString } from \"../libs/utils\";\n\nexport default function Intro(){\n const { userID, club, isAuthenticated, userIsAdmin, clubTimeZone, clubDefaultIntroStalePeriod, clubTaxRates } = useAppContext();\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n\n const [flightTypeList, setFlightTypeList] = useState([]);\n const [paymentMethods, setPaymentMethods] = useState([]);\n const [date, setDate] = useState(\"\");\n const [staleOffset, setStaleOffset] = useState(0);\n const [buyerEmail, setBuyerEmail] = useState(\"\");\n const [buyerFirst, setBuyerFirst] = useState(\"\");\n const [buyerLast, setBuyerLast] = useState(\"\");\n const [recipientEmail, setRecipientEmail] = useState(\"\");\n const [recipientFirst, setRecipientFirst] = useState(\"\");\n const [recipientLast, setRecipientLast] = useState(\"\");\n const [note, setNote] = useState(\"\");\n const [payment, setPayment] = useState(\"\");\n const [paymentRef, setPaymentRef] = useState(\"\");\n const [flightType, setFlightType] = useState(\"\");\n const [introType, setIntroType] = useState(\"\");\n const [price, setPrice] = useState(0);\n const [serialNum, setSerialNum] = useState(\"\");\n const [forSelf, setForSelf] = useState(false);\n const [taxStatus, setTaxStatus] = useState(\"exempt\")\n const [taxList, setTaxList] = useState([])\n\n const resetDate = useCallback(() => {\n const dateObj = DateTime.fromObject({}, {zone: clubTimeZone});\n var dateStr = dateObj.toISODate();\n setDate(dateStr);\n }, [clubTimeZone])\n\n const initializeDate = useCallback(() => {\n resetDate()\n }, [resetDate])\n\n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n try {\n initializeDate()\n setStaleOffset(clubDefaultIntroStalePeriod)\n const uid = new ShortUniqueId();\n const launches = await loadIntroLaunches(club);\n const payments = await loadPaymentMethods(club);\n setFlightTypeList(launches.filter((a) => !(\"isActive\" in a) || a.isActive));\n setPayment(payments[0] ?? \"\")\n setPaymentMethods(payments);\n var defaultSerial = uid();\n setSerialNum(defaultSerial);\n }\n catch (e) {\n onError(e); \n }\n }\n onLoad();\n }, [userID, club, isAuthenticated, userIsAdmin, clubDefaultIntroStalePeriod, initializeDate]);\n\n function setLaunch(event){\n var launch = flightTypeList.find((a)=>(a.SK === event));\n if(launch !== undefined){\n setFlightType(launch.launch);\n setIntroType(launch.SK);\n setPrice(launch.price);\n setTaxStatus(launch.taxStatus ?? \"exempt\")\n const taxRates = launch.taxRates ?? []\n setTaxList(taxRates.map((r) => \n taxOptions.find((o) => o.value === r) ?? {label: \"Unknown\", value: r}\n ))\n }\n }\n\n async function submitChanges(){\n sendConfirmModal({\n heading: \"Sell intro\",\n body: <span>Sell <strong>{introType}</strong> to <strong>{buyerFirst} {buyerLast}</strong> for <strong>{toCurrencyString(price, \"CAD\", true)}</strong>?</span>,\n confirmText: \"Submit\",\n confirmColor: \"primary\",\n rejectText: \"Cancel\",\n confirm: submitAPICall\n })\n }\n\n async function submitAPICall(){\n var dateStruct = new Date();\n const recipientNameCache = `${recipientFirst} ${recipientLast}`\n const taxRates = taxList.map((e) => e.value)\n const data = {\n \"club\":club,\n \"time\":dateStruct.getTime(),\n \"launchType\":flightType,\n \"price\":price,\n \"SN\":serialNum,\n \"buyerEmail\":buyerEmail,\n \"buyerFirst\":buyerFirst,\n \"buyerLast\":buyerLast,\n \"recipientEmail\":recipientEmail,\n \"recipientFirst\":recipientFirst,\n \"recipientLast\":recipientLast,\n \"note\":note,\n \"payment\":payment,\n \"paymentRef\":paymentRef,\n \"date\":date,\n \"staleDate\":staleDate, \n \"flightRef\":'',\n \"taxStatus\": taxStatus,\n \"taxRates\": taxRates\n }\n const response = await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/create-intro/\", options: {\"body\": data}});\n\n if(response.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: `Failed to submit intro purchase`\n })\n } else {\n sendToast({\n status: NotificationStatus.Success,\n message: `Purchase of Intro for ${recipientNameCache} was successful.`\n })\n resetInfo();\n }\n\n }\n\n function resetInfo(){\n const uid = new ShortUniqueId();\n setFlightType(\"\");\n initializeDate()\n setNote(\"\");\n setPayment(\"\");\n setPaymentRef(\"\");\n setSerialNum(uid());\n setBuyerEmail(\"\");\n setBuyerFirst(\"\");\n setBuyerLast(\"\");\n setRecipientEmail(\"\");\n setRecipientFirst(\"\");\n setRecipientLast(\"\");\n setPrice(0);\n setTaxStatus()\n setTaxList([])\n setTaxStatus(\"exempt\")\n setForSelf(false)\n setIntroType(\"\")\n resetDate()\n }\n\n function setPassengerInfo(){\n setForSelf(!forSelf);\n if(!forSelf){\n setRecipientEmail(buyerEmail);\n setRecipientFirst(buyerFirst);\n setRecipientLast(buyerLast);\n }\n }\n\n const updateStaleOffset = (newStaleDate) => {\n const purchaseDate = DateTime.fromISO(date, {zone: clubTimeZone})\n const staleDate = DateTime.fromISO(newStaleDate, {zone: clubTimeZone})\n\n const diff = staleDate.diff(purchaseDate, 'days')\n setStaleOffset(diff.days > 0 ? diff.days : 0)\n }\n\n const staleDate = useMemo(() => {\n if(date === '') return ''\n const staleDate = DateTime.fromISO(date, {zone: clubTimeZone}).plus({days: staleOffset})\n return staleDate.toISODate()\n }, [clubTimeZone, staleOffset, date])\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n \n const taxSelectRenderer = (selected) => {\n if(selected.length < 1) return \"None\";\n let str = \"\";\n for(const i in selected) {\n str += selected[i].value\n if(i < selected.length - 1) {\n str += \", \"\n }\n }\n return str\n }\n\n const updateBuyerFirst = (value) => {\n setBuyerFirst(value)\n if(forSelf) {\n setRecipientFirst(value)\n }\n }\n const updateBuyerLast = (value) => {\n setBuyerLast(value)\n if(forSelf) {\n setRecipientLast(value)\n }\n }\n const updateBuyerEmail = (value) => {\n setBuyerEmail(value)\n if(forSelf) {\n setRecipientEmail(value)\n }\n }\n\n return (\n <main className=\"d-flex flex-column gap-3 pt-3\">\n <h2>New Intro Flight</h2>\n <hr className=\"m-0\"/>\n <FormGroup controlId=\"launchType\" size=\"lg\"><h4 style={{display: \"inline\"}}>Launch Type: </h4>\n <ButtonGroup className=\"flex-wrap\">\n { flightTypeList.map((launch, i) =>\n <Button variant={\"outline-primary\"} key={launch.SK} value={launch.SK} onClick = {(e) => setLaunch(e.target.value)} active={launch.SK === introType}>\n {launch.SK}\n </Button>)\n }\n </ButtonGroup> \n </FormGroup>\n <InputGroup>\n <InputGroup.Text>Purchase Price:</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"number\"\n value = {price}\n onChange = {(e)=>{setPrice(e.target.value)}}\n />\n </InputGroup>\n <ToggleButtonGroup name=\"taxStatusCheck\" type=\"radio\" value={taxStatus} onChange={(e) => setTaxStatus(e)}>\n <InputGroup.Text>Tax Status:</InputGroup.Text>\n <ToggleButton id=\"exempt\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exempt\">Tax Exempt</ToggleButton>\n <ToggleButton id=\"inclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"inclusive\">Tax Inclusive</ToggleButton>\n <ToggleButton id=\"exclusive\" variant=\"outline-primary\" name=\"taxStatusCheck\" value=\"exclusive\">Tax Exclusive</ToggleButton>\n </ToggleButtonGroup>\n {taxStatus !== \"exempt\" && taxStatus !== undefined &&\n <InputGroup>\n <InputGroup.Text>Applicable Taxes:</InputGroup.Text>\n <MultiSelect\n className=\"flex-grow-1 flex-shrink-1 multi-select\"\n disableSearch\n hasSelectAll={false}\n options={taxOptions}\n value={taxList}\n onChange={setTaxList}\n valueRenderer={taxSelectRenderer}\n />\n </InputGroup>\n }\n <InputGroup>\n <InputGroup.Text>Payment Method:</InputGroup.Text>\n <FormControl as = \"select\" placeholder = \"select\" value = {payment} onChange = {(e)=>{setPayment(e.target.value)}}>\n {paymentMethods.map((item)=>\n <option key = {item} value = {item}>{item}</option>\n )}\n </FormControl>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Payment Reference:</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {paymentRef}\n onChange = {(e)=>{setPaymentRef(e.target.value)}}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Sold To (First Name):</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {buyerFirst}\n onChange = {(e) => updateBuyerFirst(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Sold To (Last Name):</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {buyerLast}\n onChange = {(e) => updateBuyerLast(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Sold To (Email):</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {buyerEmail}\n onChange = {(e) => updateBuyerEmail(e.target.value)}\n />\n </InputGroup>\n\n <InputGroup className=\"center-block centerHeader\">\n <InputGroup.Text>Passenger same as Buyer?<FormCheck className=\"ml-1\" onChange = {(e)=>setPassengerInfo(e)} checked={forSelf} type=\"checkbox\" aria-label=\"...\" /></InputGroup.Text>\n </InputGroup>\n \n <InputGroup>\n <InputGroup.Text>Passenger (First Name):</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {recipientFirst}\n disabled = {forSelf}\n onChange = {(e)=>{setRecipientFirst(e.target.value)}}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Passenger (Last Name):</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {recipientLast}\n disabled = {forSelf}\n onChange = {(e)=>{setRecipientLast(e.target.value)}}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Passenger (Email):</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {recipientEmail}\n disabled = {forSelf}\n onChange = {(e)=>{setRecipientEmail(e.target.value)}}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Note:</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {note}\n onChange = {(e)=>{setNote(e.target.value)}}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Serial Number:</InputGroup.Text>\n <FormControl as = \"input\" \n type = \"text\"\n value = {serialNum}\n onChange = {(e)=>{setSerialNum(e.target.value)}}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Purchase Date:</InputGroup.Text>\n <FormControl\n autoFocus\n type=\"date\"\n value={date}\n disabled={date === \"\"}\n onChange={e => setDate(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Expiration Date:</InputGroup.Text>\n <FormControl\n autoFocus\n type=\"date\"\n value={staleDate}\n disabled={staleDate === \"\"}\n onChange={e => updateStaleOffset(e.target.value)}\n />\n </InputGroup>\n { (introType===\"\" || recipientFirst===\"\" || recipientLast===\"\") ?\n <h4>Set launch type, passenger first and last name in order to define an intro</h4>\n :\n <Button size=\"lg\" onClick={() => submitChanges()}>Submit</Button>\n }\n </main>\n );\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify, fetchAuthSession } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { assertAuthTokens } from '../utils/types';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { createChangePasswordClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\n/**\n * Updates user's password while authenticated.\n *\n * @param input - The UpdatePasswordInput object.\n * @throws - {@link ChangePasswordException} - Cognito service errors thrown when updating a password.\n * @throws - {@link AuthValidationErrorCode} - Validation errors thrown when oldPassword or newPassword are empty.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function updatePassword(input) {\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { userPoolEndpoint, userPoolId } = authConfig;\n const { oldPassword, newPassword } = input;\n assertValidationError(!!oldPassword, AuthValidationErrorCode.EmptyUpdatePassword);\n assertValidationError(!!newPassword, AuthValidationErrorCode.EmptyUpdatePassword);\n const { tokens } = await fetchAuthSession({ forceRefresh: false });\n assertAuthTokens(tokens);\n const changePassword = createChangePasswordClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n await changePassword({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.UpdatePassword),\n }, {\n AccessToken: tokens.accessToken.toString(),\n PreviousPassword: oldPassword,\n ProposedPassword: newPassword,\n });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createChangePasswordClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('ChangePassword'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","import React, { useState } from \"react\";\nimport { updatePassword } from \"aws-amplify/auth\";\nimport { useNavigate } from \"react-router\";\nimport { FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport { useFormFields } from \"../libs/hooksLib\";\nimport { onError } from \"../libs/errorLib\";\nimport \"./ChangePassword.css\";\n\nexport default function ChangePassword() {\n const navigate = useNavigate();\n const [fields, handleFieldChange] = useFormFields({\n password: \"\",\n oldPassword: \"\",\n confirmPassword: \"\",\n });\n const [isChanging, setIsChanging] = useState(false);\n\n function validateForm() {\n return (\n fields.oldPassword.length > 0 &&\n fields.password.length > 0 &&\n fields.password === fields.confirmPassword\n );\n }\n\n async function handleChangeClick(event) {\n event.preventDefault();\n\n setIsChanging(true);\n\n try {\n await updatePassword({\n oldPassword: fields.oldPassword,\n newPassword: fields.password\n });\n\n navigate(\"../settings\");\n } catch (error) {\n onError(error);\n setIsChanging(false);\n }\n }\n\n return (\n <div className=\"ChangePassword\">\n <form onSubmit={handleChangeClick}>\n <FormGroup size=\"lg\" controlId=\"oldPassword\">\n <FormLabel>Old Password</FormLabel>\n <FormControl\n type=\"password\"\n onChange={handleFieldChange}\n value={fields.oldPassword}\n />\n </FormGroup>\n <hr />\n <FormGroup size=\"lg\" controlId=\"password\">\n <FormLabel>New Password</FormLabel>\n <FormControl\n type=\"password\"\n onChange={handleFieldChange}\n value={fields.password}\n />\n </FormGroup>\n <FormGroup size=\"lg\" controlId=\"confirmPassword\">\n <FormLabel>Confirm Password</FormLabel>\n <FormControl\n type=\"password\"\n onChange={handleFieldChange}\n value={fields.confirmPassword}\n />\n </FormGroup>\n <LoaderButton\n type=\"submit\"\n size=\"lg\"\n disabled={!validateForm()}\n isLoading={isChanging}\n >\n Change Password\n </LoaderButton>\n </form>\n </div>\n );\n}","import React, { useEffect } from \"react\";\nimport { Outlet, useLocation, useNavigate } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\n\nexport default function AuthenticatedRoute() {\n const { pathname, search } = useLocation();\n const { isAuthenticated } = useAppContext();\n const navigate = useNavigate()\n\n useEffect(() => {\n if(isAuthenticated === false) {\n navigate(`/login?redirect=${pathname}${search}`, {replace: true})\n }\n })\n\n return (\n <Outlet />\n );\n}","import React, { useEffect } from \"react\";\nimport { Outlet, useNavigate } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\n\nfunction querystring(name, url = window.location.href) {\n name = name.replace(/[[]]/g, \"\\\\$&\");\n\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\", \"i\");\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n if (!results[2]) {\n return \"\";\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\n\nexport default function UnauthenticatedRoute({ children, ...rest }) {\n const { isAuthenticated } = useAppContext();\n const redirect = querystring(\"redirect\");\n const navigate = useNavigate();\n\n useEffect(() => {\n if(isAuthenticated) {\n navigate(redirect ?? \"../\")\n }\n })\n \n return (\n <Outlet />\n );\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getUserContextData } from '../utils/userContextData';\nimport { createForgotPasswordClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\n/**\n * Resets a user's password.\n *\n * @param input - The ResetPasswordInput object.\n * @returns ResetPasswordOutput\n * @throws -{@link ForgotPasswordException }\n * Thrown due to an invalid confirmation code or password.\n * @throws -{@link AuthValidationErrorCode }\n * Thrown due to an empty username.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n **/\nexport async function resetPassword(input) {\n const { username } = input;\n assertValidationError(!!username, AuthValidationErrorCode.EmptyResetPasswordUsername);\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { userPoolClientId, userPoolId, userPoolEndpoint } = authConfig;\n const clientMetadata = input.options?.clientMetadata;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const forgotPassword = createForgotPasswordClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const res = await forgotPassword({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ResetPassword),\n }, {\n Username: username,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n });\n const codeDeliveryDetails = res.CodeDeliveryDetails;\n return {\n isPasswordReset: false,\n nextStep: {\n resetPasswordStep: 'CONFIRM_RESET_PASSWORD_WITH_CODE',\n codeDeliveryDetails: {\n deliveryMedium: codeDeliveryDetails?.DeliveryMedium,\n destination: codeDeliveryDetails?.Destination,\n attributeName: codeDeliveryDetails?.AttributeName,\n },\n },\n };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createForgotPasswordClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('ForgotPassword'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getUserContextData } from '../utils/userContextData';\nimport { createConfirmForgotPasswordClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\n/**\n * Confirms the new password and verification code to reset the password.\n *\n * @param input - The ConfirmResetPasswordInput object.\n * @throws -{@link ConfirmForgotPasswordException }\n * Thrown due to an invalid confirmation code or password.\n * @throws -{@link AuthValidationErrorCode }\n * Thrown due to an empty confirmation code, password or username.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function confirmResetPassword(input) {\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { userPoolClientId, userPoolId, userPoolEndpoint } = authConfig;\n const { username, newPassword } = input;\n assertValidationError(!!username, AuthValidationErrorCode.EmptyConfirmResetPasswordUsername);\n assertValidationError(!!newPassword, AuthValidationErrorCode.EmptyConfirmResetPasswordNewPassword);\n const code = input.confirmationCode;\n assertValidationError(!!code, AuthValidationErrorCode.EmptyConfirmResetPasswordConfirmationCode);\n const metadata = input.options?.clientMetadata;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const confirmForgotPassword = createConfirmForgotPasswordClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n await confirmForgotPassword({\n region: getRegionFromUserPoolId(authConfig.userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmResetPassword),\n }, {\n Username: username,\n ConfirmationCode: code,\n Password: newPassword,\n ClientMetadata: metadata,\n ClientId: authConfig.userPoolClientId,\n UserContextData,\n });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { cognitoUserPoolTransferHandler } from './shared/handler';\nimport { createUserPoolDeserializer, createUserPoolSerializer, } from './shared/serde';\nimport { DEFAULT_SERVICE_CLIENT_API_CONFIG } from './constants';\nexport const createConfirmForgotPasswordClient = (config) => composeServiceApi(cognitoUserPoolTransferHandler, createUserPoolSerializer('ConfirmForgotPassword'), createUserPoolDeserializer(), {\n ...DEFAULT_SERVICE_CLIENT_API_CONFIG,\n ...config,\n});\n","function 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 _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_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 FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\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 'fakd': 'kit',\n 'fa-kit': 'kit',\n 'fa-kit-duotone': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid',\n 'fasr': 'regular',\n 'fa-regular': 'regular',\n 'fasl': 'light',\n 'fa-light': 'light',\n 'fast': 'thin',\n 'fa-thin': 'thin'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n solid: 'fas',\n regular: 'far',\n light: 'fal',\n thin: 'fat',\n duotone: 'fad',\n brands: 'fab',\n kit: 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n solid: 'fass',\n regular: 'fasr',\n light: 'fasl',\n thin: 'fast'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\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}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n fass: 'fa-solid',\n fasr: 'fa-regular',\n fasl: 'fa-light',\n fast: 'fa-thin'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\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}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass',\n 'fa-regular': 'fasr',\n 'fa-light': 'fasl',\n 'fa-thin': 'fast'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl|st)?[\\-\\ ]/; // 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|Sharp|Kit)?.*/i;\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n 900: 'fas',\n 400: 'far',\n normal: 'far',\n 300: 'fal',\n 100: 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n 900: 'fass',\n 400: 'fasr',\n 300: 'fasl',\n 100: 'fast'\n}), _familyProxy5));\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 prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['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 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-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['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 styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\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}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).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}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\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, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\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-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\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 -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n -webkit-transition-duration: 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 dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), '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 _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && 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 family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\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 params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\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 famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\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 (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\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]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][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.cssPrefix, \"-\")) > -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.cssPrefix, \"-\").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.cssPrefix, \"-\").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.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").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.5.1\\\"\";\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 _abstract2 = 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.cssPrefix, \"-.*\"));\n delete _abstract2[0].attributes.id;\n\n if (_abstract2[0].attributes.class) {\n var splitClasses = _abstract2[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\n _abstract2[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 = _abstract2.map(function (a) {\n return toHtml(a);\n }).join('\\n');\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 if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\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\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\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 ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\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.cssPrefix, \"-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.cssPrefix, \"-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.cssPrefix, \"-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 family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][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\n var element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', '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(_abstract2) {\n if (_abstract2.tag === 'g') {\n return _abstract2.children;\n } else {\n return [_abstract2];\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 { 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 = [\"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);\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 FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\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: ref\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","import React, { useState } from \"react\";\nimport { resetPassword, confirmResetPassword } from \"aws-amplify/auth\";\nimport { Link } from \"react-router\";\nimport { FormText, FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport LoaderButton from \"../components/LoaderButton\";\nimport { useFormFields } from \"../libs/hooksLib\";\nimport { onError } from \"../libs/errorLib\";\nimport \"./ResetPassword.css\";\n\nexport default function ResetPassword() {\n const [fields, handleFieldChange] = useFormFields({\n code: \"\",\n email: \"\",\n password: \"\",\n confirmPassword: \"\",\n });\n const [codeSent, setCodeSent] = useState(false);\n const [confirmed, setConfirmed] = useState(false);\n const [isConfirming, setIsConfirming] = useState(false);\n const [isSendingCode, setIsSendingCode] = useState(false);\n\n function validateCodeForm() {\n return fields.email.length > 0;\n }\n\n function validateResetForm() {\n return (\n fields.code.length > 0 &&\n fields.password.length > 0 &&\n fields.password === fields.confirmPassword\n );\n }\n\n async function handleSendCodeClick(event) {\n event.preventDefault();\n\n setIsSendingCode(true);\n\n try {\n await resetPassword({username: fields.email});\n setCodeSent(true);\n } catch (error) {\n onError(error);\n setIsSendingCode(false);\n }\n }\n\n async function handleConfirmClick(event) {\n event.preventDefault();\n\n setIsConfirming(true);\n\n try {\n await confirmResetPassword({\n username: fields.email,\n confirmationCode: fields.code,\n newPassword: fields.password\n });\n setConfirmed(true);\n } catch (error) {\n onError(error);\n setIsConfirming(false);\n }\n }\n\n function renderRequestCodeForm() {\n return (\n <form onSubmit={handleSendCodeClick}>\n <FormGroup size=\"lg\" controlId=\"email\">\n <FormLabel>Email</FormLabel>\n <FormControl\n autoFocus\n type=\"email\"\n value={fields.email}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <LoaderButton\n block\n type=\"submit\"\n size=\"lg\"\n isLoading={isSendingCode}\n disabled={!validateCodeForm()}\n >\n Send Confirmation\n </LoaderButton>\n </form>\n );\n }\n\n function renderConfirmationForm() {\n return (\n <form onSubmit={handleConfirmClick}>\n <FormGroup size=\"lg\" controlId=\"code\">\n <FormLabel>Confirmation Code</FormLabel>\n <FormControl\n autoFocus\n type=\"tel\"\n value={fields.code}\n onChange={handleFieldChange}\n />\n <FormText>\n Please check your email ({fields.email}) for the confirmation code.\n </FormText>\n </FormGroup>\n <hr />\n <FormGroup size=\"lg\" controlId=\"password\">\n <FormLabel>New Password</FormLabel>\n <FormControl\n type=\"password\"\n value={fields.password}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <FormGroup size=\"lg\" controlId=\"confirmPassword\">\n <FormLabel>Confirm Password</FormLabel>\n <FormControl\n type=\"password\"\n value={fields.confirmPassword}\n onChange={handleFieldChange}\n />\n </FormGroup>\n <LoaderButton\n block\n type=\"submit\"\n size=\"lg\"\n isLoading={isConfirming}\n disabled={!validateResetForm()}\n >\n Confirm\n </LoaderButton>\n </form>\n );\n }\n\n function renderSuccessMessage() {\n return (\n <div className=\"success\">\n <FontAwesomeIcon icon=\"fa-thin fa-check\" />\n <p>Your password has been reset.</p>\n <p>\n <Link to=\"../login\">\n Click here to login with your new credentials.\n </Link>\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"ResetPassword\">\n {!codeSent\n ? renderRequestCodeForm()\n : !confirmed\n ? renderConfirmationForm()\n : renderSuccessMessage()}\n </div>\n );\n}","import React, {useState, useEffect} from \"react\";\nimport { FormGroup, FormControl, Row, Col, Container, InputGroup, Button, Nav} from \"react-bootstrap\";\nimport { Link } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport { loadPilots, getUserData } from \"../libs/databaseAccess\";\nimport { isUserActive } from \"../libs/utils\";\n\nexport default function Emergency() {\n const { userID, club, clubName, isAuthenticated, clubTimeZone } = useAppContext();\n const [pilots, setPilots] = useState([]);\n const [pilotID, setPilotID] = useState(\"\");\n const [isLoading, setIsLoading] = useState(true);\n const [pilotRecord, setPilotRecord] = useState({});\n\n useEffect(() => {\n if (!isAuthenticated || userID === \"\" || club === \"\") {\n return;\n }\n async function onLoad() {\n try {\n const pilots = await loadPilots(club);\n setPilots(pilots.filter((a) => isUserActive(a, clubTimeZone)).sort((a, b) => (a.first+a.last).localeCompare(b.first+b.last)));\n setPilotID(userID);\n } catch (e) {\n onError(e); \n }\n }\n \n onLoad();\n setIsLoading(false);\n }, [isAuthenticated, club, userID, clubTimeZone]);\n\n useEffect(() => {\n if (pilotID === \"\" || club === \"\") {\n return;\n }\n\n async function updatePilotInfo() {\n const pilot = await getUserData(club, pilotID);\n setPilotRecord(pilot);\n }\n\n updatePilotInfo();\n }, [club, pilotID]);\n\n async function setValues(id){\n setPilotID(id);\n }\n \n return(\n <>\n <h1 className = \"centerHeader\">{clubName}</h1>\n <h3>Emergency Contacts & Member Directory</h3>\n { !isLoading &&\n <FormGroup>\n <InputGroup>\n <InputGroup.Text>Select Pilot: </InputGroup.Text> \n <FormControl as=\"select\" value={pilotID} onChange = {(e) => setValues(e.target.value)} title={\"Pilots\"}>\n { pilots.map((item) =>\n <option key={item.SK} value={item.SK}> {item.first} {item.last} </option>\n )}\n </FormControl>\n </InputGroup>\n </FormGroup>\n }\n { (pilotID === userID) &&\n <Nav.Link as={Link} key = \"profile\" to = \"../settings/profile\">\n <Button>Update my personal info</Button>\n </Nav.Link>\n }\n {(pilotID === \"\") ? \"\" : (\n <Container>\n { (pilotRecord.emLink || pilotRecord.emNote) &&\n <>\n <Row>\n <h3>Tracking Info:</h3>\n </Row>\n <h4>\n { pilotRecord.emLink &&\n <Row>\n <Col xs={6} className=\"text-right\"> Tracking link: </Col>\n <Col xs={6} className=\"text-left\"> <a href = {pilotRecord.emLink} target=\"_blank\" rel=\"noopener noreferrer\"> {pilotRecord.emLink}</a> </Col>\n </Row>\n }\n { pilotRecord.emNote &&\n <Row>\n <Col xs={6} className=\"text-right\"> Tracking instructions: </Col>\n <Col xs={6} className=\"text-left\"> {pilotRecord.emNote} </Col>\n </Row>\n }\n </h4><br></br>\n </>\n }\n <Row>\n <h3>Emergency Contact:</h3>\n </Row>\n <h4>\n <Row>\n <Col xs={6} className=\"text-right\"> Name: </Col>\n <Col xs={6} className=\"text-left\"> {pilotRecord.emContact} </Col>\n </Row>\n <Row>\n <Col xs={6} className=\"text-right\"> Phone: </Col>\n <Col xs={6} className=\"text-left\"> <a href={`tel:${pilotRecord.emPhone}`}> {pilotRecord.emPhone} </a></Col>\n </Row>\n <Row>\n <Col xs={6} className=\"text-right\"> Relation: </Col>\n <Col xs={6} className=\"text-left\"> {pilotRecord.emRelation} </Col>\n </Row>\n </h4><br></br>\n {(pilotRecord.shareEmail || pilotRecord.sharePhone || pilotRecord.shareAddress) &&\n <>\n <Row></Row>\n <Row>\n <h3> Personal Info: </h3>\n </Row>\n <h4>\n { pilotRecord.shareEmail &&\n <Row>\n <Col xs={6} className=\"text-right\"> Email: </Col>\n <Col xs={6} className=\"text-left\"> <a href={`mailto:${pilotRecord.email}`}> {pilotRecord.email} </a></Col>\n </Row> }\n { pilotRecord.sharePhone &&\n <Row>\n <Col xs={6} className=\"text-right\"> Phone: </Col>\n <Col xs={6} className=\"text-left\"> <a href={`tel:${pilotRecord.phone}`}> {pilotRecord.phone} </a></Col>\n </Row> }\n { pilotRecord.shareAddress &&\n <Row>\n <Col xs={6} className=\"text-right\"> Address: </Col>\n <Col xs={6} className=\"text-left\"> {pilotRecord.address} </Col>\n </Row> }\n </h4>\n </>\n } \n </Container>\n )\n } \n </>\n )\n}","import React, {useState, useEffect} from \"react\";\nimport { ListGroupItem, FormControl, InputGroup, FormCheck, Nav } from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport { returnPilot, loadPilots, RequestType, apiRequest } from \"../libs/databaseAccess\";\nimport { Link } from \"react-router\";\n\nexport default function Profile() {\n const { userID, club, isAuthenticated } = useAppContext();\n const [pilot, setPilot] = useState({});\n const [emContact, setEmContact] = useState(\"\");\n const [emPhone, setEmPhone] = useState(\"\");\n const [emRelation, setEmRelation] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [emNote, setEmNote] = useState(\"\");\n const [emLink, setEmLink] = useState(\"\");\n const [address, setAddress] = useState(\"\");\n const [shareEmail, setShareEmail] = useState(false);\n const [sharePhone, setSharePhone] = useState(false);\n const [shareAddress, setShareAddress] = useState(false);\n\n useEffect(() => {\n if (!isAuthenticated || userID === \"\" || club === \"\") {\n return;\n }\n async function onLoad() {\n try {\n const pilots = await loadPilots(club);\n const pilot = returnPilot(club, userID, pilots);\n setPilot(pilot);\n setEmContact(pilot.emContact || \"\");\n setEmPhone(pilot.emPhone || \"\");\n setEmRelation(pilot.emRelation || \"\");\n setPhone(pilot.phone || \"\");\n setEmail(pilot.email || \"\");\n setAddress(pilot.address || \"\");\n setEmNote(pilot.emNote || \"\");\n setEmLink(pilot.emLink || \"\");\n setShareEmail(pilot.shareEmail || false);\n setSharePhone(pilot.sharePhone || false);\n setShareAddress(pilot.shareAddress || false);\n } catch (e) {\n onError(e); \n }\n }\n \n onLoad();\n }, [isAuthenticated, club, userID]);\n\n function updatePilot(){\n const data = {\n emContact: emContact,\n emPhone: emPhone,\n emRelation: emRelation,\n phone: phone,\n email: email,\n address: address,\n emNote: emNote,\n emLink: emLink,\n shareEmail: shareEmail,\n sharePhone: sharePhone,\n shareAddress: shareAddress,\n };\n const body = {\n club: club,\n type: \"PILOT\",\n id: pilot.SK,\n data: data,\n };\n apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/update-item/\", options: {\n \"body\": body\n }});\n }\n\n return(\n <>\n <h1>Profile for {pilot.first} {pilot.last}</h1>\n <h2 style={{textAlign: 'left'}}>Emergency Tracking (Spot, Skylines, etc)</h2>\n <InputGroup>\n <InputGroup.Text>Online tracking link</InputGroup.Text>\n <FormControl\n type=\"link\"\n value={emLink}\n onChange={e => setEmLink(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Tracking Instructions</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={emNote}\n onChange={e => setEmNote(e.target.value)}\n />\n </InputGroup>\n <h2 style={{textAlign: 'left'}}>Emergency Contact</h2>\n <InputGroup>\n <InputGroup.Text>Name</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={emContact}\n onChange={e => setEmContact(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Phone Number</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={emPhone}\n onChange={e => setEmPhone(e.target.value)}\n />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Relationship</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={emRelation}\n onChange={e => setEmRelation(e.target.value)}\n />\n </InputGroup>\n <div>\n <div style={{display:'inline-block', textAlign: 'left', width:'70%', maxWidth:'70%'}}><h2>Personal Contact Info</h2></div>\n <div style={{display:'inline-block', textAlign: 'right', width:'30%', maxWidth:'30%'}}><h5>Click to share in member directory</h5></div>\n </div>\n <InputGroup>\n <InputGroup.Text>Phone Number</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n <InputGroup.Text><FormCheck type=\"checkbox\" aria-label=\"...\" checked={sharePhone} onChange = {() => setSharePhone(!sharePhone)}/></InputGroup.Text>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Email Address</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n />\n <InputGroup.Text><FormCheck type=\"checkbox\" aria-label=\"...\" checked={shareEmail} onChange = {() => setShareEmail(!shareEmail)}/></InputGroup.Text>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Mailing Address</InputGroup.Text>\n <FormControl\n type=\"text\"\n value={address}\n onChange={e => setAddress(e.target.value)}\n />\n <InputGroup.Text><FormCheck type=\"checkbox\" aria-label=\"...\" checked={shareAddress} onChange = {() => setShareAddress(!shareAddress)}/></InputGroup.Text> \n </InputGroup>\n <br></br>\n <Nav.Link as={Link} className=\"bg-primary py-2 text-white\" key = \"submit\" to = \"../settings\" onClick = {updatePilot}>\n <ListGroupItem action>Submit Changes</ListGroupItem>\n </Nav.Link>\n </>\n )\n}","import React, { useState, useEffect } from \"react\";\nimport { FormControl, FormGroup, ToggleButton, ToggleButtonGroup, FormLabel } from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { RequestType, apiRequest, loadPilots } from \"../libs/databaseAccess\";\nimport LoaderButton from \"../components/LoaderButton\";\nimport \"./Test.css\";\nimport {CSVLink} from \"react-csv\";\nimport { DateTime } from \"luxon\";\n\nexport default function Export(){\n const { club, isAuthenticated, userIsAdmin, clubTimeZone } = useAppContext();\n const [startDate, setStartDate] = useState(\"\");\n const [endDate, setEndDate] = useState(\"\");\n const [exportType, setExportType] = useState(\"Flights\");\n const [loading, setLoading] = useState(false);\n const [csvReport, setCSVReport] = useState(null);\n const [pilots, setPilots] = useState([]);\n\n useEffect(()=>{\n if(!isAuthenticated || !userIsAdmin){\n return;\n } \n const today = DateTime.fromObject({}, {zone: clubTimeZone})\n setStartDate(today.toISODate());\n setEndDate(today.toISODate());\n },[club, userIsAdmin, isAuthenticated, clubTimeZone]);\n\n async function loadData(){\n setCSVReport(null);\n setLoading(true);\n \n let pilotList = pilots;\n if(pilots.length < 1) {\n pilotList = await loadPilots(club);\n setPilots(pilotList); \n }\n\n if(exportType === \"Flights\"){\n loadFlightData(false, pilotList);\n }\n else if (exportType === \"All Flights\"){\n loadFlightData(true, pilotList);\n }\n else {\n loadTransactionData(pilotList);\n }\n }\n\n async function loadFlightData(includeCancelled, pilotList){\n let startDateTime, endDateTime;\n if(startDate!==\"\"){\n const start = DateTime.fromISO(startDate, {zone: clubTimeZone}).startOf(\"day\");\n const end = DateTime.fromISO(endDate, {zone: clubTimeZone}).endOf(\"day\");\n startDateTime = start.toMillis();\n endDateTime = end.toMillis();\n if(startDateTime>endDateTime){\n startDateTime = end.startOf(\"day\").toMillis();\n setStartDate(end.toISODate());\n }\n }\n else{\n return;\n }\n const params = {\n club: club,\n startDate: startDateTime,\n endDate: endDateTime,\n }\n let flights = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-flights/\", options: {queryParams:params}});\n if(!includeCancelled) {\n flights.body = flights.body.filter(item => !item.cancelledAt)\n }\n\n const data = flights.body.map((item)=>{\n const flightTime = item.launchedAt & item.landedAt ? (item.landedAt - item.launchedAt)/1000/3600 : 0;\n const towPilot = pilotList.find((a)=>(a.SK===item.towPilot))\n return({\n \"date\":item.PK.slice(-10),\n \"first\":item.first,\n \"last\":item.last,\n \"glider\":item.glider,\n \"flyWith\":item.flyWith,\n \"passengerFirst\":item.passengerFirst,\n \"passengerLast\":item.passengerLast,\n \"cancelledAt\": item.cancelledAt,\n \"launchedAt\": item.launchedAt,\n \"landedAt\":item.landedAt,\n \"flightTime\": flightTime,\n \"launchType\":item.launchType,\n \"launchHeight\": item.releaseHeight ? item.releaseHeight : 0,\n \"pilotInCharge\":item.pilotInCharge ? item.pilotInCharge.toString() : \"true\",\n \"shareCost\":item.shareCost ? item.shareCost.toString() : \"false\",\n \"towPilot\": towPilot ? `${towPilot.first} ${towPilot.last}` : item.towPilot,\n \"tug\":item.tug,\n })});\n let headers = [\n {label: \"Date\", key: \"date\"},\n {label: \"Pilot First Name\", key: \"first\"},\n {label: \"Pilot Last Name\", key: \"last\"},\n {label: \"Glider\", key: \"glider\"},\n {label: \"Flying With\", key: \"flyWith\"},\n {label: \"Passenger First Name\", key: \"passengerFirst\"},\n {label: \"Passenger Last Name\", key: \"passengerLast\"},\n {label: \"Launch Time\", key: \"launchedAt\"},\n {label: \"Landed At\", key: \"landedAt\"},\n {label: \"Flight Duration [hr]\", key: \"flightTime\"},\n {label: \"Launch Type\", key: \"launchType\"},\n {label: \"Launch Height\", key: \"launchHeight\"},\n {label: \"Pilot in Charge?\", key: \"pilotInCharge\"},\n {label: \"Sharing Cost?\", key: \"shareCost\"},\n {label: \"Tow Pilot\", key: \"towPilot\"},\n {label: \"Tug\", key: \"tug\"},\n ]\n if(includeCancelled) {\n headers.push({label: \"Cancelled At\", key: \"cancelledAt\"})\n }\n\n const report = {\n data: data,\n headers: headers,\n filename: exportType+\"_\"+startDate+\"_\"+endDate+\".csv\"\n }\n setCSVReport(report);\n setLoading(false);\n }\n\n async function loadTransactionData(pilotList){\n let startDateTime, endDateTime;\n if(startDate!==\"\"){\n const start = DateTime.fromISO(startDate, {zone: clubTimeZone}).startOf(\"day\");\n const end = DateTime.fromISO(endDate, {zone: clubTimeZone}).endOf(\"day\");\n startDateTime = start.toMillis();\n endDateTime = end.toMillis();\n if(startDateTime>endDateTime){\n startDateTime = end.startOf(\"day\").toMillis();\n setStartDate(end.toISODate());\n }\n }\n else{\n return;\n }\n const params = {\n club: club,\n startDate: startDateTime,\n endDate: endDateTime\n }\n const allTransactionsResponse = await apiRequest(RequestType.GET, {apiName: \"flightline\", path: \"/get-all-transactions/\", options: {queryParams:params}});\n const chartOfAccounts = allTransactionsResponse.body.chartOfAccounts\n const data = allTransactionsResponse.body.transactions.map((item)=>{\n const dateObj = DateTime.fromMillis(item.timestamp, {zone: clubTimeZone});\n let userName = item.userId\n if(userName !== \"Intro\") {\n const pilot = pilotList.find((p) => p.SK === userName)\n userName = pilot ? `${pilot.first} ${pilot.last}` : item.userId\n }\n return ({\n \"date\":dateObj.toISODate(),\n \"rawTime\": item.timestamp,\n \"accountName\":chartOfAccounts[item.account].name,\n \"account\":item.account,\n \"debit\":item.direction > 0 ? item.amount : 0,\n \"credit\":item.direction < 0 ? item.amount : 0,\n \"userID\":userName,\n \"note\":item.note,\n \"reference\":item.transactionRef,\n \"reason\": item.transactionType,\n \"type\":item.transferType,\n })});\n const headers = [\n {label: \"Date\", key: \"date\"},\n {label: \"Account\", key: \"accountName\"},\n {label: \"Account Number\", key: \"account\"},\n {label: \"Debit Amount\", key: \"debit\"},\n {label: \"Credit Amount\", key: \"credit\"},\n {label: \"Transaction Reason\", key: \"reason\"},\n {label: \"Epoch time\", key: \"rawTime\"},\n {label: \"User\", key: \"userID\"},\n {label: \"Transaction Type\", key: \"type\"},\n {label: \"Transaction Reference\", key: \"reference\"},\n {label: \"Note\", key: \"note\"}\n ]\n const report = {\n data: data,\n headers: headers,\n filename: exportType+\"_\"+startDate+\"_\"+endDate+\".csv\"\n }\n setCSVReport(report);\n setLoading(false);\n }\n\n return(\n <>\n <h2>Export Club Data</h2>\n <FormGroup controlId=\"startDate\" style={{display:'inline-block', maxWidth:'50%'}} size=\"lg\">\n <FormLabel>Start Date</FormLabel>\n <FormControl\n autoFocus\n type=\"date\"\n value={startDate}\n disabled={startDate === \"\"}\n onChange={e => setStartDate(e.target.value)}\n />\n </FormGroup>\n <FormGroup controlId=\"endDate\" style={{display:'inline-block', maxWidth:'50%'}} size=\"lg\">\n <FormLabel>End Date</FormLabel>\n <FormControl\n type=\"date\"\n value={endDate}\n disabled={endDate === \"\"}\n onChange={e => setEndDate(e.target.value)}\n />\n </FormGroup>\n <br></br>\n <FormGroup controlId=\"splitCost\" size=\"lg\"><h4>Choose Data to Export: </h4>\n <ToggleButtonGroup name=\"splitFormCheck\" type=\"radio\" value={exportType} onChange={setExportType}>\n <ToggleButton id=\"all\" value={\"All Flights\"}>Flights (including cancelled)</ToggleButton>\n <ToggleButton id=\"completed\" value={\"Flights\"}>Completed Flights</ToggleButton>\n <ToggleButton id=\"transactions\" value={\"Transactions\"}>Transactions</ToggleButton>\n </ToggleButtonGroup>\n </FormGroup>\n <LoaderButton size=\"lg\" onClick={() => loadData()} isLoading={loading}>Load Data for Export</LoaderButton>\n <br></br>\n {!loading && csvReport && <CSVLink {...csvReport}>Download Exported Data</CSVLink>}\n </>\n );\n}\n","import React, {useState, useEffect, useCallback} from \"react\";\nimport { FormControl, Button, InputGroup, FormGroup, FormSelect, ToggleButtonGroup, ToggleButton} from \"react-bootstrap\";\nimport { useNavigate } from \"react-router\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { onError } from \"../libs/errorLib\";\nimport { loadPilots, getTugs, returnTug, RequestType, apiRequest} from \"../libs/databaseAccess\";\nimport { buildNumberString } from \"../libs/utils\";\nimport \"./Fuel.css\"; //some styling\nimport { DateTime } from \"luxon\";\n\nexport default function Fuel() {\n const { userID, club, isAuthenticated, clubTimeZone } = useAppContext();\n const [tug, setTug] = useState(\"\");\n const [tugs, setTugs] = useState([]);\n const [fuel, setFuel] = useState(0.0);\n const [hobbsTime, setHobbsTime] = useState(0.0);\n const navigate = useNavigate();\n const [chooseChange, setChooseChange] = useState(\"Check In\");\n const [towPilots, setTowPilots] = useState([])\n const [pilotChange, setPilotChange] = useState(\"None\");\n const [lastOil, setLastOil] = useState(0)\n const [lastFuel, setLastFuel] = useState(0)\n const [lastPilotChange, setLastPilotChange] = useState(0)\n const [checkedIn, setCheckedIn] = useState(\"None\");\n const [checkedInName, setCheckedInName] = useState(\"None\");\n const [isLoading, setIsLoading] = useState(true);\n\n const refreshTugList = useCallback(async () => {\n const tugs = await getTugs(club);\n const sortedTugs = tugs.sort((a, b) => ((a.SK).localeCompare(b.SK)));\n setTugs(sortedTugs);\n setTug(sortedTugs[0].SK);\n const tug = returnTug(club, sortedTugs[0].SK, tugs);\n setHobbsTime(tug.lastHobbs);\n setLastOil(tug.oilHobbs);\n setLastFuel(tug.fuelHobbs);\n setLastPilotChange(tug.pilotHobbs);\n\n const pilotId = tug.pilot || \"None\";\n setCheckedIn(pilotId);\n const pilotName = tug.pilotName || \"None\";\n setCheckedInName(pilotName);\n }, [club])\n\n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n try {\n refreshTugList()\n\n const pilots = await loadPilots(club);\n const towPilots = pilots.filter(a => a.isTowPilot === true).sort((a, b) => ((a.first).localeCompare(b.first)));\n setTowPilots(towPilots);\n if (towPilots) {\n setPilotChange(towPilots[0].SK);\n }\n\n } catch (e) {\n onError(e);\n }\n }\n onLoad();\n setIsLoading(false);\n }, [isAuthenticated, club, userID, refreshTugList]);\n\n async function recordTow(){\n const recordTime = DateTime.fromObject({}, {zone: clubTimeZone});\n const body = {\n \"club\": club,\n data: {\n \"time\": recordTime.toMillis(),\n \"by\": userID,\n \"hobbs\": parseFloat(hobbsTime),\n \"tug\": tug,\n }\n }\n if (chooseChange === \"Oil\") {\n body.data.oil = true;\n }\n if (chooseChange === \"Fuel\") {\n body.data.fuel = parseFloat(fuel);\n }\n if (chooseChange === \"Check In\") {\n body.data.pilot = pilotChange;\n body.data.pilotLogOut = false;\n }\n if (chooseChange === \"Check Out\") {\n body.data.pilot = checkedIn;\n body.data.pilotLogOut = true;\n }\n\n refreshTugList()\n await apiRequest(RequestType.POST, {apiName: \"flightline\", path: \"/create-tow/\", options: {\n \"body\": body,\n }});\n navigate(\"../\");\n }\n\n function recordCheckOut() {\n setPilotChange(\"None\");\n recordTow();\n }\n\n function renderInput(){\n if(chooseChange === \"Fuel\"){\n return (\n <>\n {(renderTugs((tugs)))}\n <FormGroup id = \"fuelInput\">\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Hobbs: </InputGroup.Text>\n <FormControl\n type=\"text\"\n value = {hobbsTime}\n inputMode=\"decimal\"\n onChange={(e) => setHobbsTime(buildNumberString(e.target.value, hobbsTime, 2))}\n />\n <InputGroup.Text>h</InputGroup.Text>\n </InputGroup>\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Fuel: </InputGroup.Text>\n <FormControl\n type=\"text\"\n value = {fuel}\n inputMode=\"decimal\"\n onChange={(e) => setFuel(buildNumberString(e.target.value, fuel, 2))}\n />\n <InputGroup.Text>L</InputGroup.Text>\n </InputGroup>\n <h4 className=\"mb-3\">Last refuel was at {lastFuel} hours</h4>\n </FormGroup>\n <br></br>\n <Button variant=\"primary\" size=\"lg\" onClick = {recordTow}>\n Confirm\n </Button>\n </>\n );\n } \n if (chooseChange===\"Oil\"){\n return (\n <>\n {(renderTugs((tugs)))}\n <FormGroup id = \"OilInput\">\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Hobbs: </InputGroup.Text>\n <FormControl\n type='text'\n value = {hobbsTime}\n inputMode=\"decimal\"\n onChange={(e) => setHobbsTime(buildNumberString(e.target.value, hobbsTime, 2))}\n />\n <InputGroup.Text>h</InputGroup.Text>\n </InputGroup>\n <h4 className=\"mb-3\">Last oil change was at {lastOil} hours</h4>\n </FormGroup>\n <br></br>\n <Button variant=\"primary\" size=\"lg\" onClick = {recordTow}>\n Confirm Oil Change\n </Button>\n </>\n )\n }\n if (chooseChange === \"Check In\"){\n return(\n <>\n {(renderTugs(tugs))}\n <FormGroup id = \"towPilotInput\">\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Hobbs: </InputGroup.Text>\n <FormControl\n type='text'\n value = {hobbsTime}\n inputMode=\"decimal\"\n onChange={(e) => setHobbsTime(buildNumberString(e.target.value, hobbsTime, 2))}\n />\n <InputGroup.Text>h</InputGroup.Text>\n </InputGroup>\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Change to: </InputGroup.Text>\n <FormSelect onChange={(e) => setPilotChange(e.target.value)}>\n {towPilots.map((item) =>\n <option key={item.SK} value={item.SK}>{item.first + \" \" + item.last}</option>)}\n </FormSelect>\n </InputGroup>\n <Button variant=\"primary\" size=\"lg\" onClick = {recordTow}>\n Confirm Pilot Check In\n </Button>\n <h4 className=\"mb-3\">Last pilot change was at {lastPilotChange} hours</h4>\n </FormGroup>\n </>\n );\n }\n if (chooseChange === \"Check Out\"){\n return(\n <>\n {(renderTugs(tugs))}\n <FormGroup id = \"towPilotInput\">\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Hobbs: </InputGroup.Text>\n <FormControl\n type='text'\n value = {hobbsTime}\n inputMode=\"decimal\"\n onChange={(e) => setHobbsTime(buildNumberString(e.target.value, hobbsTime, 2))}\n />\n <InputGroup.Text>h</InputGroup.Text>\n </InputGroup>\n <InputGroup size=\"lg\" className=\"mb-3\">\n <Button disabled={checkedIn === \"None\"} onClick = {recordCheckOut}>Check out {checkedInName}</Button>\n </InputGroup>\n <h4 className=\"mb-3\">Last pilot change was at {lastPilotChange} hours</h4>\n </FormGroup>\n </>\n );\n }\n }\n\n function setCurrentTug(eventKey){\n setTug(eventKey);\n const tug = returnTug(club, eventKey, tugs);\n setHobbsTime(tug.lastHobbs);\n setCheckedIn(tug.pilot || \"None\");\n setCheckedInName(tug.pilotName || \"None\");\n setLastOil(tug.oilHobbs);\n setLastFuel(tug.fuelHobbs);\n setLastPilotChange(tug.pilotHobbs);\n }\n\n function renderTugs(tugs){\n return (\n <>\n <InputGroup size=\"lg\" className=\"mb-3\">\n <InputGroup.Text>Tug: </InputGroup.Text>\n <FormControl as=\"select\" onChange = {(e) => setCurrentTug(e.target.value)}>\n { tugs.map((item) =>\n <option key={item.SK} value={item.SK}> {item.SK} </option>\n )}\n </FormControl>\n </InputGroup>\n </>\n );\n } \n\n return (\n <> \n { isLoading ? \n <div className=\"spinner-border\" role=\"status\"></div>\n : \n <>\n <ToggleButtonGroup className=\"mb-3\" type=\"radio\" name=\"options\" value={chooseChange} onChange={e=>setChooseChange(e)}>\n <ToggleButton variant=\"outline-secondary\" id=\"opt-1\" value={\"Check In\"}>Pilot check in</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"opt-2\" value={\"Check Out\"}>Pilot check out</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"opt-3\" value={\"Fuel\"}>Refuel</ToggleButton>\n <ToggleButton variant=\"outline-secondary\" id=\"opt-4\" value={\"Oil\"}>Oil Change</ToggleButton>\n </ToggleButtonGroup>\n <div>\n {renderInput()}\n </div>\n </>\n }\n </>\n )\n}","import React, {useState, useEffect} from \"react\";\nimport { Button, ListGroup} from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { loadFlights, returnFlight } from \"../libs/databaseAccess\";\nimport { onError } from \"../libs/errorLib\";\nimport \"./Home.css\";\nimport \"./Launch.css\";\n\nexport default function Awaiting() {\n const { userID, club, isAuthenticated, tzoffset } = useAppContext();\n const [launchFlight, setLaunchFlight] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [waitingFlights, setWaitingFlights] = useState([]);\n const [launchFlightName, setLaunchFlightName] = useState(\"\");\n //const [launchFlightWeight, setLaunchFlightWeight] = useState(0);\n const [launchFlightType, setLaunchFlightType] = useState(\"\");\n const [launchFlightSpeed, setLaunchFlightSpeed] = useState(0);\n\n // Build local date string\n const date = new Date();\n date.setTime(date.getTime()-tzoffset*60*1000);\n const localDateString = date.toISOString().slice(0,10);\n\n useEffect(() => {\n async function onLoad() {\n if (!isAuthenticated || club === \"\" || userID === \"\") {\n return;\n }\n try {\n // Pull club specific info from DynamoDB\n let todaysFlights = await loadFlights(club, localDateString);\n todaysFlights = todaysFlights.filter(a => !a.acceptedAt && !a.launchedAt && !a.offTowAt && !a.landedAt && !a.cancelledAt)\n setWaitingFlights(todaysFlights.sort((a,b) => (a.submittedAt - b.submittedAt)));\n } catch (e) {\n onError(e);\n } setIsLoading(false);\n }\n onLoad();\n }, [isAuthenticated, club, userID, isLoading, localDateString]);\n\n function renderFlights(flights) {\n return (\n <div className=\"flights\">\n <ListGroup>\n { flights.map((flight, i) =>\n <Button variant=\"outline-secondary\" key={flight.SK} value={flight.SK} onClick = {(e) => setLaunchValues(e)} active={flight.SK === launchFlight}>\n {flight.first+\" \"+flight.last.slice(0,1)+\" in \"+flight.glider+\", \"+flight.launchType/*+\", \"+getWeight(flight)+\" kg\"*/}\n </Button>)\n }\n </ListGroup>\n </div>\n );\n }\n\n function setLaunchValues(event){\n const id = event.target.value;\n const launch = returnFlight(club, id, waitingFlights, localDateString);\n if (launchFlight === id) {\n setLaunchFlight(null);\n } else {\n //const totalWeight = launch.weight+launch.passengerWeight+launch.gliderWeight+launch.waterWeight;\n setLaunchFlight(id);\n setLaunchFlightName(launch.glider);\n //setLaunchFlightWeight(Number.parseFloat(totalWeight).toFixed());\n setLaunchFlightType(launch.launchType);\n setLaunchFlightSpeed(launch.towSpeed);\n }\n }\n\n // function getWeight(flight) {\n // let total = 0;\n // const weights = [\"gliderWeight\", \"weight\", \"passengerWeight\", \"waterWeight\"];\n // weights.forEach((item) => {\n // total += item in flight ? flight[item] : 0;\n // })\n // return total;\n // }\n\n function renderLander() {\n return (\n <div className=\"lander\">\n <h1>Take Up Slack</h1>\n <p>Your Gliding Flight Line Management Tool</p>\n {/* {(club !== \"\") ? <h2>Welcome to {clubName}!</h2> : <h2>Please sign in </h2>} */}\n </div>\n );\n }\n\n function renderActivities() {\n return (\n <>\n { launchFlight && \n <>\n <h2>{launchFlightName} to {launchFlightType} @ {launchFlightSpeed} kn{/*, {launchFlightWeight} kg*/}</h2>\n <hr></hr>\n </>\n }\n {\n <div className=\"Home\"><h4>Awaiting tows: </h4>\n {(renderFlights((waitingFlights)))} \n </div>\n }\n </>\n );\n }\n\n return (\n <div className=\"Home\">\n {isAuthenticated ? renderActivities() : renderLander()}\n </div>\n );\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Form, FormGroup, InputGroup } from \"react-bootstrap\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport LoaderButton from \"./LoaderButton\";\nimport { formatTaxOptions, toCurrencyString } from \"../libs/utils\";\nimport { RequestType, apiRequest } from \"../libs/databaseAccess\";\n\nconst SalesTaxAccount = 2510\nconst IntroAccount = 2120\n\nexport default function AccountingAdjustments() {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const { club, userID, clubTaxRates } = useAppContext()\n\n const [amount, setAmount] = useState(\"\");\n const [adjustmentAccount, setAdjustmentAccount] = useState(0);\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [taxType, setTaxType] = useState(\"\")\n\n // Set default tax rate once tax rates load\n useEffect(() => {\n if(clubTaxRates != null ){\n const taxRates = Object.keys(clubTaxRates)\n setTaxType(taxRates.length > 0 ? taxRates[0] : \"\")\n }\n }, [clubTaxRates])\n\n async function confirmSubmitAdjustment() {\n setIsSubmitting(true)\n\n const accountNameCache = accountName; // In case the account is changes before toast is sent\n\n const body = {\n club,\n amount,\n account: adjustmentAccount,\n by: userID,\n time: Date.now(),\n transactionType: adjustmentType.replace(/\\s/g,'')\n }\n\n if(adjustmentAccount === SalesTaxAccount) {\n body.taxType = taxType\n }\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/add-transaction/\", options: {\"body\": body}}\n )\n\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Failed to submit adjustment\"\n })\n } else {\n sendToast({\n status: NotificationStatus.Success,\n message: `${accountNameCache} adjusted successfully`\n })\n setAmount(\"\")\n }\n setIsSubmitting(false);\n }\n \n async function submitAdjustment() {\n sendConfirmModal({\n heading: \"Submit Adjustment\",\n body: (<span>\n Do you want to submit a <strong>{adjustmentType}</strong> to <strong>{accountName}</strong>? \n This will reduce the value of the <strong>{accountName}</strong> account by <strong>{toCurrencyString(amount, \"CAD\", true)}</strong>.\n </span>),\n confirmText: \"Submit\",\n rejectText: \"Cancel\",\n confirmColor: \"primary\",\n center: true,\n confirm: confirmSubmitAdjustment\n })\n }\n\n const typeOptions = useMemo(() => {\n let name = \"\"\n if(adjustmentAccount === SalesTaxAccount) name = \"Bank Payment\"\n if(adjustmentAccount === IntroAccount) name = \"Write Down\"\n\n return [\n <option key={adjustmentAccount} value={adjustmentAccount}>\n {name}\n </option>\n ]\n }, [adjustmentAccount])\n\n const adjustmentType = useMemo(() => {\n let name = \"Adjustment\"\n if(adjustmentAccount === SalesTaxAccount) name = \"Bank Payment\"\n if(adjustmentAccount === IntroAccount) name = \"Write Down\"\n\n return name\n }, [adjustmentAccount])\n\n const accountName = useMemo(() => {\n let name = \"Account\"\n if(adjustmentAccount === SalesTaxAccount) name = \"Sales Tax A/P\"\n if(adjustmentAccount === IntroAccount) name = \"Intro A/P\"\n\n return name\n }, [adjustmentAccount])\n\n const canSubmit = useMemo(() => {\n if(adjustmentAccount === SalesTaxAccount && taxType === \"\") {\n return false\n }\n return adjustmentAccount !== 0 && amount !== \"\" && amount !== 0\n }, [adjustmentAccount, amount, taxType])\n\n const taxOptions = useMemo(() => {\n return formatTaxOptions(clubTaxRates)\n }, [clubTaxRates])\n\n const updateAmount = (amount) => {\n if(amount === \"\") {\n setAmount(amount)\n return\n }\n\n // Round to two decimal places before updating\n setAmount(Math.floor((amount * 100)) / 100)\n }\n\n return (\n <section>\n <h4>Accounting Adjustments</h4>\n <FormGroup className=\"d-flex flex-column gap-3\" controlId=\"adjustmentInfo\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text>Account</InputGroup.Text>\n <Form.Select value={adjustmentAccount} onChange={e => setAdjustmentAccount(parseInt(e.target.value))}>\n <option key={0} value={0}>Select Account</option>\n <option key={SalesTaxAccount} value={SalesTaxAccount}>Sales Tax A/P</option>\n <option key={IntroAccount} value={IntroAccount}>Intro A/P</option>\n </Form.Select> \n </InputGroup>\n\n <InputGroup>\n <InputGroup.Text>Adjustment</InputGroup.Text>\n <Form.Select value={adjustmentAccount} disabled={adjustmentAccount === 0}>\n {typeOptions.map((a) => a)}\n </Form.Select>\n </InputGroup>\n\n {adjustmentAccount === SalesTaxAccount && \n <InputGroup>\n <InputGroup.Text>Tax Type</InputGroup.Text>\n <Form.Select value={taxType} onChange={e => setTaxType(e.target.value)}>\n {taxOptions.map((opt, i) => \n <option key={opt.value ?? i} value={opt.value}>{opt.label}</option>\n )}\n </Form.Select>\n </InputGroup>\n }\n\n <div>\n <InputGroup>\n <InputGroup.Text>Amount</InputGroup.Text>\n <InputGroup.Text>$</InputGroup.Text>\n <Form.Control\n type=\"number\"\n min=\"0\"\n value={amount}\n disabled={adjustmentAccount === 0}\n onChange={e => updateAmount(e.target.value)}\n />\n </InputGroup> \n <Form.Text className=\"d-block text-start\">The adjustment will reduce the value of the account by this amount</Form.Text>\n </div>\n\n <LoaderButton isLoading={isSubmitting} disabled={!canSubmit} onClick={submitAdjustment} variant=\"primary\">\n Submit Adjustment\n </LoaderButton>\n\n </FormGroup> \n </section>\n\n );\n}","import React, { useMemo, useState, useEffect } from \"react\";\nimport { Form, FormGroup, Button, Modal } from \"react-bootstrap\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport LoaderButton from \"./LoaderButton\";\nimport {addClubFee, removeClubFee } from \"../libs/databaseAccess\";\n\nexport default function ClubFeeAdmin() {\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n const { club, clubFeeList, setClubFeeList } = useAppContext()\n\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [isRemoving, setIsRemoving] = useState(false)\n const [selectedFee, setSelectedFee] = useState(\"\")\n const [newFeeName, setNewFeeName] = useState(\"\")\n const [showNewFeeModal, setShowNewFeeModal] = useState(false)\n \n async function submitNewFee(e) {\n e.preventDefault()\n setIsSubmitting(true)\n const response = await addClubFee(club, newFeeName);\n if(response.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Failed to add new fee class\"\n })\n } else {\n sendToast({\n status: NotificationStatus.Success,\n message: \"New fee class added\"\n })\n setClubFeeList(response.body.feeList ?? [])\n setShowNewFeeModal(false)\n }\n setIsSubmitting(false)\n }\n\n async function addFee() {\n setNewFeeName(\"\")\n setShowNewFeeModal(true)\n }\n\n useEffect(() => {\n if(selectedFee === \"\" && clubFeeList.length > 0){\n setSelectedFee(clubFeeList[0])\n }\n }, [clubFeeList, selectedFee])\n\n async function submitRemoveFee() {\n setIsRemoving(true)\n const response = await removeClubFee(club, selectedFee);\n if(response.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Failed to remove fee class\"\n })\n } else {\n sendToast({\n status: NotificationStatus.Success,\n message: \"Fee class removed\"\n })\n setClubFeeList(response.body.feeList ?? [])\n setSelectedFee(response.body.feeList[0] ?? \"\")\n }\n setIsRemoving(false)\n }\n\n async function removeFee() {\n sendConfirmModal({\n heading: \"Remove Fee class\",\n body: `Are you sure you want to remove the fee class ${selectedFee}? This won't remove this fee class from existing transactions, but you will not be able to record expenses with this fee class after removing it.`,\n confirmText: \"Remove\",\n confirmColor: \"danger\",\n rejectText: \"Cancel\",\n rejectColor: \"secondary\",\n confirm: submitRemoveFee\n })\n }\n\n const feeOptions = useMemo(() => {\n return Array.isArray(clubFeeList) ? clubFeeList : []\n }, [clubFeeList])\n\n const renderNewFeeModal = () => {\n return (\n <Modal size=\"lg\" show={showNewFeeModal} onHide={() => setShowNewFeeModal(false)}>\n <Modal.Header closeButton>New Fee Class Name</Modal.Header>\n <Modal.Body>\n <Form className=\"d-flex flex-column gap-3\" onSubmit={submitNewFee}>\n <Form.Control\n value={newFeeName}\n autoFocus\n onChange={(e) => setNewFeeName(e.target.value)}\n />\n <LoaderButton isLoading={isSubmitting} type=\"submit\">Add New Fee Class</LoaderButton>\n </Form>\n </Modal.Body>\n </Modal>\n )\n }\n\n return (\n <section>\n <h4>Club Fee Classes</h4>\n {renderNewFeeModal()}\n <FormGroup className=\"d-flex flex-column gap-3\">\n <select className=\"w-100 py-2 border border-secondary-subtle\" value={selectedFee} onChange={(e) => setSelectedFee(e.target.value)} size=\"5\">\n {feeOptions.map(o => \n <option className=\"py-1 px-3\" key={o} value={o}>{o}</option>\n )}\n </select>\n <Button onClick={addFee} variant=\"success\">Add New Fee Class</Button>\n {selectedFee !== \"\"&&\n <LoaderButton onClick={removeFee} isLoading={isRemoving} variant=\"danger\">Remove Fee Class: {selectedFee}</LoaderButton>\n }\n </FormGroup>\n </section>\n\n );\n}","import { useEffect, useState } from \"react\";\nimport { Form, InputGroup, Button } from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { updateDefaultIntroStalePeriod } from \"../libs/databaseAccess\";\n\nexport default function IntroExpirationAdmin() {\n const {club, clubDefaultIntroStalePeriod, setClubDefaultIntroStalePeriod} = useAppContext()\n const {sendToast, sendAlert, clearAlerts} = useNotificationContext()\n\n const [introStaleDays, setIntroStaleDays] = useState(0)\n\n async function updateIntroStaleDays() {\n const response = await updateDefaultIntroStalePeriod(club, introStaleDays)\n if(response.statusCode !== 200 || (response.body && !response.body.status)) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not update default intro expiration period\",\n autohide: false\n })\n setIntroStaleDays(clubDefaultIntroStalePeriod)\n } else {\n clearAlerts()\n setClubDefaultIntroStalePeriod(response.body.period)\n sendToast({\n status: NotificationStatus.Success,\n message: `Default intro expiration period updated`,\n })\n }\n }\n\n useEffect(() => {\n if(clubDefaultIntroStalePeriod != null){\n setIntroStaleDays(clubDefaultIntroStalePeriod)\n }\n }, [clubDefaultIntroStalePeriod])\n\n return (\n <section>\n <h4>Default Intro Expiration Period</h4>\n <Form.Group controlId=\"introStaleDays\" className=\"d-flex flex-row gap-3\">\n <InputGroup>\n <Form.Control\n type=\"number\"\n value={introStaleDays}\n onChange={e => setIntroStaleDays(e.target.value)}\n />\n <InputGroup.Text>days</InputGroup.Text>\n </InputGroup>\n <Button type=\"submit\" size=\"md\" onClick={updateIntroStaleDays} className=\"text-nowrap\">\n Set Expiration\n </Button>\n </Form.Group>\n <Form.Text className=\"d-block text-start\">New intros will be set to expire in this many days by default</Form.Text>\n </section>\n )\n}","import { Button, Form } from \"react-bootstrap\";\nimport AccountingAdjustments from \"../components/AccountingAdjustments\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { DateTime } from \"luxon\";\nimport { updateClubTransactionLock } from \"../libs/databaseAccess\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport ClubFeeAdmin from \"../components/ClubFeeAdmin\";\nimport IntroExpirationAdmin from \"../components/IntroExpirationAdmin\";\n\n\nexport default function AccountingAdmin() {\n const {club, setClubLockDate, userIsAdmin, clubTimeZone, clubLockDate} = useAppContext();\n const { sendToast, sendAlert, sendConfirmModal, clearAlerts } = useNotificationContext();\n\n const [selectedLockDate, setSelectedLockDate] = useState(\"1970-01-01T00:00\")\n\n function localeDateString(date) {\n let newDate\n if(typeof date === 'number') {\n newDate = DateTime.fromMillis(date, { zone: clubTimeZone })\n } else {\n newDate = DateTime.fromISO(date, { zone: clubTimeZone })\n }\n return newDate.toLocaleString(DateTime.DATE_FULL) \n }\n\n const setLockDateFromTimestamp = useCallback((date) => {\n let selectedLockDate\n const tmpDate = DateTime.fromMillis(isNaN(parseInt(date)) ? 0 : parseInt(date))\n tmpDate.setZone(clubTimeZone)\n try{\n selectedLockDate = tmpDate.toISODate()\n } catch(e) {\n selectedLockDate = \"1970-01-01\"\n }\n setSelectedLockDate(selectedLockDate)\n }, [clubTimeZone])\n\n useEffect(() => {\n if(isNaN(parseInt(clubLockDate)) || !clubTimeZone) return\n setLockDateFromTimestamp(clubLockDate)\n }, [clubLockDate, setLockDateFromTimestamp, clubTimeZone])\n\n async function updateLockDate() {\n const date = DateTime.fromISO(selectedLockDate, { zone: clubTimeZone })\n\n const response = await updateClubTransactionLock(club, date.toMillis())\n if(response.statusCode !== 200 || (response.body && !response.body.status)) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not lock transactions\",\n autohide: false\n })\n setLockDateFromTimestamp(clubLockDate)\n } else {\n clearAlerts()\n setClubLockDate(response.body.lockDate)\n sendToast({\n status: NotificationStatus.Success,\n message: `Locked transactions on and before ${localeDateString(response.body.lockDate)}`,\n })\n }\n }\n\n async function confirmUpdateLockDate() {\n const newLockDate = DateTime.fromISO(selectedLockDate, { zone: clubTimeZone })\n if(newLockDate.toMillis() <= clubLockDate) {\n sendAlert({\n status: NotificationStatus.Warning,\n message: \"The new lock date must be after the current lock date\",\n })\n return\n }\n sendConfirmModal({\n body: (\n <>\n <p>\n By confirming this request, you acknowledge that modifications to any record on or before <strong>{localeDateString(selectedLockDate)}</strong> will not be possible. \n Managing corrections before the locked date will need to be done through adjustments to user accounts, and requests for database modifications will be billed at $50 per modification.\n </p>\n <p>\n <u><strong className=\"underline\">This action cannot be undone. Do you want to update the transaction lock date?</strong></u>\n </p>\n </>\n ),\n confirm: updateLockDate,\n confirmColor: \"danger\",\n confirmText: \"Update Transaction Lock Date\",\n rejectText: \"Cancel\",\n heading: \"Update Transaction Lock Date?\"\n })\n }\n\n function renderLockDateAdmin() {\n return (\n <section>\n <h4 className = \"text-center\">Transaction Lock Date</h4>\n <Form.Group controlId=\"lockDate\" className=\"d-flex flex-row gap-3\">\n <Form.Control\n autoFocus\n type=\"date\"\n value={selectedLockDate}\n onChange={e => setSelectedLockDate(e.target.value)}\n />\n <Button type=\"submit\" size=\"md\" onClick={confirmUpdateLockDate}>\n Lock Transactions\n </Button>\n </Form.Group>\n <Form.Text className=\" w-100 d-block text-start\">No records on or before this date in the club's time zone can be altered.</Form.Text>\n </section>\n )\n }\n\n return(\n <main className=\"d-flex flex-column gap-4 pt-3\">\n {userIsAdmin && \n <>\n <AccountingAdjustments />\n <hr />\n <ClubFeeAdmin />\n <hr />\n {renderLockDateAdmin()}\n <hr />\n <IntroExpirationAdmin />\n </>\n }\n </main>\n )\n}","import React, { useMemo, useState } from \"react\";\nimport { Form, InputGroup, Tooltip, OverlayTrigger, Button } from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { DateTime } from \"luxon\";\nimport { fuzzify } from \"../libs/utils\";\n\nexport default function IntroSearch({intros, selectIntro, highlightExpired}) {\n const { clubTimeZone } = useAppContext();\n\n const [searchText, setSearchText] = useState(\"\")\n\n const today = useMemo(() => {\n return DateTime.fromObject({}, {zone: clubTimeZone}).toISODate()\n }, [clubTimeZone])\n\n const filterIntro = (filterText, intro) => {\n const fuzzyFilter = fuzzify(filterText);\n if(filterText === \"\") {\n return true\n }\n\n if(fuzzify(intro.SN).includes(fuzzyFilter)) {\n return true\n }\n\n const fuzzyName = fuzzify(`${intro.recipientFirst} ${intro.recipientLast}`);\n if(fuzzyName.includes(fuzzyFilter)) {\n return true\n }\n\n if(fuzzify(intro.buyerEmail).includes(fuzzyFilter)) {\n return true\n }\n return false\n }\n\n function renderStaleTooltip(props, isStale, staleDate) {\n if(!isStale) return(<></>)\n return (\n <Tooltip id=\"intro-tooltip\" {...props}>This intro expired on {staleDate}</Tooltip>\n )\n }\n\n const filteredIntros = useMemo(() => {\n return intros.filter((a) => filterIntro(searchText, a)).slice(0,5)\n }, [intros, searchText])\n\n const expiredIntros = useMemo(() => {\n return intros.filter((a) => a.staleDate <= today).slice(0,5)\n }, [intros, today])\n\n const introButton = (item) => {\n return (\n <OverlayTrigger\n placement=\"top\"\n delay={{ show: 250, hide: 400 }}\n key={item.SK}\n overlay={(props) => renderStaleTooltip(props, item.staleDate <= today, item.staleDate)}\n >\n <Button variant={`${item.staleDate <= today ? \"warning\" : \"outline-secondary\"}`} key={item.SK} onClick = {() => selectIntro(item)}>\n {`${item.SN}, ${item.recipientFirst} ${item.recipientLast}${item.buyerEmail ? ', ' + item.buyerEmail : ''}`}\n </Button>\n </OverlayTrigger>\n )\n }\n\n const renderExpiredHighlight = () => {\n return (\n <>\n <h2 className=\"fs-4\">Expired Intros:</h2>\n {\n expiredIntros.length > 0 ?\n <div className=\"mb-2 d-flex flex-row flex-wrap gap-2 justify-content-center\">\n {expiredIntros.map((item) => introButton(item))}\n </div> :\n <span>None</span>\n }\n </>\n )\n }\n\n return (\n <div className=\"d-flex flex-column gap-2\">\n {highlightExpired && renderExpiredHighlight()}\n <h2 className=\"fs-4\">All Intros:</h2>\n <Form.Group className=\"mb-2\" controlId=\"introSearch\" size=\"lg\">\n <InputGroup>\n <InputGroup.Text id=\"basic-addon1\">Search for intro: </InputGroup.Text>\n <Form.Control\n type=\"text\"\n placeholder=\"Start typing serial number, name, or email\"\n value = {searchText}\n onChange={e => setSearchText(e.target.value)}\n />\n </InputGroup>\n </Form.Group>\n <div className=\"mb-2 d-flex flex-row flex-wrap gap-2 justify-content-center\">\n {filteredIntros.map((item) => introButton(item))}\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useCallback } from \"react\";\nimport { Form, InputGroup, Button } from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { RequestType, apiRequest, loadIntroList, loadPaymentMethods } from \"../libs/databaseAccess\";\nimport \"./Test.css\";\nimport IntroSearch from \"../components/IntroSearch\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\n\nexport default function IntroRefund(){\n const { club, userID, isAuthenticated } = useAppContext();\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n\n const [intros, setIntros] = useState([])\n const [paymentMethods, setPaymentMethods] = useState([])\n const [refundAmount, setRefundAmount] = useState(\"\")\n const [refundMethod, setRefundMethod] = useState(\"\")\n const [refundRef, setRefundRef] = useState(\"\")\n const [refundFirst, setRefundFirst] = useState(\"\")\n const [refundLast, setRefundLast] = useState(\"\")\n const [selectedIntro, setSelectedIntro] = useState(null)\n\n const sendRefund = async () => {\n const price = parseFloat(refundAmount)\n if(Number.isNaN(price) || refundAmount == null || refundAmount === \"\" || price < 0) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Invalid refund amount\"\n })\n return\n }\n\n const body = {\n club,\n by: userID,\n type: \"INTRO\",\n action: \"Refund\",\n data: {\n id: selectedIntro.SK,\n payment: refundMethod,\n refundFirst,\n refundLast,\n refundRef,\n price\n }\n }\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not refund intro\"\n })\n } else {\n await loadIntros()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Intro refunded successfully\"\n })\n clearFields()\n }\n }\n\n const confirmRefund = (e) => {\n e.preventDefault()\n sendConfirmModal({\n heading: \"Refund Intro\",\n body: (\n <>\n <p>\n By submitting this refund request, this flight will not be\n searchable to be redeemed, and the Intro Account Payable\n account will be reduced by the refunded amount.\n </p>\n <p>\n Refund intro <strong>{selectedIntro.SN}</strong> to <strong>{refundFirst} {refundLast}</strong> for <strong>{refundAmount}?</strong>\n </p>\n </>\n ),\n confirmText: \"Refund Intro\",\n confirmColor: \"danger\",\n confirm: sendRefund,\n rejectText: \"Go Back\",\n rejectColor: \"secondary\",\n })\n }\n\n const selectIntro = (intro) => {\n setSelectedIntro(intro)\n setRefundAmount(intro.price)\n setRefundMethod(intro.payment)\n setRefundRef(\"\")\n setRefundFirst(intro.buyerFirst)\n setRefundLast(intro.buyerLast)\n }\n\n const clearFields = () => {\n setSelectedIntro(null)\n setRefundAmount(\"\")\n setRefundMethod(\"\")\n setRefundRef(\"\")\n setRefundFirst(\"\")\n setRefundLast(\"\")\n }\n\n const loadIntros = useCallback(async () => {\n const introList = await loadIntroList(club)\n setIntros(introList)\n }, [club])\n\n const loadPayments = useCallback(async () => {\n const paymentMethods = await loadPaymentMethods(club)\n setPaymentMethods(paymentMethods)\n }, [club])\n\n useEffect(() => {\n if(!club || !isAuthenticated) return\n loadIntros()\n loadPayments()\n }, [club, isAuthenticated, loadIntros, loadPayments])\n\n return (\n <main className=\"d-flex flex-column gap-3 pt-3\">\n <h2>Refund Intro</h2>\n <IntroSearch selectIntro={selectIntro} intros={intros} />\n <hr />\n <Form onSubmit={confirmRefund} className=\"d-flex flex-column gap-3\">\n <InputGroup>\n <InputGroup.Text>Refund Amount:</InputGroup.Text>\n <Form.Control as=\"input\" value={refundAmount} onChange={(e)=>{setRefundAmount(e.target.value)}} disabled={selectedIntro === null} />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Refund Method:</InputGroup.Text>\n <Form.Control \n as=\"select\"\n placeholder=\"select\"\n disabled={selectedIntro === null}\n value={refundMethod}\n onChange={(e)=>{setRefundMethod(e.target.value)}}\n >\n {paymentMethods.map((item)=>\n <option key={item} value={item}>{item}</option>\n )}\n </Form.Control>\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Refund Reference:</InputGroup.Text>\n <Form.Control as=\"input\" value={refundRef} onChange={(e)=>{setRefundRef(e.target.value)}} disabled={selectedIntro === null} />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Refund To:</InputGroup.Text>\n <InputGroup.Text>First Name:</InputGroup.Text>\n <Form.Control as=\"input\" value={refundFirst} onChange={(e)=>{setRefundFirst(e.target.value)}} disabled={selectedIntro === null} />\n <InputGroup.Text>Last Name:</InputGroup.Text>\n <Form.Control as=\"input\" value={refundLast} onChange={(e)=>{setRefundLast(e.target.value)}} disabled={selectedIntro === null} />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Serial Number:</InputGroup.Text>\n <Form.Control as=\"input\" value={selectedIntro?.SN ?? \"\"} disabled />\n </InputGroup>\n <Button className=\"w-100\" variant=\"danger\" type=\"submit\" disabled={selectedIntro === null}>Submit Refund</Button>\n </Form>\n </main>\n );\n}","import React, { useState, useEffect, useCallback } from \"react\";\nimport { Form, InputGroup, Button } from \"react-bootstrap\";\nimport { useAppContext } from \"../libs/contextLib\";\nimport { RequestType, apiRequest, loadIntroList } from \"../libs/databaseAccess\";\nimport \"./Test.css\";\nimport IntroSearch from \"../components/IntroSearch\";\nimport { NotificationStatus, useNotificationContext } from \"../libs/notificationLib\";\n\nexport default function IntroCancel(){\n const { club, userID, isAuthenticated } = useAppContext();\n const { sendAlert, sendToast, sendConfirmModal } = useNotificationContext();\n\n const [intros, setIntros] = useState([])\n const [writtenDown, setWrittenDown] = useState(false)\n const [selectedIntro, setSelectedIntro] = useState(null)\n\n const sendCancel = async () => {\n const body = {\n club,\n by: userID,\n type: \"INTRO\",\n action: \"Cancel\",\n data: {\n id: selectedIntro.SK,\n payment: selectedIntro.payment,\n price: selectedIntro.price,\n writtenDown\n }\n }\n\n const result = await apiRequest(\n RequestType.POST,\n {apiName: \"flightline\", path: \"/update-item/\", options: {body}}\n )\n if(result.statusCode !== 200) {\n sendAlert({\n status: NotificationStatus.Danger,\n message: \"Could not cancel intro\"\n })\n } else {\n await loadIntros()\n sendToast({\n status: NotificationStatus.Success,\n message: \"Intro cancelled successfully\"\n })\n setSelectedIntro(null)\n }\n }\n\n const confirmCancel = (e) => {\n e.preventDefault()\n sendConfirmModal({\n heading: \"Cancel Intro\",\n body: (\n <>\n <p>\n After submitting the request to cancel this intro it will no longer be searchable to be redeemed.\n </p>\n { writtenDown && \n <p>\n This intro <strong>WAS</strong> previously written down so <strong>NO</strong> adjustment will be made to the liability account for intro flights.\n </p>\n }\n { !writtenDown && \n <p>\n This intro was <strong>WAS NOT</strong> previously written down so the liability account for Intro Flights <strong>WILL</strong> be reduced by the amount originally paid.\n </p>\n }\n <p>\n Cancel intro <strong>{selectedIntro.SN}</strong> purchased by <strong>{selectedIntro.buyerFirst} {selectedIntro.buyerLast}</strong> for <strong>{selectedIntro.price}</strong>?\n </p>\n </>\n ),\n confirmText: \"Cancel Intro\",\n confirmColor: \"danger\",\n confirm: sendCancel,\n rejectText: \"Go Back\",\n rejectColor: \"secondary\",\n })\n }\n\n const loadIntros = useCallback(async () => {\n const introList = await loadIntroList(club)\n setIntros(introList)\n }, [club])\n\n useEffect(() => {\n if(!club || !isAuthenticated) return\n loadIntros()\n }, [club, isAuthenticated, loadIntros])\n\n return (\n <main className=\"d-flex flex-column gap-3 pt-3\">\n <h2>Cancel Intro</h2>\n <IntroSearch selectIntro={setSelectedIntro} intros={intros} highlightExpired />\n <hr />\n <Form onSubmit={confirmCancel} className=\"d-flex flex-column gap-3\">\n <InputGroup>\n <InputGroup.Text>Amount Paid:</InputGroup.Text>\n <Form.Control as=\"input\" value={selectedIntro?.price ?? \"\"} disabled />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Payment Method:</InputGroup.Text>\n <Form.Control as=\"input\" value={selectedIntro?.payment ?? \"\"} disabled />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Purchased By:</InputGroup.Text>\n <Form.Control as=\"input\" value={`${selectedIntro?.buyerFirst ?? \"\"} ${selectedIntro?.buyerLast ?? \"\"}`} disabled />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text>Serial Number:</InputGroup.Text>\n <Form.Control as=\"input\" value={selectedIntro?.SN ?? \"\"} disabled />\n </InputGroup>\n <InputGroup>\n <InputGroup.Text className=\"gap-2\">\n <label htmlFor=\"writtenDownCheck\">Previously Written Down?</label>\n <Form.Check\n value={writtenDown}\n onChange={() => setWrittenDown((w) => !w)}\n id=\"writtenDownCheck\"\n />\n </InputGroup.Text>\n </InputGroup>\n <Button variant=\"danger\" type=\"submit\" disabled={selectedIntro === null}>Cancel Intro</Button>\n </Form>\n </main>\n );\n}","import React from \"react\";\nimport { Route, Routes} from \"react-router\";\nimport Home from \"./containers/Home\";\nimport Login from \"./containers/Login\";\nimport Signup from \"./containers/Signup\";\nimport NotFound from \"./containers/NotFound\";\nimport NewPilot from \"./containers/NewPilot\";\nimport Crew from \"./containers/Crew\";\nimport Admin from \"./containers/Admin\";\nimport Ground from \"./containers/Ground\";\nimport Logs from \"./containers/Logs\";\nimport Settings from \"./containers/Settings\";\nimport Accounts from \"./containers/Accounting\";\nimport Intro from \"./containers/Intro\";\nimport ChangePassword from \"./containers/ChangePassword\";\nimport AuthenticatedRoute from \"./components/AuthenticatedRoute\";\nimport UnauthenticatedRoute from \"./components/UnauthenticatedRoute\";\nimport ResetPassword from \"./containers/ResetPassword\";\nimport Emergency from \"./containers/Emergency\";\nimport Profile from \"./containers/Profile\";\nimport Export from \"./containers/Export\";\nimport UserAccount from \"./containers/userAccount\";\nimport Fuel from \"./containers/Fuel\";\nimport Awaiting from \"./containers/Awaiting\";\nimport AccountingAdmin from \"./containers/AccountingAdmin\";\nimport IntroRefund from \"./containers/IntroRefund\";\nimport IntroCancel from \"./containers/IntroCancel\";\n\nexport default function App() {\n return (\n <Routes>\n <Route exact path=\"/\" element={<Home />} />\n <Route exact path=\"/index\" element={<Home />} />\n <Route exact path=\"/index.html\" element={<Home />} />\n <Route element={<UnauthenticatedRoute />}>\n <Route exact path=\"/login/\" element={<Login />} />\n <Route exact path=\"/signup\" element={<Signup />} />\n <Route exact path=\"/login/reset\" element={<ResetPassword />} />\n </Route>\n <Route element={<AuthenticatedRoute />}>\n <Route exact path=\"/settings\" element={<Settings />} />\n <Route exact path=\"/new pilot/\" element={<NewPilot />} />\n <Route exact path=\"/ground/\" element={<Ground />} />\n <Route exact path=\"/logs/\" element={<Logs />} />\n <Route exact path=\"/emergency/\" element={<Emergency />} />\n <Route exact path=\"/fuel/\" element={<Fuel />} />\n <Route exact path=\"/awaiting/\" element={<Awaiting />} />\n <Route exact path=\"/settings/profile\" element={<Profile />} />\n <Route exact path=\"/crew/\" element={<Crew />} />\n <Route exact path=\"/admin/\" element={<Admin />} />\n <Route exact path=\"/export/\" element={<Export />} />\n <Route exact path=\"/intro/\" element={<Intro />} />\n <Route exact path=\"/intro/refund/\" element={<IntroRefund />} />\n <Route exact path=\"/intro/cancel/\" element={<IntroCancel />} />\n <Route exact path=\"/settings/password\" element={<ChangePassword />} />\n <Route exact path=\"/accounts\" element={<Accounts />} />\n <Route exact path=\"/accountingAdmin\" element={<AccountingAdmin />} />\n <Route exact path=\"/userAccount\" element={<UserAccount />} />\n </Route>\n {/* Finally, catch all unmatched routes */}\n <Route element={<NotFound />} />\n </Routes>\n );\n}","import React, { useState, useEffect, useCallback } from \"react\";\nimport { useNavigate, Link } from \"react-router\";\nimport { Nav, Navbar, Container } from \"react-bootstrap\";\nimport { fetchUserAttributes, signOut, getCurrentUser } from \"aws-amplify/auth\";\nimport { AppContext } from \"./libs/contextLib\";\nimport { NotificationProvider } from \"./libs/notificationLib\";\nimport Routes from \"./Routes\";\nimport { checkVersion, getUserData, getClubInfo } from \"./libs/databaseAccess\";\nimport appPackage from '../package.json'\nimport './App.css';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport { DateTime } from \"luxon\";\nconst appVersion = appPackage.version\n\nfunction App() {\n //We initialize isAuthenticated as null so we can know whether the user is logged out, or the variable just hasn't been set yet\n const [isAuthenticated, userHasAuthenticated] = useState(null);\n const [userIsAdmin, setUserIsAdmin] = useState(false);\n const [userIsActive, setUserIsActive] = useState(false);\n const [userCanEditLogs, setUserCanEditLogs] = useState(false);\n const [userCanAddFunds, setUserCanAddFunds] = useState(false);\n const [userCanUpdateGliders, setUserCanUpdateGliders] = useState(false);\n const [userCanAddIntros, setUserCanAddIntros] = useState(false); \n const [clubName, setClubName] = useState(\"\");\n const [club, setClub] = useState(\"\");\n const [clubLink, setClubLink] = useState(\"\");\n const [clubLogo, setClubLogo] = useState(\"\");\n const [clubMessage, setClubMessage] = useState(\"\");\n const [clubUnits, setClubUnits] = useState([]);\n const [clubLockDate, setClubLockDate] = useState(0);\n const [clubDefaultIntroStalePeriod, setClubDefaultIntroStalePeriod] = useState(0);\n const [userID, setUser] = useState(\"\");\n const [appIsCurrent, setAppIsCurrent] = useState(true);\n const [tzoffset, setTzoffset] = useState(0);\n const [clubTimeZone, setClubTimeZone] = useState(0);\n const [clubTaxRates, setClubTaxRates] = useState(0);\n const [clubMembershipYearEnd, setClubMembershipYearEnd] = useState(null)\n const [clubFeeList, setClubFeeList] = useState([]);\n const navigate = useNavigate();\n\n // Initialize on starup\n useEffect(() => {\n async function onLoad() {\n try {\n const { username } = await getCurrentUser();\n if(username) userHasAuthenticated(true);\n }\n catch(e) {\n userHasAuthenticated(false)\n }\n const date = new Date();\n setTzoffset(date.getTimezoneOffset());\n }\n\n onLoad();\n },[]);\n\n async function getUserInfo() { \n let userClub = \"\";\n let userID = \"\";\n let userInfo = {\n userIsAdmin: false,\n userActive: false,\n userCanEditLogs: false,\n userCanAddFunds: false,\n userCanAddIntros: false,\n userCanUpdateGliders: false,\n showAdminPage: false,\n }\n try {\n userInfo = await getCurrentUser()\n const currentUserAttributes = await fetchUserAttributes();\n userClub = currentUserAttributes['custom:club'];\n userID = userInfo.username;\n if(userClub == null) {\n return [\"\", userID, {}]\n }\n const currentUserData = await getUserData(userClub, userID);\n userInfo.userIsAdmin = currentUserData.isAdmin || false;\n userInfo.userActive = currentUserData.isActive || false;\n userInfo.activeExpiration = currentUserData.activeExpiration || null;\n userInfo.userCanEditLogs = currentUserData.canEditLogs || false;\n userInfo.userCanAddFunds = currentUserData.canAddFunds || false;\n userInfo.userCanAddIntros = currentUserData.canAddIntros || false;\n userInfo.userCanUpdateGliders = currentUserData.canUpdateGliders || false;\n } catch (err) {\n console.log('error fetching user info: ', err);\n }\n\n return [userClub, userID, userInfo];\n }\n\n const loadClubInfo = useCallback(async () => {\n const [userClub, userID, userInfo] = await getUserInfo();\n let userClubInfo\n if (userClub !== \"\") {\n userClubInfo = await getClubInfo(userClub);\n setClubLink(userClubInfo.clubLink);\n setClubLogo(userClubInfo.clubLogo)\n setClubMessage(userClubInfo.message);\n setClubLockDate(userClubInfo.transactionLockDate)\n setClubTimeZone(userClubInfo.timeZone)\n setClubDefaultIntroStalePeriod(userClubInfo.introStalePeriod)\n setClubTaxRates(userClubInfo.taxRates)\n setClubMembershipYearEnd(userClubInfo.membershipYearEnd ?? null)\n setClubFeeList(userClubInfo.feeList ?? [])\n const launchUnitsLocal = [];\n if (userClubInfo.units && userClubInfo.units.launch) {\n for(let i=0; i < (userClubInfo.units.launch.length);i++){\n launchUnitsLocal.push(userClubInfo.units.launch[i]);\n }\n }\n setClubUnits(launchUnitsLocal);\n setClubName(userClubInfo.name);\n }\n setUser(userID);\n setUserIsAdmin(userInfo.userIsAdmin);\n setUserCanEditLogs(userInfo.userCanEditLogs);\n setUserCanAddFunds(userInfo.userCanAddFunds);\n setUserCanUpdateGliders(userInfo.userCanUpdateGliders);\n setUserCanAddIntros(userInfo.userCanAddIntros);\n const versionActive = await checkVersion(appVersion);\n setAppIsCurrent(versionActive);\n if(userInfo.activeExpiration != null && userClubInfo != null) {\n const expirationDate = DateTime.fromMillis(userInfo.activeExpiration, {zone: userClubInfo.timeZone}).endOf(\"day\")\n const today = DateTime.fromObject({}, {zone: userClubInfo.timeZone})\n if(today < expirationDate){\n setUserIsActive(userInfo.userActive);\n } else {\n setUserIsActive(false);\n }\n } else {\n setUserIsActive(userInfo.userActive);\n }\n setClub(userClub ? userClub : \"None\"); // Save club unique identifier so it can be used for API calls\n }, [])\n\n useEffect(() => {\n if(!isAuthenticated) return\n\n loadClubInfo()\n },[isAuthenticated, loadClubInfo]);\n\n async function handleLogout() {\n await signOut();\n userHasAuthenticated(false);\n setClubName(\"\");\n navigate(\"../login\");\n }\n\n return (\n true &&\n <div className=\"App container\">\n <Navbar bg=\"light\" variant=\"light\" className=\"border rounded\">\n <Container>\n <Nav>\n {(clubName === \"\") ? \n <Nav.Link as={Link} key = \"landing\" to=\"../\">\n <Navbar.Brand>\n Take Up Slack\n </Navbar.Brand>\n </Nav.Link>\n :\n <Nav.Link as={Link} key = \"home\" to=\"../\">\n <Navbar.Brand>\n Home\n </Navbar.Brand>\n </Nav.Link>}\n </Nav>\n <Navbar.Collapse>\n <Nav className=\"nav navbar-nav navbar-right\">\n {isAuthenticated\n ? <>\n <Nav.Link as={Link} key = \"settings\" to=\"../settings\">\n Settings\n </Nav.Link>\n <Nav.Link key = \"logout\" onClick = {() => handleLogout()}>Logout</Nav.Link>\n </>\n : <>\n <Nav.Link as={Link} key = \"signup\" to=\"../signup\">\n Signup\n </Nav.Link>\n <Nav.Link as={Link} key = \"login\" to=\"../login\">\n Login\n </Nav.Link>\n </>\n }\n </Nav>\n </Navbar.Collapse>\n </Container>\n </Navbar>\n { (appIsCurrent || !isAuthenticated) ?\n <>\n <AppContext.Provider value={{ isAuthenticated, userHasAuthenticated, club, clubLink, clubLogo, clubUnits, \n clubMessage, setClub, clubName, userID, userIsAdmin, userIsActive, userCanEditLogs, \n userCanAddFunds, userCanAddIntros, userCanUpdateGliders, tzoffset, clubLockDate, setClubLockDate,\n clubTimeZone, clubDefaultIntroStalePeriod, setClubDefaultIntroStalePeriod, clubTaxRates,\n clubFeeList, setClubFeeList, loadClubInfo, clubMembershipYearEnd}}>\n <NotificationProvider>\n <Routes />\n </NotificationProvider>\n </AppContext.Provider>\n <footer className=\"mt-5\">TakeUpSlack Version {appVersion}</footer>\n </>\n : \n <div className=\"version check\">\n <h1>Time for an Update</h1>\n <p>We have improved the TakeUpSlack application. The version you are using is no longer supported.</p>\n <hr></hr>\n <p>Navigate to <a href=\"https://takeupslack.com/\" target=\"_blank\" rel=\"noopener noreferrer\">takeupslack.com</a> in your browser for the new version</p>\n <p>You may have to force a browser refresh to load the new page, as follows:\n <li key=\"windows\">Windows: {\"<\"}CTRL{\">\"} and click the reload button</li> \n <li key=\"mac\">Mac: {\"<\"}SHIFT{\">\"} and click the reload button</li>\n <li key=\"phone\">iPhone or Android - Drag down on page to reload</li>\n </p>\n <hr></hr>\n <p>You can run the new version in a browser at the link above, or \"Add to Home Screen\" on your Apple or Android device to download and run it as a local application</p>\n </div>\n }\n </div>\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","const AWSConfig = {\n apiGateway: {\n REGION: \"us-east-1\",\n URL: \"https://y4u7d0alh7.execute-api.us-east-1.amazonaws.com/prod\"\n },\n cognito: {\n REGION: \"us-east-1\",\n USER_POOL_ID: \"us-east-1_LrIQ4PQuE\",\n APP_CLIENT_ID: \"4eid8neiieegp9pfsejud3etb7\",\n IDENTITY_POOL_ID: \"us-east-1:77ec924d-aa56-413e-9f84-97039c8a2d84\"\n }\n};\n\nexport default AWSConfig;","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { BrowserRouter as Router } from 'react-router';\nimport { Amplify } from 'aws-amplify';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport config from './config';\n\nconst currentConfig = Amplify.getConfig();\n\nAmplify.configure({\n ...currentConfig,\n Auth: {\n Cognito: {\n userPoolId: config.cognito.USER_POOL_ID,\n userPoolClientId: config.cognito.APP_CLIENT_ID,\n identityPoolId: config.cognito.IDENTITY_POOL_ID\n }\n },\n // Old v4 Config\n // Storage: {\n // region: config.s3.REGION,\n // bucket: config.s3.BUCKET,\n // identityPoolId: config.cognito.IDENTITY_POOL_ID\n // },\n API: {\n REST: {\n flightline: {\n endpoint: config.apiGateway.URL,\n region: config.apiGateway.REGION\n },\n }\n }\n});\n\n\nconst container = document.getElementById('root');\nconst root = createRoot(container); // createRoot(container!) if you use TypeScript\nroot.render(\n <React.StrictMode>\n <Router>\n <App />\n </Router>\n </React.StrictMode>\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","__toString","Object","prototype","toString","NullObject","C","create","startIndex","str","index","max","code","charCodeAt","endIndex","min","decode","indexOf","decodeURIComponent","e","module","exports","condition","format","a","b","c","d","f","error","undefined","Error","args","argIndex","replace","name","framesToPop","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","length","call","arrayAggregator","array","setter","iteratee","accumulator","value","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","key","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","slice","trimmedEndIndex","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","placeholder","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","charAt","unescapeHtmlChar","_","runInContext","context","defaults","pick","Date","Math","String","TypeError","arrayProto","funcProto","objectProto","coreJsData","funcToString","hasOwnProperty","idCounter","maskSrcKey","uid","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","defineProperty","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","this","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","push","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","get","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","arguments","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","type","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","target","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","obj","_createClass","defineProperties","i","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react","_react2","__esModule","default","_core","_metaProps","CSVDownload","_React$Component","instance","_classCallCheck","_this","ReferenceError","_possibleConstructorReturn","__proto__","state","subClass","superClass","setPrototypeOf","_inherits","buildURI","_props","headers","enclosingCharacter","uFEFF","specs","page","window","open","Component","defaultProps","propTypes","_extends","CSVLink","event","isAsync","navigator","msSaveOrOpenBlob","preventDefault","filename","csvData","blob","Blob","toCSV","msSaveBlob","_this2","onClick","proceed","handleLegacy","_this3","asyncOnClick","handleAsyncClick","handleSyncClick","_this4","_props2","children","_objectWithoutProperties","href","createElement","download","ref","link","handleClick","_typeof","_toConsumableArray","arr","arr2","from","isSafari","userAgent","isJsons","row","isArrays","jsonsHeaders","json","jsons2arrays","jsons","headerLabels","headerKeys","header","label","getHeaderValue","foundValue","o","p","elementOrEmpty","joiner","column","arrays2csv","jsons2csv","string2csv","csv","dataURI","URL","webkitURL","createObjectURL","_Download2","_interopRequireDefault","_Link2","PropsNotForwarded","_propTypes","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","document","ja","ka","la","ma","v","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","A","Ma","Na","Oa","prepareStackTrace","Reflect","construct","l","h","k","displayName","Pa","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","tb","menuitem","area","base","br","col","embed","hr","img","keygen","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","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","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","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","fromCharCode","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","tel","text","url","week","me","ne","oe","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","D","of","pf","qf","rf","sf","capture","passive","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","console","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","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","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","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","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","_status","_result","Children","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","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","src_exports","__export","DEFAULT_UUID_LENGTH","ShortUniqueId","DEFAULT_OPTIONS","dictionary","debug","_ShortUniqueId","argOptions","super","dictIndex","dictRange","lowerBound","upperBound","dictLength","_digit_first_ascii","_digit_last_ascii","_alpha_lower_first_ascii","_alpha_lower_last_ascii","_hex_last_ascii","_alpha_upper_first_ascii","_alpha_upper_last_ascii","_number_dict_ranges","digits","_alpha_dict_ranges","_alpha_lower_dict_ranges","_alpha_upper_dict_ranges","_alphanum_dict_ranges","_alphanum_lower_dict_ranges","_alphanum_upper_dict_ranges","_hex_dict_ranges","decDigits","alphaDigits","_len","_key","finalArgs","setDictionary","finalDict","ranges","rangeType","rangeTypeKey","PROBABILITY","dict","counter","seq","sequentialUUID","counterDiv","counterRem","trunc","randomUUID","randomPartIdx","j","uuidLength","toFixed","availableUUIDs","pow","approxMaxBeforeCollision","rounds","sqrt","PI","collisionProbability","uniqueness","score","getVersion","finalLength","hexStamp","idLength","rndIdx","substr","parseStamp","__spreadValues","Proxy","that","warning","hasOwn","classNames","classes","appendClass","parseValue","newClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","definition","globalThis","nmd","toPropertyKey","toPrimitive","Number","_defineProperty","ownKeys","_objectSpread2","getOwnPropertyDescriptors","s","PopStateEventType","createBrowserHistory","getUrlBasedHistory","window2","globalHistory","pathname","hash","createLocation","usr","to","createPath","invariant","warn","getHistoryState","idx","_objectSpread","parsePath","_ref","parsedPath","hashIndex","searchIndex","getLocation","createHref2","validateLocation","v5Compat","history","getIndex","handlePop","nextIndex","delta","createURL","origin","replaceState","listen","createHref","encodeLocation","historyState","pushState","DOMException","go","matchRoutes","routes","locationArg","matchRoutesImpl","basename","allowPartial","stripBasename","branches","flattenRoutes","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","isOptional","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","params","pathnameBase","normalizePathname","matcher","compiledParams","regexpSource","paramName","compilePath","captureGroups","memo2","_ref2","splatValue","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","getResolveToMatches","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","isRouteErrorResponse","status","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","React","DataRouterStateContext","ViewTransitionContext","isTransitioning","FetchersContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","React2","useLocation","navigateEffectWarning","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","useCurrentRouteId","activeRef","navigate","async","fromRouteId","useNavigateStable","dataRouterContext","navigator2","routePathnamesJson","parse","relative","useNavigateUnstable","OutletContext","useResolvedPath","useRoutesImpl","dataRouterState","future","parentMatches","routeMatch","parentParams","parentPathname","parentPathnameBase","parentRoute","warningOnce","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","useRouteError","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","fontStyle","defaultErrorElement","RenderErrorBoundary","revalidation","errorInfo","routeContext","component","RenderedRoute","_ref9","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","errors","initialized","errorIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","errors2","needsToRunLoader","loader","shouldRenderHydrateFallback","matches2","getChildren","getDataRouterConsoleError","hookName","ctx","useDataRouterState","useRouteContext","thisRoute","_state$errors","routeId","alreadyWarned","React3","_ref12","Outlet","useOutlet","Route","Router","_ref15","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref16","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","handle","defaultMethod","defaultEncType","isHtmlElement","_formDataSupportsSubmitter","supportedFormEncTypes","getFormEncType","encType","getFormSubmissionInfo","formData","attr","getAttribute","FormData","isButtonElement","isInputElement","isFormDataSubmitterSupported","append","invariant2","loadRouteModule","routeModulesCache","routeModule","import","__reactRouterContext","isSpaMode","reload","isPageLinkDescriptor","isHtmlLinkDescriptor","rel","imageSrcSet","imageSizes","getNewMatchesForLinks","nextMatches","currentMatches","manifest","matchPathChanged","_currentMatches$index","manifestRoute","hasLoader","_currentMatches$","routeChoice","currentUrl","currentParams","nextUrl","nextParams","defaultShouldRevalidate","dedupeHrefs","hrefs","dedupeLinkDescriptors","descriptors","preloads","preloadsSet","deduped","as","sorted","sortKeys","createHtml","html","singleFetchUrl","reqUrl","React5","RemixRootDefaultErrorBoundary","_ref21","isOutsideRemixApp","errorInstance","heyDeveloper","BoundaryShell","title","fontSize","errorString","background","_ref22","_routeModules$root","renderScripts","routeModules","useFrameworkContext","Layout","lang","charSet","content","fontFamily","Scripts","isFogOfWarEnabled","useDataRouterContext2","React9","useDataRouterStateContext","FrameworkContext","composeEventHandlers","theirHandler","ourHandler","getActiveMatches","isHydrated","errorIdx","PrefetchPageLinks","_ref29","dataLinkProps","_excluded","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","links","all","mod","flat","getKeyedPrefetchLinks","_ref30","linkProps","_excluded2","newMatchesForData","newMatchesForAssets","dataHrefs","routesParams","foundOptOutRoute","_routeModules$m$route2","m2","hasClientLoader","searchParams","moduleHrefs","manifestPatch","getModuleLinkHrefs","_ref31","serverHandoffString","renderMeta","isStatic","routerMatches","enableFogOfWar","didRenderScripts","initialScripts","_manifest$hmr","contextScript","routeModulesScript","hmr","runtime","routeIds","Boolean","initialRoutes","acc","getPartialManifest","routePreloads","crossOrigin","mergeRefs","_len3","_key3","isBrowser","__reactRouterVersion","BrowserRouter","_ref32","historyRef","React10","setStateImpl","newState","ABSOLUTE_URL_REGEX2","Link","_ref35","forwardedRef","absoluteHref","discover","prefetch","reloadDocument","replace2","preventScrollReset","viewTransition","_excluded4","isAbsolute","isExternal","targetUrl","protocol","joinedPathname","useHref","shouldPrefetch","prefetchRef","prefetchHandlers","theirElementProps","frameworkContext","maybePrefetch","setMaybePrefetch","setShouldPrefetch","onFocus","onBlur","onMouseEnter","onMouseLeave","onTouchStart","observer","IntersectionObserver","isIntersecting","threshold","observe","disconnect","setIntent","cancelIntent","usePrefetchBehavior","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","NavLink","_ref36","ariaCurrentProp","className","classNameProp","styleProp","_excluded5","routerState","opts","vtContext","useDataRouterContext3","currentPath","currentLocation","nextPath","nextLocation","useViewTransitionState","nextLocationPathname","navigation","endSlashPosition","isActive","isPending","renderProps","ariaCurrent","Form","_ref37","fetcherKey","onSubmit","_excluded6","submit","useSubmit","formAction","URLSearchParams","indexValues","getAll","qs","useFormAction","formMethod","submitter","submitMethod","getDataRouterConsoleError2","fetcherId","getUniqueFetcherId","currentRouteId","fetch","formEncType","TextEncoder","LogType","LOG_LEVELS","VERBOSE","DEBUG","INFO","WARN","ERROR","NONE","ConsoleLogger","level","_pluggables","_padding","_ts","dt","getMinutes","getSeconds","getMilliseconds","configure","config","_config","_log","loggerLevelName","LOG_LEVEL","BIND_ALL_LOG_LEVELS","info","msg","plugin","logEvent","timestamp","pushLogs","_len2","_key2","_len4","_key4","_len5","_key5","_len6","_key6","verbose","_len7","_key7","addPluggable","pluggable","getCategoryName","listPluggables","AmplifyError","recoverySuggestion","underlyingError","AMPLIFY_SYMBOL","logger","HubClass","protectedChannels","_remove","channel","holder","ampSymbol","capsule","patternInfo","_toListeners","listenerName","Hub","HubInternal","deepFreeze","propNames","freeze","ADD_OAUTH_LISTENER","authTypeMapping","API_KEY","AWS_IAM","AMAZON_COGNITO_USER_POOLS","OPENID_CONNECT","AWS_LAMBDA","LAMBDA","getRedirectUrl","redirectStr","_redirectStr$split","getOAuthConfig","domain","scope","redirectSignIn","redirectSignOut","responseType","scopes","parseSocialProviders","aws_cognito_social_providers","provider","updatedProvider","parseAmplifyOutputs","amplifyOutputs","resourcesConfig","storage","Storage","amplifyOutputsStorageProperties","bucket_name","aws_region","buckets","S3","bucket","region","createBucketInfoMap","parseStorage","auth","Auth","amplifyOutputsAuthProperties","user_pool_id","user_pool_client_id","identity_pool_id","password_policy","mfa_configuration","mfa_methods","unauthenticated_identities_enabled","oauth","username_attributes","standard_required_attributes","groups","authConfig","Cognito","userPoolId","userPoolClientId","_password_policy$min_","identityPoolId","passwordFormat","requireLowercase","require_lowercase","requireNumbers","require_numbers","requireUppercase","require_uppercase","requireSpecialCharacters","require_symbols","minLength","min_length","mfa","getMfaStatus","smsEnabled","totpEnabled","allowGuestAccess","loginWith","redirect_sign_in_uri","redirect_sign_out_uri","response_type","providers","getOAuthProviders","identity_providers","phone","username","userAttributes","curr","parseAuth","analytics","Analytics","amplifyOutputsAnalyticsProperties","amazon_pinpoint","Pinpoint","appId","app_id","parseAnalytics","geo","Geo","geofence_collections","maps","search_indices","LocationService","searchIndices","geofenceCollections","parseGeo","API","amplifyOutputsDataProperties","default_authorization_type","api_key","model_introspection","GraphQL","endpoint","defaultAuthMode","getGraphQLAuthMode","apiKey","modelIntrospection","parseData","custom","customConfig","amplifyOutputsCustomProperties","events","parseCustom","notifications","Notifications","amplifyOutputsNotificationsProperties","channels","amazon_pinpoint_app_id","hasInAppMessaging","hasPushNotification","notificationsConfig","InAppMessaging","PushNotification","parseNotifications","authModeNames","authType","providerNames","GOOGLE","LOGIN_WITH_AMAZON","FACEBOOK","SIGN_IN_WITH_APPLE","oAuthProviders","mfaConfiguration","mappedBuckets","bucketName","sanitizedPaths","parseAmplifyConfig","amplifyConfig","_aws_cognito_mfa_type","_aws_cognito_mfa_type2","_aws_cognito_password","_aws_cognito_password2","_aws_cognito_password3","_aws_cognito_password4","_aws_cognito_password5","_aws_cognito_password6","_aws_cognito_password7","_aws_cognito_password8","_aws_cognito_username","_aws_cognito_username2","aws_appsync_apiKey","aws_appsync_authenticationType","aws_appsync_graphqlEndpoint","aws_appsync_region","aws_bots_config","aws_cognito_identity_pool_id","aws_cognito_sign_up_verification_method","aws_cognito_mfa_configuration","aws_cognito_mfa_types","aws_cognito_password_protection_settings","aws_cognito_verification_mechanisms","aws_cognito_signup_attributes","aws_cognito_username_attributes","aws_mandatory_sign_in","aws_mobile_analytics_app_id","aws_mobile_analytics_app_region","aws_user_files_s3_bucket","aws_user_files_s3_bucket_region","aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing","aws_user_pools_id","aws_user_pools_web_client_id","predictions","aws_cloud_logic_custom","Push","AWSPinpoint","Interactions","LexV1","fromEntries","bot","mfaConfig","passwordFormatConfig","passwordPolicyMinLength","passwordPolicyCharacters","attributes","loginWithEmailEnabled","loginWithPhoneEnabled","signUpVerificationMethod","hasOAuthConfig","hasSocialProviderConfig","dangerouslyConnectToHttpEndpointForTesting","amazon_location_service","REST","api","service","_predictions$convert$","_predictions$convert","VoiceId","voiceId","speechGenerator","Predictions","parseAWSExports","isAmplifyOutputs","__awaiter","_arguments","generator","fulfilled","rejected","__generator","sent","trys","ops","Iterator","verb","op","SuppressedError","BLOCK_SIZE","KEY","Uint32Array","INIT","MAX_HASHABLE_LENGTH","RawSha256","Int32Array","bufferLength","bytesHashed","finished","hashBuffer","bitsHashed","bufferView","undecoratedLength","setUint8","setUint32","out","state0","state1","state2","state3","state4","state5","state6","state7","t1_1","t2_1","t1","t2","fromUtf8","encode","convertToBuffer","isView","BYTES_PER_ELEMENT","Sha256","reset","toHash","isEmptyData","digestSync","inner","bufferHash","bufferFromSecret","SHORT_TO_HEX","HEX_TO_SHORT","encodedByte","AuthClass","authResourcesConfig","authOptions","fetchAuthSession","_credentialsAndIdenti","_credentialsAndIdenti2","credentialsAndIdentityId","userSub","tokens","getTokens","_tokens$accessToken","_this$authOptions","_this$authOptions2","accessToken","sub","credentialsProvider","getCredentialsAndIdentityId","authenticated","forceRefresh","credentials","identityId","clearCredentials","_this$authOptions3","clearCredentialsAndIdentityId","_await$this$authOptio","_this$authOptions4","tokenProvider","Amplify","oAuthListener","libraryOptions","resolvedResourceConfig","notifyOAuthListener","getConfig","_this$resourcesConfig","_this$resourcesConfig2","_this$resourcesConfig3","_this$resourcesConfig4","AmplifyErrorCode","init","converter","defaultAttributes","expires","toUTCString","stringifiedAttributes","cookie","write","cookies","jar","parts","found","read","withAttributes","withConverter","CookieStorage","sameSite","secure","setItem","JsCookie","getItem","item","removeItem","promises","PlatformNotSupportedError","PlatformNotSupported","KeyValueStorage","InMemoryStorage","_this$storage$get","getSessionStorageWithFallback","sessionStorage","SyncKeyValueStorage","_storage","defaultStorage","getLocalStorageWithFallback","localStorage","syncSessionStorage","getCrypto","crypto","base64Decoder","inputStr","urlSafe","getAtob","atob","createAssertionFunction","errorMap","AssertionError","assertion","additionalContext","AuthConfigurationErrorCode","assert","AuthTokenConfigException","AuthUserPoolAndIdentityPoolException","AuthUserPoolException","InvalidIdentityPoolIdException","OAuthNotConfigureException","assertTokenProviderConfig","cognitoConfig","assertionValid","assertOAuthConfig","_cognitoConfig$loginW","_cognitoConfig$loginW2","_cognitoConfig$loginW3","_cognitoConfig$loginW4","validOAuthConfig","assertIdentityPoolIdConfig","validConfig","decodeJWT","token","tokenParts","base64","jsonStr","AuthError","getRegionFromUserPoolId","getRegionFromIdentityPoolId","USER_UNAUTHENTICATED_EXCEPTION","AUTO_SIGN_IN_EXCEPTION","invalidRedirectException","invalidPreferredRedirectUrlException","invalidOriginException","assertAuthTokens","oAuthTokenRefreshException","tokenRefreshException","assertAuthTokensWithRefreshToken","isAuthenticated","refreshToken","isAuthenticatedWithImplicitOauthFlow","isAuthenticatedWithRefreshToken","assertDeviceMetadata","deviceMetadata","deviceKey","deviceGroupKey","randomPassword","OAuthStorageKeys","inflightOAuth","oauthSignIn","oauthPKCE","oauthState","idToken","composeServiceApi","transferHandler","serializer","deserializer","defaultConfig","resolvedConfig","endpointResolver","request","response","createUserPoolSerializer","operation","getSharedHeaders","buildHttpRpcRequest","parseMetadata","_headers$xAmznReque","statusCode","isMetadataBearer","$metadata","httpStatusCode","requestId","extendedRequestId","cfId","parseJsonError","_response$headers$xA","_ref3","_body$message","parseJsonBody","rawValue","cleanValue","sanitizeErrorCode","__type","Message","output","assertServiceError","Unknown","createUserPoolDeserializer","composeTransferHandler","coreHandler","middleware","composedHandler","composeHandlerRequest","resolvedMiddleware","DEFAULT_RETRY_ATTEMPTS","retryMiddlewareFactory","maxAttempts","retryDecider","computeDelay","abortSignal","_context$attemptsCoun","attemptsCount","handleTerminalErrorOrResponse","addOrIncrementMetadataAttempts","aborted","_context$attemptsCoun2","_context$attemptsCoun3","isCredentialsExpiredError","retryable","isCredentialsExpired","cancellableSleep","timeoutMs","timeoutId","sleepPromiseResolveFn","sleepPromise","cancelSleep","nextHandlerOutput","attempts","_nextHandlerOutput$$m","userAgentMiddlewareFactory","userAgentHeader","userAgentValue","headerName","withMemoization","payloadAccessor","cached","shouldSendBody","fetchTransferHandler","_resp$headers","_resp$body","resp","withCrossDomainCredentials","signal","NetworkError","responseHeaders","httpResponse","bodyWithMixin","unauthenticatedHandler","cognitoUserPoolTransferHandler","disableCacheMiddlewareFactory","CLOCK_SKEW_ERROR_CODES","getRetryDecider","errorParser","parsedError","errorCode","isConnectionError","isThrottlingError","isClockSkewError","isServerSideError","THROTTLING_ERROR_CODES","TIMEOUT_ERROR_CODES","DEFAULT_MAX_DELAY_MS","jitteredBackoff","delayFunction","maxDelayMs","jitteredBackoff$1","Framework","Category","AiAction","AnalyticsAction","ApiAction","AuthAction","DataStoreAction","GeoAction","InAppMessagingAction","InteractionsAction","PredictionsAction","PubSubAction","PushNotificationAction","StorageAction","globalExists","windowExists","documentExists","processExists","keyPrefixMatch","detectionMap","platform","Expo","detectionMethod","expo","ReactNative","product","NextJs","Nuxt","__NUXT__","$nuxt","Angular","angularVersionSetInDocument","querySelector","angularContentSetInWindow","elementKeyPrefixedWithReact","VueJs","Svelte","WebUnknown","NextJsSSR","NuxtSSR","__NUXT_PATHS__","ReactSSR","VueJsSSR","AngularSSR","_process$env$npm_life","npm_lifecycle_script","SvelteSSR","frameworkCache","frameworkChangeObservers","resetTriggered","detectFramework","_detectionMap$find","detectionEntry","ServerSideUnknown","detect","_frameworkChangeObser","fcn","resetTimeout","observeFrameworkChanges","framework","customUserAgentState","BASE_USER_AGENT","sanitizeAmplifyVersion","amplifyVersion","isReactNative","getAmplifyUserAgentObject","category","customState","getCustomUserAgent","_customUserAgentState2","additionalDetails","getAmplifyUserAgent","customUserAgentDetails","userAgentString","agentKey","agentValue","COGNITO_IDP_SERVICE_NAME","DEFAULT_SERVICE_CLIENT_API_CONFIG","createInitiateAuthClient","AmplifyUrl","AmplifyUrlSearchParams","defaultPartition","outputs","dnsSuffix","regionRegex","regions","partitionsInfo","partitions","getDnsSuffix","regex","createCognitoUserPoolEndpointResolver","endpointOverride","cognitoUserPoolEndpointResolver","getUserContextData","amazonCognitoAdvancedSecurityData","AmazonCognitoAdvancedSecurityData","advancedSecurityData","EncodedData","refreshAuthTokensFunction","_tokens$deviceMetadat","_AuthenticationResult","userPoolEndpoint","refreshTokenString","AuthParameters","REFRESH_TOKEN","DEVICE_KEY","UserContextData","initiateAuth","AuthenticationResult","ClientId","AuthFlow","AccessToken","IdToken","iat","clockDrift","getTime","refreshAuthTokens","asyncFunction","inflightPromise","finally","deDupeAsyncFunction","AuthTokenStorageKeys","oidcProvider","randomPasswordKey","signInDetails","oauthMetadata","TokenProviderErrorCode","InvalidAuthTokens","DefaultTokenStore","getKeyValueStorage","keyValueStorage","setKeyValueStorage","setAuthConfig","loadTokens","_await$this$getKeyVal","_await$this$getKeyVal2","_await$this$getDevice","authKeys","getAuthKeys","accessTokenString","itString","clockDriftString","getDeviceMetadata","getLastAuthUser","storeTokens","clearTokens","lastAuthUser","getLastAuthUserKey","clearDeviceMetadata","_this$authConfig","createKeysForAuthStorage","_this$authConfig2","identifier","_await$this$getKeyVal3","setOAuthMetadata","metadata","oauthMetadataKey","getOAuthMetadata","getAuthStorageKeys","authKey","isTokenExpired","expiresAt","tolerance","V5_HOSTED_UI_KEY","DefaultOAuthStore","clearOAuthInflightData","clearOAuthData","loadOAuthState","storeOAuthState","loadPKCE","storePKCE","pkce","authConfigParam","loadOAuthInFlight","storeOAuthInFlight","inflight","loadOAuthSignIn","_await$this$keyValueS","_await$this$keyValueS2","isLegacyHostedUISignIn","isOAuthSignIn","preferPrivateSession","storeOAuthSignIn","oAuthStore","inflightPromises","TokenOrchestrator","waitForInflightOAuth","_reject","setTokenRefresher","tokenRefresher","setAuthTokenStore","tokenStore","getTokenStore","getTokenRefresher","_tokens","_tokens$idToken$paylo","_tokens$idToken","_tokens$clockDrift","_tokens$accessToken$p","_tokens$clockDrift2","_tokens2","_tokens3","_tokens4","_err","idTokenExpired","exp","accessTokenExpired","refreshTokens","newTokens","setTokens","handleErrors","cognitoUserPoolsTokenProvider","authTokenStore","tokenOrchestrator","IdentityIdStorageKeys","cognitoIdentityTransferHandler","deserializeCredentials","AccessKeyId","SecretKey","SessionToken","Expiration","getCredentialsForIdentity","getCredentialsForIdentitySerializer","IdentityId","Credentials","getId","getIdSerializer","formLoginsMap","issuer","iss","res","generateIdentityId","logins","idResult","IdentityPoolId","Logins","CREDENTIALS_TTL","cognitoCredentialsProvider","identityIdStore","_nextCredentialsRefresh","_identityIdStore","_credentialsAndIdentityId","clearIdentityId","getCredentialsOptions","_unused","tokenHasChanged","hasTokenChanged","loadIdentityId","generatedIdentityId","storeIdentityId","cognitoIdentityIdProvider","assertIdTokenInAuthTokens","credsForOIDCTokens","getGuestCredentials","isPastTTL","isAuthenticatedCreds","clientResult","accessKeyId","secretAccessKey","sessionToken","expiration","identityIdRes","authTokens","_authTokens$idToken","associatedIdToken","_this$_credentialsAnd","_authKeys","_hasGuestIdentityId","_primaryIdentityId","storedIdentityId","DefaultAmplify","resourceConfig","ssr","makeEventKey","eventKey","defaultKey","_toPropertyKey","hint","prim","_toPrimitive","useUncontrolledProp","propValue","handler","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","propsValue","_objectWithoutPropertiesLoose","handlerName","_useUncontrolledProp","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","DEFAULT_BREAKPOINTS","DEFAULT_MIN_BREAKPOINT","ThemeContext","prefixes","breakpoints","minBreakpoint","useBootstrapPrefix","defaultPrefix","useBootstrapBreakpoints","useBootstrapMinBreakpoint","useIsRTL","NavbarBrand","bsPrefix","_jsx","getComputedStyle","psuedoElement","doc","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","css","getPropertyValue","isTransform","removeProperty","cssText","_setPrototypeOf","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","timeout","mounting","nodeRef","ReactDOM","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","setNextCallback","active","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","isEscKey","getChildRef","major","minor","patch","getReactVersion","optionsSupported","onceSupported","canUseDOM","eventName","wrappedHandler","__once","onceHandler","emulateTransitionEnd","duration","called","createEvent","initEvent","triggerEvent","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","triggerBrowserReflow","offsetHeight","toFnRef","refA","refB","safeFindDOMNode","componentOrElement","TransitionWrapper","childRef","mergedRef","useMergedRefs","attachRef","normalize","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","handleExited","handleAddEndListener","innerProps","MARGINS","getDefaultDimensionValue","dimension","elem","margins","collapseStyles","Collapse","inProp","getDimensionValue","computedDimension","createChainedFunction","scroll","role","NavbarCollapse","NavbarContext","expanded","useEventCallback","useCommittedRef","NavbarToggle","onToggle","matchersByWindow","getMatcher","query","targetWindow","matchers","mql","matchMedia","refCount","media","useMediaQuery","setMatches","handleChange","addListener","removeListener","useBreakpoint","breakpointValues","names","and","getMaxQuery","breakpoint","getNext","breakpointOrMap","direction","breakpointMap","getMinQuery","createBreakpointHook","xs","sm","xl","xxl","useMounted","mounted","useWillUnmount","onUnmount","valueRef","useUpdatedRef","usePrevious","dataAttr","OPEN_DATA_ATTRIBUTE","handleContainerOverflow","isRTL","modals","getScrollbarWidth","abs","innerWidth","clientWidth","getBodyScrollbarWidth","getElement","setModalAttributes","_modal","removeModalAttributes","setContainerStyle","containerState","paddingProp","container","scrollBarWidth","removeContainerStyle","modal","modalIdx","isTopModal","Context","useWindow","resolveContainerRef","getBoundingClientRect","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","hasEnteredRef","combinedRef","RTGTransition","transitionProps","useRTGTransitionProps","ImperativeTransition","exited","setExited","onTransition","isInitialRef","handleTransition","useIsomorphicEffect","stale","isStale","onFinish","renderTransition","runTransition","NoopTransition","manager","useModalManager","provided","modalManager","ModalManager","getManager","dialog","backdrop","setDialogRef","setBackdropRef","Modal","show","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","runBackdropTransition","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","providedManager","containerRef","onShow","onHide","prevShow","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","_modal$dialog$ownerDo","_modal$dialog","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","tabIndex","backdropElement","_Fragment","_jsxs","Manager","fadeStyles","Fade","transitionClasses","isAppearing","OffcanvasBody","transitionStyles","OffcanvasToggling","variant","CloseButton","ariaLabel","AbstractModalHeader","closeLabel","closeVariant","closeButton","ModalContext","OffcanvasHeader","DivStyledAsH5","divWithClassName","OffcanvasTitle","hasClass","classList","baseVal","qsa","selector","replaceClassName","origClass","classToRemove","Selector","BootstrapModalManager","adjustAndStore","adjust","actual","restore","marginProp","sharedManager","getSharedManager","DialogTransition","BackdropTransition","Offcanvas","ariaLabelledby","placement","responsive","backdropClassName","propsManager","renderStaticNode","showOffcanvas","setShowOffcanvas","hideResponsiveOffcanvas","modalContext","backdropProps","BaseModal","visibility","Body","Header","Title","NavbarOffcanvas","NavbarText","Navbar","_useUncontrolled","initialBsPrefix","expand","fixed","sticky","onSelect","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","SelectableContext","Brand","Text","Toggle","Container","fluid","suffix","useForceUpdate","revision","NavContext","useButtonProps","isTrivialHref","onKeyDown","Button","asProp","buttonProps","useNavItem","parentOnSelect","navContext","tabContext","TabContext","contextControllerId","getControllerId","contextControlledId","getControlledId","activeKey","NavItem","EVENT_KEY_ATTR","Nav","needsRefocusRef","listNode","getNextActiveTab","currentListNode","items","activeChild","handleSelect","nextActiveChild","Item","useCallbackRef","Anchor","handleKeyDown","navItemProps","uncontrolledProps","justify","navbar","navbarScroll","navbarBsPrefix","cardHeaderBsPrefix","isNavbar","cardHeaderContext","CardHeaderContext","BaseNav","getCurrentUser","_amplify$getConfig$Au","amplify","authUser","userId","getSignInDetailsFromTokens","getCurrentUser$1","toAttributeType","Name","Value","getAuthUserAgentValue","fetchUserAttributes","getUser","createGetUserClient","UserAttributes","FetchUserAttributes","attribute","toAuthUserAttribute","fetchUserAttributes$1","completeOAuthSignOut","store","isSameOriginAndPathName","redirect","isTheSameDomain","hostname","isHttp","isHttps","oAuthSignOutRedirect","redirectUrl","signoutUri","redirects","preferredRedirectUrl","_redirects$find","_redirects$find2","redirectUrlFromTheSameOrigin","redirectUrlFromDifferentOrigin","oAuthLogoutEndpoint","client_id","logout_uri","_window","openAuthSession","signOut","_Amplify$getConfig$Au","globalSignOutClient","createGlobalSignOutClient","SignOut","globalSignOut","isSessionRevocable","revokeToken","createRevokeTokenClient","Token","clientSignOut","_await$handleOAuthSig","_input$oauth","handleOAuthSignOut","_token$payload","origin_jti","AppContext","useAppContext","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","useTimeout","ToastFade","onClose","ToastHeader","ToastContext","ToastBody","Toast","autohide","delayRef","onCloseRef","autohideTimeout","autohideToast","autohideFunc","toastContext","hasAnimation","toast","DivStyledAsH4","AlertHeading","AlertLink","Alert","dismissible","handleClose","alert","Heading","scrollbarSize","recalc","scrollDiv","offsetWidth","ModalBody","ModalDialog","contentClassName","centered","fullscreen","scrollable","dialogClass","fullScreenClass","ModalFooter","ModalHeader","ModalTitle","dialogClassName","dialogAs","Dialog","dataBsTheme","ariaDescribedby","modalStyle","setStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","scrollHeight","clientHeight","paddingRight","getScrollbarSize","paddingLeft","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","baseModalStyle","onMouseUp","onMouseDown","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","NotificationStatus","Primary","Secondary","Success","Danger","Warning","Info","Dark","NotificationContext","notification","notificationText","success","useNotificationContext","NotificationProvider","_confirmModal$rejectC","_confirmModal$rejectT","_confirmModal$confirm","_confirmModal$confirm2","_confirmModal$confirm3","toastList","setToastList","alertList","setAlertList","showModal","setShowModal","confirmModal","setConfirmModal","removeToast","clearToasts","sendToast","_toast$status","_toast$delay","_toast$autohide","_toast$dismissible","newToast","list","removeAlert","clearAlerts","sendAlert","_alert$status","_alert$delay","_alert$autohide","_alert$dismissible","newAlert","clearNotifications","sendConfirmModal","modalConfirm","confirm","modalReject","maxWidth","center","heading","rejectColor","rejectText","confirmColor","confirmDisabled","confirmText","ListGroupItem","ListGroup","horizontal","numbered","horizontalVariant","ApiError","_response","replicateApiErrorResponse","RestApiError","CanceledError","RestApiValidationErrorCode","validationErrorMap","InvalidApiName","parseRestApiServiceError","parsedAwsError","stubErrorResponse","_response$body","bodyText","buildRestApiError","bodyTextPromise","bodyProxy","receiver","restApiError","DEFAULT_REST_IAM_SIGNING_SERVICE","DEFAULT_IAM_SIGNING_REGION","APIG_HOSTNAME_PATTERN","parseSigningInfo","restApiOptions","_restApiOptions$ampli","_restApiOptions$ampli2","_APIG_HOSTNAME_PATTER","signingService","signingRegion","apiName","resolveApiUrl","queryParams","_amplify$getConfig","urlStr","assertValidationError","mergedQueryParams","isIamAuthApplicableForRest","signingServiceInfo","authorization","getSignedHeaders","AMZ_DATE_HEADER","TOKEN_HEADER","KEY_TYPE_IDENTIFIER","SHA256_ALGORITHM_IDENTIFIER","getSigningValues","signingDate","uriEscapePath","longDate","shortDate","toISOString","getFormattedDates","getCredentialScope","credentialScope","getHashedData","sha256","getHashedDataAsHex","bytes","toHex","getCanonicalHeaders","_value$trim$replace","escapeUri","uri","hexEncode","getCanonicalUri","getHashedPayload","isSourceData","getSignature","canonicalRequest","keyA","valA","keyB","valB","val","getCanonicalRequest","stringToSign","getStringToSign","hashedRequest","signature","getSigningKey","dateKey","regionKey","serviceKey","getSkewCorrectedDate","systemClockOffset","getUpdatedSystemClockOffset","clockTimeInMilliseconds","currentSystemClockOffset","isClockSkewed","clockOffsetInMilliseconds","getDateHeader","_headers$date","authenticatedHandler","_currentSystemClockOf","signRequestOptions","signedRequest","signRequest","signingValues","host","requestToSign","credentialEntry","signedHeadersEntry","signatureEntry","dateString","iamAuthApplicable","withCredentials","resolvedBody","resolvedHeaders","resolveHeaders","normalizedHeaders","baseOptions","isIamAuthApplicable","resolveCredentials","_signingServiceInfo$s","_signingServiceInfo$r","signingInfoFromUrl","publicHandler","abortController","isInternalPost","targetHandler","publicApisAbortController","AbortController","publicApisAbortSignal","internalPostAbortSignal","abortReason","job","_abortReason","reason","canceledError","abortMessage","abort","createCancellableOperation","_amplify$libraryOptio","_amplify$libraryOptio2","apiOptions","apiPath","libraryConfigHeaders","invocationHeaders","get$1","post","post$1","put","put$1","del","del$1","kindOf","thing","kindOfTest","typeOfTest","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","getOwnPropertyNames","len","_global","isContextDefined","TypedArray","isHTMLForm","reduceDescriptors","reducer","reducedDescriptors","ret","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","asap","nextTick","isFormData","kind","isArrayBufferView","isStream","pipe","caseless","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","forEachEntry","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","delimiter","toCamelCase","p1","p2","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","captureStackTrace","utils","description","fileName","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","metaTokens","option","visitor","defaultVisitor","useBlob","convertValue","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serialize","serializeFn","serializedParams","hashmarkIndex","handlers","use","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","transformRequest","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","parser","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalized","formatHeader","targets","asStrings","accessor","accessors","defineAccessor","accessorName","arg1","arg2","arg3","buildAccessors","headerValue","transformData","fns","isCancel","__CANCEL__","ERR_CANCELED","settle","ERR_BAD_REQUEST","samplesCount","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","timer","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","total","lengthComputable","progressBytes","rate","progress","estimated","progressEventDecorator","throttled","asyncDecorator","isMSIE","port","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","btoa","isURLSameOrigin","xsrfValue","XMLHttpRequest","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","onloadend","getAllResponseHeaders","responseText","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","subscribe","parseProtocol","send","composeSignals","signals","controller","_OverloadYield","_wrapAsyncGenerator","AsyncGenerator","resume","_invoke","_awaitAsyncGenerator","_asyncGeneratorDelegate","pump","_asyncIterator","asyncIterator","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","streamChunk","chunkSize","pos","readBytes","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","readStream","_x","_x2","stream","reader","getReader","_x3","trackStream","onProgress","_onFinish","ReadableStream","close","loadedBytes","enqueue","highWaterMark","isFetchSupported","Request","Response","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","_request","getBodyLength","fetchOptions","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","validators","deprecatedWarnings","validator","formatMessage","opt","desc","ERR_DEPRECATED","spelling","correctSpelling","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","responseInterceptorChain","promise","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","Cancel","isAxiosError","formToJSON","getAdapter","RequestType","ResultType","apiRequest","resultType","REACT_APP_USE_DEV_API","REACT_APP_DEV_API","axiosOptions","optionsKeys","createAxiosConfig","parsingError","getUserBlockBalances","club","userID","getUserBalance","getUserData","clubId","loadIntroList","loadItem","loadPilots","loadPaymentMethods","loadIntroLaunches","loadFlights","dayText","day","returnFlight","launches","localDateString","returnItem","returnLaunch","returnPilot","pilots","returnTug","tugs","returnClub","clubs","itemlist","PK","SK","tooltip","Feedback","FormCheckInput","isValid","isInvalid","controlId","FormContext","FormCheckLabel","htmlFor","FormCheck","bsSwitchPrefix","inline","feedbackTooltip","feedback","feedbackType","innerFormContext","hasLabel","hasChildOfType","Input","Label","FormControl","htmlSize","plaintext","readOnly","FormFloating","FormGroup","Col","spans","brkPoint","span","infix","useCol","colProps","FormLabel","visuallyHidden","columnClass","FormRange","FormSelect","FormText","muted","Switch","FloatingLabel","validated","Group","Floating","Check","Range","Select","TableHeader","TableBody","rows","showSpinner","colSpan","buildRow","LuxonError","InvalidDateTimeError","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","unit","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","year","DATE_MED","DATE_MED_WITH_WEEKDAY","weekday","DATE_FULL","DATE_HUGE","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","second","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Zone","ianaName","isUniversal","offsetName","ts","formatOffset","equals","otherZone","singleton","SystemZone","Intl","DateTimeFormat","resolvedOptions","timeZone","parseZoneInfo","getTimezoneOffset","dtfCache","typeToPos","era","ianaZoneCache","IANAZone","resetCache","isValidSpecifier","isValidZone","zone","zoneName","valid","NaN","dtf","hour12","adOrBc","formatToParts","formatted","filled","partsOffset","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","hackyOffset","asTS","objToLocalTS","millisecond","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","weekInfoCache","listStuff","loc","englishFn","intlFn","listingMode","PolyNumberFormatter","intl","forceSimple","padTo","otherOpts","intlOpts","useGrouping","minimumIntegerDigits","inf","NumberFormat","getCachedINF","roundTo","PolyDateFormatter","originalZone","gmtOffset","offsetZ","setZone","plus","minutes","toJSDate","part","PolyRelFormatter","isEnglish","hasRelative","rtf","cacheKeyOpts","RelativeTimeFormat","getCachedRTF","numeric","narrow","units","years","quarters","months","weeks","days","hours","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","English","fallbackWeekSettings","firstDay","minimalDays","weekend","Locale","fromOpts","numberingSystem","outputCalendar","weekSettings","defaultToEN","specifiedLocale","Settings","defaultLocale","localeR","numberingSystemR","defaultNumberingSystem","outputCalendarR","defaultOutputCalendar","weekSettingsR","validateWeekSettings","defaultWeekSettings","fromObject","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","localeStr","xIndex","uIndex","selectedStr","smaller","calendar","parseLocaleString","intlConfigString","weekdaysCache","standalone","monthsCache","meridiemCache","eraCache","fastNumbersCached","fastNumbers","isActuallyEn","hasNoWeirdness","alts","redefaultToEN","redefaultToSystem","formatStr","ms","DateTime","utc","mapMonths","extract","weekdays","mapWeekdays","meridiems","eras","matching","dtFormatter","numberFormatter","relFormatter","listFormatter","ListFormat","getCachedLF","getWeekSettings","hasLocaleWeekInfo","getWeekInfo","weekInfo","getCachedWeekInfo","getStartOfWeek","getMinDaysInFirstWeek","getWeekendDays","FixedOffsetZone","utcInstance","parseSpecifier","signedOffset","InvalidZone","normalizeZone","defaultZone","lowered","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegexCache","digitRegex","ns","throwOnInvalid","twoDigitCutoffYear","cutoffYear","resetCaches","Invalid","explanation","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","UTC","setUTCFullYear","getUTCFullYear","js","getUTCDay","computeOrdinal","isLeapYear","uncomputeOrdinal","ordinal","table","month0","isoWeekdayToLocal","isoWeekday","startOfWeek","gregorianToWeek","gregObj","minDaysInFirstWeek","weekYear","weekNumber","weeksInWeekYear","timeObject","weekToGregorian","weekData","weekdayOfJan4","yearInDays","daysInYear","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","usesLocalWeekValues","localWeekday","localWeekNumber","localWeekYear","hasInvalidGregorianData","validYear","validMonth","integerBetween","validDay","daysInMonth","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","bestBy","by","best","bottom","padded","parseInteger","parseFloating","parseMillis","fraction","factor","modMonth","floorMod","firstWeekOffset","weekOffset","weekOffsetNext","untruncateYear","offsetFormat","modified","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","normalizeObject","normalizer","sign","RangeError","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","erasLong","erasShort","erasNarrow","stringifyTokens","splits","tokenToString","literal","macroTokenToFormatOpts","Formats","DD","DDD","DDDD","tt","ttt","tttt","TT","TTT","TTTT","fff","ffff","FF","FFF","FFFF","Formatter","parseFormat","fmt","currentFull","bracketed","formatOpts","systemLoc","formatWithSystemDefault","formatDateTime","formatDateTimeParts","formatInterval","interval","formatRange","num","formatDateTimeFromString","knownEnglish","useDateTimeFormatter","isOffsetFixed","allowZ","meridiem","maybeMacro","quarter","formatDurationFromString","dur","tokenToField","realTokens","lildur","shiftTo","ianaRegex","combineRegexes","regexes","full","combineExtractors","extractors","ex","mergedVals","mergedZone","cursor","patterns","extractor","simpleParse","offsetRegex","isoExtendedZone","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","extractISOTime","milliseconds","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","INVALID","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conf","conversionAccuracy","matrix","Duration","durationToMillis","vals","_vals$milliseconds","normalizeValues","previousVal","conv","rollUp","accurate","invalid","isLuxonDuration","fromMillis","normalizeUnit","fromDurationLike","durationLike","isDuration","fromISO","parseISODuration","fromISOTime","parseISOTimeOnly","toFormat","fmtOpts","toHuman","unitDisplay","listStyle","toObject","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","includeOffset","invalidReason","minus","mapUnits","reconfigure","rescale","newVals","removeZeroes","shiftToAll","built","accumulated","lastUnit","own","negated","invalidExplanation","v1","v2","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","startIsValid","endIsValid","isInterval","toDuration","startOf","useLocaleWeeks","diff","hasSame","isAfter","dateTime","isBefore","splitAt","dateTimes","results","added","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intervals","final","sofar","currentCount","ends","toLocaleString","toISODate","dateFormat","mapEndpoints","mapFn","hasDST","isValidIANAZone","locObj","getMinimumDaysInFirstWeek","getWeekendWeekdays","monthsFormat","weekdaysFormat","features","localeWeek","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","highWater","lowestOrder","differs","differ","highOrderDiffs","remainingMillis","lowerOrderUnits","intUnit","deser","parseDigits","NBSP","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","strings","simple","_ref4","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","hour24","dummyDateTimeCache","expandMacroTokens","formatOptsToTokens","maybeExpandMacroToken","TokenParser","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","_ref5","unitate","unitForToken","disqualifyingUnit","regexString","buildRegex","explainFromTokens","rawMatches","matchIndex","specificOffset","toField","dateTimeFromMatches","resolvedOpts","isSpace","actualType","tokenForPart","MAX_DATE","unsupportedZone","possiblyCachedWeekData","possiblyCachedLocalWeekData","localWeekData","inst","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","extended","longFormat","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","normalizeUnitWithLocalWeeks","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","offsetProvis","zoneOffsetGuessCache","zoneOffsetTs","guessOffsetForZone","diffRelative","calendary","lastOpts","argList","ot","_zone","isLuxonDateTime","fromJSDate","zoneToUse","fromSeconds","tsNow","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","gregorian","tsFinal","offsetFinal","parseISODate","fromRFC2822","preprocessRFC2822","parseRFC2822Date","fromHTTP","parseHTTPDate","fromFormat","localeToUse","parseFromTokens","fromString","fromSQL","parseSQL","isDateTime","parseFormatForOpts","localeOpts","tokenList","expandFormat","isWeekend","monthShort","monthLong","weekdayShort","weekdayLong","offsetNameShort","offsetNameLong","isInDST","getPossibleOffsets","dayMs","minuteMs","oEarlier","oLater","o1","ts1","ts2","c1","c2","isInLeapYear","weeksInLocalWeekYear","resolvedLocaleOptions","toLocal","keepCalendarTime","newTS","offsetGuess","asObj","setLocale","settingWeekStuff","mixed","normalizedUnit","endOf","toLocaleParts","ext","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","includeZone","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","adjustedToZone","toRelative","toRelativeCalendar","fromFormatExplain","fromStringExplain","buildFormatParser","fromFormatParser","formatParser","dateTimeish","UserAccount","clubTimeZone","startDate","setStartDate","endDate","setEndDate","pilotTransactions","setPilotTransactions","dateStr","onLoad","startDateVal","endDateVal","transactionRecords","pilotID","loadPilotTransactions","transactions","transaction","amount","balance","onDateChange","onChange","updateStart","updateEnd","Table","accountsMemberSchema","Home","clubName","clubLink","clubLogo","clubMessage","userIsAdmin","userCanAddFunds","userCanAddIntros","userCanUpdateGliders","userIsActive","activeFlights","setActiveFlights","setBalance","blockBalances","setBlockBalances","startDay","landedAt","cancelledAt","user","alt","block","blockName","blockUnits","blockBalance","blockExpires","blockId","flights","flight","glider","renderActivities","base64Encoder","skipPadding","byte","fromCodePoint","bytesToString","encodedStr","getBtoa","getDeviceName","userAgentData","platformVersion","model","architecture","fullVersionList","getHighEntropyValues","brand","AssociateSoftwareTokenException","ChangePasswordException","ConfirmDeviceException","ConfirmForgotPasswordException","ConfirmSignUpException","DeleteUserAttributesException","DeleteUserException","ForgetDeviceException","ForgotPasswordException","GetUserException","GetIdException","GetCredentialsForIdentityException","GetUserAttributeVerificationException","GlobalSignOutException","InitiateAuthException","ResendConfirmationException","RespondToAuthChallengeException","SetUserMFAPreferenceException","SignUpException","UpdateUserAttributesException","VerifySoftwareTokenException","VerifyUserAttributeException","UpdateDeviceStatusException","ListDevicesException","AuthValidationErrorCode","EmptyChallengeResponse","EmptyConfirmResetPasswordUsername","EmptyConfirmSignUpCode","EmptyConfirmSignUpUsername","EmptyConfirmResetPasswordConfirmationCode","EmptyConfirmResetPasswordNewPassword","EmptyResendSignUpCodeUsername","EmptyResetPasswordUsername","EmptySignInPassword","EmptySignInUsername","EmptySignUpPassword","EmptySignUpUsername","CustomAuthSignInPassword","IncorrectMFAMethod","EmptyVerifyTOTPSetupCode","EmptyUpdatePassword","EmptyConfirmUserAttributeCode","AuthErrorStrings","AuthErrorCodes","createRespondToAuthChallengeClient","cacheCognitoTokens","accessTokenIssuedAtInMillis","currentTime","RefreshToken","NewDeviceMetadata","dispatchSignedInHubEvent","TGT_STATE","SIGN_IN_STATE_KEYS","challengeName","signInSession","expiry","resetActiveSignInState","signInStore","clearPersistedSignInState","stateKey","getDefaultState","getInitialState","_syncSessionStorage$g","_syncSessionStorage$g2","_syncSessionStorage$g3","currentState","getState","createStore","signInReducer","persistSignInState","setActiveSignInState","PasskeyError","PasskeyErrorCode","notSupportedRecoverySuggestion","abortOrCancelRecoverySuggestion","misconfigurationRecoverySuggestion","passkeyErrorMap","PasskeyNotSupported","InvalidPasskeyRegistrationOptions","InvalidPasskeyAuthenticationOptions","PasskeyRegistrationFailed","PasskeyRetrievalFailed","PasskeyAlreadyExists","PasskeyRegistrationCanceled","PasskeyAuthenticationCanceled","PasskeyOperationAborted","RelyingPartyMismatch","assertPasskeyError","handlePasskeyError","convertArrayBufferToBase64Url","convertBase64UrlToArrayBuffer","base64url","getPasskey","isPasskeySupported","isSecureContext","PublicKeyCredential","passkeyGetOptions","challengeBuffer","challenge","allowedCredentialsWithBuffer","allowCredentials","allowedCred","deserializeJsonToPkcGetOptions","credential","publicKey","AuthenticatorAssertionResponse","assertCredentialIsPkcWithAuthenticatorAssertionResponse","clientDataJSON","authenticatorData","userHandle","resultJson","rawId","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","serializePkcWithAssertionToJson","handlePasskeyAuthenticationError","textEncoder","BigInteger","nbi","dbits","inBrowser","appName","am","DB","DM","DV","FV","F1","F2","BI_RC","rr","vv","int2char","intAt","nbv","fromInt","nbits","Montgomery","mp","invDigit","mpl","mph","um","mt2","dlShiftTo","divRemTo","compareTo","ZERO","subTo","revert","copyTo","u0","drShiftTo","mulTo","multiplyTo","sqrTo","squareTo","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","nsh","ys","y0","yt","d1","d2","ONE","addTo","km","bitLength","modPow","k1","g2","is1","r2","getBytesFromHex","encoded","getHexFromBytes","getHashFromData","hashedData","hashHexFromUint8","getHashFromHex","hexStr","HEX_MSB_REGEX","getPaddedHex","bigInt","isNegative","invertedNibbles","invertedNibble","WordArray","sigBytes","Words","nBytes","getRandomValues","wordArray","hexChars","bite","hexStringify","getRandomBytes","AuthenticationHelper","userPoolName","getRandomPassword","getSaltToHashDevices","saltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","combinedString","hashedString","hexRandom","getPasswordAuthenticationKey","serverBValue","salt","calculateU","usernamePassword","usernamePasswordHash","outerErr","outerResult","innerErr","innerResult","calculateS","spacer","hkdfKey","getHkdfKey","ikm","awsCryptoHash","resultFromAWSCryptoPrk","awsCryptoHashHmac","getAuthenticationHelper","generateRandomBigInteger","calculateA","handlePasswordSRP","_challengeParameters$","clientMetadata","authFlow","preferredChallenge","authenticationHelper","authParameters","USERNAME","SRP_A","PREFERRED_CHALLENGE","jsonReq","ClientMetadata","SignIn","ChallengeParameters","challengeParameters","Session","session","activeUsername","setActiveSignInUsername","ChallengeName","retryOnResourceNotFoundException","handlePasswordVerifierChallenge","MONTH_NAMES","WEEK_NAMES","getNowString","weekDay","getSignatureString","dateNow","hkdf","bufUPIDaToB","bufUNaToB","bufSBaToB","urlB64ToUint8Array","SECRET_BLOCK","bufDNaToB","bufConcat","resultFromAWSCrypto","base64String","rawData","outputArray","USER_ATTRIBUTES","handleUserPasswordAuthFlow","_response$ChallengePa","_response$ChallengePa2","_response$ChallengePa3","PASSWORD","USER_ID_FOR_SRP","handleDeviceSRPAuth","handleCustomAuthFlowWithoutSRP","_response$ChallengePa4","_response$ChallengePa5","_ref6","clientId","jsonReqResponseChallenge","ChallengeResponses","respondToAuthChallenge","respondedChallengeParameters","_ref7","_challengeParameters$2","SRP_B","SALT","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","handleDevicePasswordVerifier","getSignInResult","availableChallenges","isSignedIn","nextStep","signInStep","additionalInfo","mfaSetupTypes","getMFATypes","parseMFATypes","MFAS_CAN_SETUP","allowedMfaSetupTypes","authMfaType","isTotpMfaSetupAvailable","isEmailMfaSetupAvailable","allowedMFATypes","associateSoftwareToken","createAssociateSoftwareTokenClient","SecretCode","secretCode","totpSetupDetails","getTOTPSetupDetails","SignInException","missingAttributes","parseAttributes","requiredAttributes","MFAS_CAN_CHOOSE","codeDeliveryDetails","deliveryMedium","CODE_DELIVERY_DELIVERY_MEDIUM","destination","CODE_DELIVERY_DESTINATION","CREDENTIAL_REQUEST_OPTIONS","credentialRequestOptions","cred","nextChallengeName","nextChallengeParameters","authenticationResult","nextSession","ConfirmSignIn","CREDENTIAL","getNewDeviceMetadata","newDeviceMetadata","handleWebAuthnSignInResult","sharedSecret","getSetupUri","accountName","totpUri","getSignInResultFromError","errorName","PasswordResetRequiredException","UserNotConfirmedException","att","getMFAType","DeviceKey","DeviceGroupKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","confirmDevice","createConfirmDeviceClient","DeviceName","DeviceSecretVerifierConfig","getActiveSignInUsername","_state$username","signInWithCustomSRPAuth","loginId","authFlowType","handledChallengeName","handledChallengeParameters","CHALLENGE_NAME","handleCustomSRPAuthFlow","autoSignInStore","createAutoSignInStore","autoSignInReducer","initialAutoSignIn","autoSignIn","setAutoSignIn","resetAutoSignIn","signInWithSRP","_input$options","clientMetaData","handleUserSRPAuthFlow","signInWithUserAuth","handleUserAuthFlowInput","autoSignInStoreState","handleUserAuthFlow","AvailableChallenges","signIn","assertUserNotAuthenticated","retiredChallengeName","retriedChallengeParameters","signInWithUserPassword","retriedChallengeName","retiredChallengeParameters","signInWithCustomAuth","Spinner","bsSpinnerPrefix","LoaderButton","isLoading","useFormFields","initialState","fields","setValues","Login","userHasAuthenticated","setIsLoading","handleFieldChange","autoComplete","MAX_AUTOSIGNIN_POLLING_MS","fun","debouncedAutoSignInWithLink","signInInput","autoSignInPollingIntervalId","setInterval","clearInterval","signInOutput","debouncedAutoSignWithCodeOrUserConfirmed","_signInInput$options","autoSignInWithCode","autoSignInUserConfirmed","createSignUpClient","InvalidParameterException","signUp","_authConfig$signUpVer","validationData","signInServiceOptions","signUpClient","signUpClientInput","Username","Password","ValidationData","UserSub","CodeDeliveryDetails","cdd","UserConfirmed","userConfirmed","SignUp","Destination","DeliveryMedium","AttributeName","isSignUpComplete","isAutoSignInStarted","signUpStep","autoSignInWhenUserIsConfirmedWithLink","stopHubListener","timeOutId","handleCodeAutoSignIn","resendSignUpCode","resendConfirmationCode","createResendConfirmationCodeClient","ResendSignUpCode","confirmSignUp","confirmationCode","confirmSignUpClient","createConfirmSignUpClient","ConfirmSignUp","ConfirmationCode","ForceAliasCreation","forceAliasCreation","signUpOut","stopListener","Signup","isInstructor","isTowPilot","isAdmin","confirmPassword","newUser","setNewUser","handleSubmit","handleConfirmationSubmit","userInfo","bodyContent","given_name","family_name","createBody","createPilot","NewPilot","setFirst","setLast","ButtonGroup","vertical","baseClass","getOverlayDirection","bsDirection","getInitialPopperStyles","pointerEvents","Tooltip","arrowProps","hasDoneInitialMeasure","popper","primaryPlacement","computedStyle","strategy","TOOLTIP_OFFSET","InputGroupText","InputGroup","hasValidation","contextValue","InputGroupContext","Radio","Checkbox","ToggleButton","inputRef","ToggleButtonGroup","getValues","childVal","childOnChange","chainFunction","handleToggle","inputVal","Row","decoratedBsPrefix","sizePrefix","cols","iter","tar","dequal","foo","bar","ctor","tmp","getInt8","getBasePlacement","getWindow","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","brands","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","offsetTop","right","getLayoutRect","rootNode","getRootNode","isSameNode","getNodeName","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","viewport","variationPlacements","placements","modifierPhases","enabled","phase","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","axis","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","effect","_options$element","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","styles","_options$scroll","_options$resize","resize","scrollParents","scrollParent","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","_i","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","visited","modifier","dep","depModifier","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","orderModifiers","existing","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","hide","computeStyles","eventListeners","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","EMPTY_MODIFIERS","referenceElement","popperElement","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","popperState","useSafeState","updateModifier","nextModifiers","getRefTarget","InitialTriggerEvents","click","mouseup","pointerup","onClickOutside","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","isLeftClickEvent","handleInitialMouse","handleMouse","_ownerWindow$event","_ownerWindow$parent","currentEvent","removeInitialTriggerListener","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","onRootClose","useClickOutside","handleKeyUp","removeKeyupListener","toModifierArray","mergeOptionsWithPopperConfig","enableEvents","containerPadding","popperConfig","_modifiers$eventListe","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","toModifierMap","Overlay","outerRef","rootElement","attachArrowRef","usePopper","mountOverlay","useRootClose","rootClose","rootCloseDisabled","rootCloseEvent","PopoverHeader","PopoverBody","Popover","POPPER_OFFSET","overlay","outerShow","outerProps","popperRef","firstRenderedState","setFirstRenderedState","customOffset","overlayRef","popoverClass","tooltipClass","useOverlayOffset","actualTransition","handleFirstUpdate","BaseOverlay","overlayProps","popperObj","_popperObj$state","aRef","__wrapped","wrapRefs","updatedPlacement","outOfBoundaries","handleMouseOverOut","relatedNative","related","trigger","propsShow","defaultShow","propsDelay","triggerNodeRef","hoverStateRef","setShow","normalizeDelay","handleFocus","handleBlur","handleMouseOver","handleMouseOut","triggers","triggerProps","onMouseOver","onMouseOut","rnds8","rng","byteToHex","unsafeStringify","buf","native","rnds","unknownString","unknownGlider","Crew","weight","setWeight","passengerWeight","setPassengerWeight","gliderWeight","setGliderWeight","waterWeight","setWaterWeight","towSpeed","setTowSpeed","flyWith","setFlyWith","pilotInCharge","setPIC","passengerFirst","setPassengerFirst","passengerLast","setPassengerLast","setGlider","launchType","setLaunchType","passengerID","setPassengerID","flightId","setFlightId","flightDateString","setFlightDateString","setPilotID","groundOnly","setGroundOnly","shareCost","setShareCost","pilotBalance","setPilotBalance","clubWarnLevel","setWarnLevel","clubMinLevel","setMinLevel","searchText","setSearchText","isSubmitted","setIsSubmitted","setPilots","gliders","setGliders","multiSeatGliders","setMultiSeatGliders","flyingGliders","setFlyingGliders","setLaunches","introSelected","setIntroSelected","intros","setIntros","newMember","setNewMember","introType","setIntroType","newLaunches","setNewLaunches","serialNum","setSerialNum","paymentMethods","setPaymentMethods","payment","setPayment","introLaunchPrice","setIntroLaunchPrice","paymentRef","setPaymentRef","recGlider","setRecGlider","recMultiGlider","setRecMultiGlider","readyGliders","setReadyGliders","errorMessage","setErrorMessage","showIntroPassengetModal","setShowIntroPassengerModal","introPassengerFirst","setIntroPassengerFirst","introPassengerLast","setIntroPassengerLast","flightTypes","today","createFlight","flightUuid","uuidv4","submittedBy","submittedAt","Alone","Member","Intro","newIntro","updateIntro","recipientFirst","recipientLast","updatePilotWeight","createPilotBody","updateGlider","pilot","parsedWeight","Instructor","passenger","setPayingPilot","setLaunchValues","launch","renderLaunches","setIntroLaunchValues","introLaunch","returnIntroLaunch","price","renderPilots","newList","userpilot","othermembers","localeCompare","setPilot","renderPassenger","renderGliders","recentGliders","otherGliders","gliderSelect","gliderSK","launchSpeed","setGliderValues","places","Friend","setFlightType","filterText","intro","lowerFilter","SN","buyerEmail","filterIntro","OverlayTrigger","staleDate","renderStaleTooltip","selectIntro","renderIntroPassengerModal","note","launchButtonMessage","cancelFlight","deleteFlight","newIntroFlag","defaultIntroLaunch","disableReasonString","updateIntroPassenger","cancelUpdateIntroPassenger","_crew$clubInfo$paymen","crewPayloadResponse","loadCrewPayload","crew","defaultGlider","introLaunches","clubInfo","warningLevel","minimumLevel","unusedMultiSeatGliders","recentMultiSeatGliders","unusedGliders","defaultSerial","useDropdownMenu","DropdownContext","hasShownRef","placementOverride","enableEventListeners","shouldUsePopper","setMenu","menuElement","toggleElement","menuProps","hasShown","toggle","DropdownMenu","usePopperProp","$b5e257d569688ac6$var$defaultContext","$b5e257d569688ac6$var$SSRContext","$670gB$react","$b5e257d569688ac6$var$IsSSRContext","$b5e257d569688ac6$var$canUseDOM","$b5e257d569688ac6$var$componentIds","$b5e257d569688ac6$var$useCounter","$670gB$useContext","$670gB$useRef","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","currentOwner","prevComponentValue","$b5e257d569688ac6$export$619500959fc48b26","defaultId","didSSR","$670gB$useState","$b5e257d569688ac6$var$subscribe","$b5e257d569688ac6$var$getSnapshot","$b5e257d569688ac6$var$getServerSnapshot","onStoreChange","isRoleMenu","_el$getAttribute","useDropdownToggle","useSSRSafeId","setToggle","DropdownToggle","useDropdownItem","onSelectCtx","DropdownItem","dropdownItemProps","useRefWithUpdate","Dropdown","rawShow","rawOnToggle","itemSelector","focusFirstItemOnShow","menuRef","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","originalEvent","focusToggle","maybeFocusFirst","focusType","getNextFocusedChild","eventTarget","useEventListener","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_menuRef$current2","DropdownDivider","DropdownHeader","DropdownItemText","useWrappedRefWithWarning","getDropdownMenuPlacement","alignEnd","dropDirection","align","showProps","renderOnMount","contextAlign","isInputGroup","alignClasses","childBsPrefix","dropdownContext","toggleProps","pProps","_4","autoClose","_meta$originalEvent","directionClasses","down","up","BaseDropdown","ItemText","Divider","insertAt","getElementsByTagName","styleSheet","allItemsAreSelected","clearSearch","clearSelected","noOptions","selectAll","selectAllFiltered","selectSomeItems","hasSelectAll","debounceDuration","overrideStrings","when","eventTypes","_e","ARROW_DOWN","ARROW_UP","ENTER","ESCAPE","SPACE","stroke","x1","y1","x2","y2","itemRenderer","onSelectionChanged","skipIndex","ItemRenderer","$","filterOptions","disableSearch","ClearIcon","isCreatable","onCreateOption","Ge","__isNew__","hidden","valueRenderer","marginRight","viewBox","verticalAlign","cx","cy","onMenuToggle","ArrowRenderer","shouldToggleOnHover","labelledBy","isOpen","defaultIsOpen","ClearSelectedIcon","closeOnChangedValue","buildNumberString","incomingValue","decimals","reString","decimalLocation","nameFromPilotId","isoTimeToLocaleTime","newTime","toCurrencyString","currency","showSymbol","toConvert","currencyDisplay","_options$maximumFract","_options$minimumFract","maximumFractionDigits","minimumFractionDigits","isUserActive","activeExpiration","expirationDate","formatTaxOptions","taxRates","percentage","fuzzify","toLocaleLowerCase","EditGliderModal","closeModal","refreshGliderList","blocks","clubTaxRates","gliderID","setGliderID","gliderPlaces","setGliderPlaces","gliderRate","setGliderRate","gliderLaunchSpeed","setGliderLaunchSpeed","gliderStatus","setGliderStatus","gliderRegistration","setGliderRegistration","isDeleting","setIsDeleting","taxStatus","setTaxStatus","taxList","setTaxList","blockList","setBlockList","modalTitle","blockOptions","blockSelectRenderer","taxOptions","taxSelectRenderer","confirmDelete","deleteGlider","_glider$taxStatus","_glider$taxRates","_glider$blocks","_taxOptions$find","gliderBlocks","gliderBlock","blocksChanged","_glider$blocks2","blockListKeys","taxStatusChanged","taxRatesChanged","_glider$taxRates2","gliderTaxRates","gliderHasChanged","speed","inputMode","MultiSelect","parsedFloat","blockValues","EditBlockModal","refreshBlockList","blockID","setBlockID","setBlockName","setBlockUnits","blockAmount","setBlockAmount","blockEndsWithMembership","setBlockEndsWithMembership","endsAfterDays","setEndsAfterDays","daysCount","setDaysCount","endsAfterFlyingDays","setEndsAfterFlyingDays","flyingDaysCount","setFlyingDaysCount","minFlightCharge","setMinFlightCharge","minFlightUnits","setMinFlightUnits","maxFlightCharge","setMaxFlightCharge","maxFlightUnits","setMaxFlightUnits","excessMultiplier","setExcessMultiplier","blockPrice","setBlockPrice","blockActive","setBlockActive","_block$amount","_block$endsWithMember","_block$endsAfterDays","_block$daysCount","_block$endsAfterFlyin","_block$flyingDaysCoun","_block$minFlightCharg","_block$minFlightUnits","_block$maxFlightCharg","_block$maxFlightUnits","_block$excessMultipli","_block$taxRates","_block$active","endsWithMembership","_block$taxRates2","blockTaxRates","blockHasChanged","parsedDaysCount","parsedFlyingDaysCount","parsedMinFlightCharge","parsedMaxFlightCharge","parsedExcessMultiplier","parsedblockPrice","parsedBlockAmount","LaunchTypes","FootDefaults","per","MeterDefaults","EditLaunchModal","refreshLaunchList","clubUnits","launchID","setLaunchID","launchPrice","setLaunchPrice","launchName","setLaunchName","launchHeight","setLaunchHeight","launchHeightUnit","setLaunchHeightUnit","nextRangeId","setNextRangeId","setIsActive","variableHeights","setVariableHeights","cost","heightUnit","deleteLaunch","_launch$isActive","_launch$taxStatus","_launch$taxRates","heightRanges","_launch$height","rangeId","_launch$taxRates2","launchTaxRates","launchTypeChanged","heightRangesChanged","launchUpdated","updateListItem","formattedValue","hs","newR","heightErrors","points","errorMsg","point","positions","variableHeightChanges","changeList","oldIdx","newIdx","_launch$heightRanges$","_variableHeights$newI","oldRange","newRange","minWidth","heights","removeVariableHeightRow","addVariableHeightRow","change","EditIntroLaunchModal","refreshIntroList","introID","setIntroID","introPrice","setIntroPrice","introName","setIntroName","introLaunchType","setIntroLaunchType","deleteIntroLaunch","_intro$taxStatus","_intro$taxRates","_launches$0$SK","_launches$","_intro$taxRates2","activeChanged","introUpdated","EditTugModal","tug","refreshTugList","tugID","setTugID","tugType","setTugType","tugPlaces","setTugPlaces","tugStatus","setTugStatus","tugRegistration","setTugRegistration","deleteTug","aircraftType","tugHasChanged","isAccordionItemSelected","activeEventKey","AccordionCollapse","AccordionContext","AccordionBody","AccordionItemContext","AccordionButton","accordionOnClick","alwaysOpen","eventKeyPassed","useAccordionButton","AccordionHeader","ariaControls","AccordionItem","Accordion","transactionTypes","Deposit","successMsg","failMsg","Expense","Block","EditPilotModal","_blocks$0$SK","_blocks$","_blocks$0$blockPrice","_blocks$2","refreshPilotList","clubMembershipYearEnd","clubFeeList","pilotFirst","setPilotFirst","pilotLast","setPilotLast","fundAdd","setFundAdd","fundNote","setFundNote","expenseAdd","setExpenseAdd","expenseNote","setExpenseNote","setIsInstructor","setIsTowPilot","setIsAdmin","canAddFunds","setCanAddFunds","canUpdateGliders","setCanUpdateGliders","canAddIntros","setCanAddIntros","canEditLogs","setCanEditLogs","transactionRef","setTransactionRef","transferType","setTransferType","expenseType","setExpenseType","feeType","setFeeType","setBlock","blockStartDate","setBlockStartDate","blockEndDate","setBlockEndDate","blockOverride","setBlockOverride","blockNote","setBlockNote","setActiveExpiration","expirationEnabled","setExpirationEnabled","loadingTransactions","setLoadingTransactions","loadingBlocks","setLoadingBlocks","submittingFunds","setSubmittingFunds","submittingExpenses","setSubmittingExpenses","submittingBlock","setSubmittingBlock","deletePilot","updateRecord","activeExpirationDate","loadBlocksforPilot","submitTransaction","amountNum","transactionType","override","resetForm","loadTransactionsForPilot","setBlockStartfromClub","setBlockType","blockInfo","loadRecentPilotTransactions","blockStarts","_pilot$activeExpirati","yearEndDate","hasChanged","formCheckLabel","feeList","nextSeason","resetSeason","prevSeason","activationIsExpired","blockSchema","Admin","isInitialLoading","setIsInitialLoading","setBlocks","setIntroLaunches","setTugs","setErrorMsg","showGliderModal","setShowGliderModal","gliderToEdit","setGliderToEdit","showBlockModal","setShowBlockModal","blockToEdit","setBlockToEdit","showLaunchModal","setShowLaunchModal","launchToEdit","setLaunchToEdit","showIntroModal","setShowIntroModal","introToEdit","setIntroToEdit","showTugModal","setShowTugModal","tugToEdit","setTugToEdit","showPilotModal","setShowPilotModal","pilotToEdit","setPilotToEdit","sortPilotList","sortBlockList","sortLaunchList","sortTugList","sortGliderList","sortIntroList","loadBlocks","loadLaunches","loadTugs","loadGliders","startEditingPilot","stopEditingPilot","startEditingGlider","returnGlider","stopEditingGlider","startEditingBlock","returnBlock","startEditingLaunch","stopEditingBlock","stopEditingLaunch","startEditingIntro","stopEditingIntro","startEditingTug","stopEditingTug","loadAdminPayload","CustomPilotMenu","labeledBy","searchStr","setSearchStr","normalizeString","childStr","filterChild","renderError","ReleaseHeightModal","allPilots","onSuccess","releaseHeight","setReleaseHeight","millisToTimeString","launchedAt","sendReleaseHeightUpdate","overwrite","releaseHeightNum","_allPilots$result$bod","releaseSetMember","releaseSetBy","releaseSetName","confirmOverwrite","currentReleaseHeight","setByName","Ground","actionTypes","launchFlight","setLaunchFlight","launchFlightName","setLaunchFlightName","actionType","setActionType","timeDelay","setTimeDelay","sliderPosition","setSliderPosition","setEventTime","launchRecord","setLaunchRecord","setTug","setAllPilots","towPilot","setTowPilot","pageLoading","setPageLoading","waitingFlights","setWaitingFlights","landedFlights","setLandedFlights","loadingCancel","setLoadingCancel","showReleaseHeightModal","setShowReleaseHeightModal","releaseHeightFlight","setReleaseHeightFlight","elapsedTimeString","getClubDateString","getFlightRecords","getPilots","includePilots","getGroundStatus","todaysFlights","acceptedAt","functionalStart","sortedTugs","pilotName","createFlightBody","transactionTime","enteredTime","dateStruct","setCanceling","setNotCancelling","submitCancelLaunch","submitCancelLanding","flightName","flightLaunch","updateAction","launchTime","eventTimeString","cancelRequest","submitCancelRequest","introUpdateBody","submitCancelIntro","introRef","closeReleaseHeightModal","updateTugAndPilot","tugChoice","tugInfo","renderTugs","renderFlightsWaiting","renderCancelButtons","cancelFn","undoSuffix","Landing","cancelButton","setReleaseHeightButton","setLaunchReleaseHeight","renderCancellableLaunches","renderCancellableLandings","effectiveDelay","updateSlider","updateTime","submitUpdate","needsReleaseHeight","striped","bordered","borderless","hover","responsiveClass","ModificationTypes","CostModificationTypes","rawFlights","currentFlightData","flightData","revisions","isEmptyValues","revisionList","_revision$submittedAt","newRevision","changes","costChanges","oldPassenger","newPassenger","newPilot","oldPilot","_ModificationTypes$k","oldVal","newVal","newChange","new","parameter","parameterName","shortChangesString","moreChangesNum","shortCostString","_CostModificationType","costStr","_CostModificationType2","renderParameter","changePopover","costPopover","flightLocked","rev","ModalState","Logs","emptyTimes","instruction","initDate","newDate","setTime","tzoffset","userCanEditLogs","pilotFlights","setPilotFlights","allPilotFlights","setAllPilotFlights","allFlights","setAllFlights","allGliderFlights","setAllGliderFlights","allTowFlights","setAllTowFlights","towPilots","setTowPilots","flightViewType","setFlightViewType","totalGliderTime","setTotalGliderTime","totalPilotTime","setTotalPilotTime","totalTowTime","setTotalTowTime","pilotGliders","setPilotGliders","setCurrentFlightData","flightPilot","setFlightPilot","flightPassenger","setFlightPassenger","flightGlider","setFlightGlider","flightType","flightTakeoff","setFlightTakeoff","flightLanding","setFlightLanding","setPilotInCharge","setRawFlights","allGliders","setAllGliders","allActivePilots","setAllActivePilots","launchTypes","setLaunchTypes","expandRevisions","setExpandRevisions","showInfoModal","setShowInfoModal","infoModalState","setInfoModalState","isSubmitting","setIsSubmitting","flightTimes","flightSummary","timeString","toHHMM","introTime","instructionalTime","getFlightTime","flightCount","introCount","instructionalCount","startDateTime","endDateTime","includeSetup","loadLogsPayload","loadSetup","tugList","_item$corrections","takeoffTime","landingTime","toLocalTime","submitterName","otherName","towPilotName","launchCost","flightCost","launchTransaction","landingTransaction","corrections","takeoff","flightsWithDateEntries","dateTracker","dateEntry","flightsOnDate","personalFlightsWithAllDates","personalFlights","filteredPersonalFlights","hourString","minuteString","listType","setGliderView","setTowView","filteredFlights","dateFiltered","selectRow","_flight$releaseHeight","P1","P2","landing","takeoffMillis","landingMillis","returnIntro","renderFlightInfoForm","_currentFlightData$re","activePilotList","oldTowPilot","passengerList","setFlightFlyWith","launchId","updateLaunchType","releaseHeightToString","renderFlightInfo","infoEntries","releaseHeightStr","_currentFlightData$la","_currentFlightData$fl","defaultActiveKey","RevisionsTable","renderModalContent","resetFlightInfo","renderFlightChanges","_currentFlightData$ta","_currentFlightData$la2","launchDate","landDate","ogTakeoff","ogLanding","takeoffChanged","landingChanged","newReleaseHeight","oldIntroBody","newIntroBody","_response$body$messag","submitAPICall","pilotList","oldTowPilotList","newTowPilotList","newTowPilot","localeDateString","toLocaleDateString","language","SelectableTable","userSchema","towSchema","fetchAuthSession$1","updateUserAttributes","updateUserAttributesClient","createUpdateUserAttributesClient","CodeDeliveryDetailsList","UpdateUserAttributes","_Object$keys","confirmedAttributes","isUpdated","updateAttributeStep","getConfirmedAttributes","codeDeliveryDetailsList","unConfirmedAttributes","getUnConfirmedAttributes","loadClubInfo","allClubs","setAllClubs","newClubs","setNewClubs","pilotClubs","setPilotClubs","setUserInfo","refreshClubList","pilotClubList","loadPilotClubs","pilotClubIds","clubList","loadClubs","shortName","userData","CustomClubMenu","selectClubDropdown","buttonText","selectClub","newClub","currentClub","setUserClub","addClub","createdAt","pilotId","FilterAny","AccountingTableTypes","RevenueAccounts","DefaultSort","asc","getSortingValue","TableEntry","_toCurrencyString","_toCurrencyString2","_toCurrencyString3","account","summary","onDrill","rowClass","debit","credit","BreakdownTable","breakdown","sortAscending","sortColumn","mapper","isTransactionHistory","filters","organizedRows","newRows","filterRow","colValue","fuzzy","sortRows","typeCheck","aSort","bSort","tableWidth","_organizedRows$","rowElements","tooltipText","drillable","cellText","SummaryTable","summaries","cashIn","membersPayable","introsPayable","taxesPayable","towRevenue","rentalRevenue","introRevenue","otherRevenue","AccountingSummaryTable","currentTable","setCurrentTable","breakdowns","getTransactions","tableName","setTableName","setSortColumn","setSortAscending","feeFilter","setFeeFilter","noteFilter","setNoteFilter","fuzzyNoteFilter","defaultSort","feeFilterOptions","drillMember","drillTaxes","drillDeposit","introMapper","_t$soldTo","_t$SN","_t$note","soldTo","memberTransactionMapper","_t$description","taxTransactionMapper","_t$user","_t$description2","revenueMapper","_t$member","_t$fee","member","fee","otherRevenueMapper","_t$member2","_t$fee2","_t$note2","membersPayableMapper","debitCreditMapper","depositTransactionMapper","_t$user2","tableBody","_transactions$cashIn$","_transactions$cashIn$2","_transactions$members","_transactions$members2","_transactions$taxesPa","_transactions$taxesPa2","isOtherRevenue","tableHeaders","backToButton","updateSort","setTitle","setSummaries","currentTransactions","setCurrentTransactions","transactionsCache","setTransactionsCache","setFeeList","setBreakdowns","setTransactions","formatSectionDates","section","whereFormat","getRecords","transactionResults","loadTransactions","deposits","loadUserTransactions","taxType","loadTaxTransactions","loadDepositTransactions","transactionsResult","clubDefaultIntroStalePeriod","flightTypeList","setFlightTypeList","setDate","staleOffset","setStaleOffset","setBuyerEmail","buyerFirst","setBuyerFirst","buyerLast","setBuyerLast","recipientEmail","setRecipientEmail","setRecipientFirst","setRecipientLast","setNote","setPrice","forSelf","setForSelf","resetDate","initializeDate","recipientNameCache","resetInfo","_payments$","payments","setLaunch","updateBuyerFirst","updateBuyerLast","updateBuyerEmail","newStaleDate","purchaseDate","updateStaleOffset","submitChanges","updatePassword","oldPassword","newPassword","changePassword","createChangePasswordClient","UpdatePassword","PreviousPassword","ProposedPassword","ChangePassword","isChanging","setIsChanging","AuthenticatedRoute","UnauthenticatedRoute","querystring","resetPassword","forgotPassword","createForgotPasswordClient","ResetPassword","isPasswordReset","resetPasswordStep","confirmResetPassword","confirmForgotPassword","createConfirmForgotPasswordClient","ConfirmResetPassword","enumerableOnly","symbols","sym","_defineProperties","_slicedToArray","_arrayWithHoles","_s","_arr","_n","_d","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","MutationObserver","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","PREFIX_TO_STYLE","STYLE_TO_PREFIX","solid","regular","light","thin","duotone","kit","PREFIX_TO_LONG_STYLE","fab","fad","fak","fal","far","fas","fat","fass","fasr","fasl","fast","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","normal","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","RESERVED_CLASSES","FontAwesomeConfig","coerce","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_onChangeCb","meaninglessTransform","rotate","flipX","flipY","nextUniqueId","classArray","htmlEscape","joinStyles","styleName","transformIsMeaningful","dcp","drc","fp","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","headChildren","childNodes","beforeChild","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","shims","namespace","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","iconFromMapping","mapping","iconName","icon","doScroll","subject","thisContext","bindInternal4","unicode","extra","ucs2decode","normalizeIcons","icons","defineIcons","_params$skipHooks","skipHooks","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","lookup","alias","aliases","hasRegular","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","canonical","aliasIconName","Library","definitions","additions","_pullDefinitions","longPrefix","_normalized$key","_plugins","_hooks","defaultProviderKeys","chainHooks","hook","hookFn","callHooks","callProvided","findIconDefinition","iconLookup","library","i2svg","watch","autoReplaceSvgRoot","autoReplace","noAuto","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","makeInlineSvgAbstract","_params$icons","main","mask","maskId","titleId","_params$watchable","watchable","isUploadedIcon","attrClass","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","styles$1","asFoundIcon","vectorData","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","preamble","perf","noop$2","isWatched","convertSVG","abstractObj","_params$ceFn","ceFn","mutators","mutation","_abstract","comment","createComment","outerHTML","nodeAsComment","replaceChild","nest","_abstract2","forSvg","splitClasses","toSvg","toNode","newInnerHTML","performOperationSync","perform","mutations","callbackFunction","frame","requestAnimationFrame","mutator","disableObservation","enableObservation","mo","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","mutationRecord","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","childList","characterData","subtree","classParser","ligature","existingPrefix","existingIconName","innerText","Node","TEXT_NODE","parseMeta","styleParser","_classParser","extraClasses","extraAttributes","attributesParser","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","htmlClassList","hclAdd","hclRemove","prefixesDomQuery","candidates","resolvedMutations","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","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","_content","_hexValueFromContent","cleaned","codePoint","codePointAt","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","iconIdentifier","iconName4","oldUnicode","newUnicode","byOldUnicode","processable","operations","_unwatched","parseTransformString","transformString","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","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","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","OPACITY_ANIMATE","dot","nextPlugins","mixoutsTo","registerPlugins","pseudoElements2svg","unwatch","bootstrap","symbolData","parse$1","excluded","sourceKeys","sourceSymbolKeys","camelize","normalizeIconArgs","objectWithKey","FontAwesomeIcon","iconArgs","maskArgs","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","rotation","swapOpacity","renderedIcon","_console","extraProps","convertCurry","mixins","attrs","styleToObject","_extraProps$style","existingStyle","codeSent","setCodeSent","confirmed","setConfirmed","isConfirming","setIsConfirming","isSendingCode","setIsSendingCode","handleSendCodeClick","handleConfirmClick","Emergency","pilotRecord","setPilotRecord","updatePilotInfo","emLink","emNote","emContact","emPhone","emRelation","shareEmail","sharePhone","shareAddress","address","Profile","setEmContact","setEmPhone","setEmRelation","setPhone","setEmail","setEmNote","setEmLink","setAddress","setShareEmail","setSharePhone","setShareAddress","textAlign","Export","exportType","setExportType","loading","setLoading","csvReport","setCSVReport","loadData","loadFlightData","allTransactionsResponse","chartOfAccounts","dateObj","userName","report","loadTransactionData","includeCancelled","flightTime","Fuel","fuel","setFuel","hobbsTime","setHobbsTime","chooseChange","setChooseChange","pilotChange","setPilotChange","lastOil","setLastOil","lastFuel","setLastFuel","lastPilotChange","setLastPilotChange","checkedIn","setCheckedIn","checkedInName","setCheckedInName","getTugs","lastHobbs","oilHobbs","fuelHobbs","pilotHobbs","recordTow","recordTime","oil","pilotLogOut","recordCheckOut","setCurrentTug","Awaiting","launchFlightType","setLaunchFlightType","launchFlightSpeed","setLaunchFlightSpeed","renderFlights","offTowAt","SalesTaxAccount","IntroAccount","AccountingAdjustments","setAmount","adjustmentAccount","setAdjustmentAccount","setTaxType","confirmSubmitAdjustment","accountNameCache","adjustmentType","typeOptions","canSubmit","_opt$value","updateAmount","ClubFeeAdmin","setClubFeeList","isRemoving","setIsRemoving","selectedFee","setSelectedFee","newFeeName","setNewFeeName","showNewFeeModal","setShowNewFeeModal","submitNewFee","feeName","addClubFee","_response$body$feeLis","submitRemoveFee","removeClubFee","_response$body$feeLis2","_response$body$feeLis3","feeOptions","IntroExpirationAdmin","setClubDefaultIntroStalePeriod","introStaleDays","setIntroStaleDays","period","updateDefaultIntroStalePeriod","AccountingAdmin","setClubLockDate","clubLockDate","selectedLockDate","setSelectedLockDate","setLockDateFromTimestamp","tmpDate","updateLockDate","lockDate","updateClubTransactionLock","confirmUpdateLockDate","IntroSearch","highlightExpired","filteredIntros","fuzzyFilter","expiredIntros","introButton","IntroRefund","_selectedIntro$SN","refundAmount","setRefundAmount","refundMethod","setRefundMethod","refundRef","setRefundRef","refundFirst","setRefundFirst","refundLast","setRefundLast","selectedIntro","setSelectedIntro","sendRefund","loadIntros","clearFields","introList","loadPayments","IntroCancel","_selectedIntro$price","_selectedIntro$paymen","_selectedIntro$buyerF","_selectedIntro$buyerL","writtenDown","setWrittenDown","sendCancel","App","Accounts","appVersion","setUserIsAdmin","setUserIsActive","setUserCanEditLogs","setUserCanAddFunds","setUserCanUpdateGliders","setUserCanAddIntros","setClubName","setClub","setClubLink","setClubLogo","setClubMessage","setClubUnits","setUser","appIsCurrent","setAppIsCurrent","setTzoffset","setClubTimeZone","setClubTaxRates","setClubMembershipYearEnd","userClub","userActive","showAdminPage","currentUserData","getUserInfo","userClubInfo","_userClubInfo$members","_userClubInfo$feeList","getClubInfo","transactionLockDate","introStalePeriod","membershipYearEnd","launchUnitsLocal","versionActive","checkVersion","handleLogout","apiGateway","REGION","cognito","USER_POOL_ID","APP_CLIENT_ID","IDENTITY_POOL_ID","currentConfig","flightline","getElementById","serviceWorker","ready","registration","unregister"],"sourceRoot":""}