{"version":3,"file":"js/69106-627f96bdb524a502da95.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/index.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/adapters/xhr.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/axios.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/cancel/Cancel.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/cancel/CancelToken.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/cancel/isCancel.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/Axios.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/InterceptorManager.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/buildFullPath.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/createError.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/dispatchRequest.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/enhanceError.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/mergeConfig.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/settle.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/core/transformData.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/defaults.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/bind.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/buildURL.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/combineURLs.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/cookies.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/isAxiosError.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/parseHeaders.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/spread.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/helpers/validator.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/axios/lib/utils.js","webpack://StravaModern/../../../webpack/universalModuleDefinition","webpack://StravaModern/../../../dist/react-responsive.js","webpack://StravaModern/../../../webpack/bootstrap a240fde86c0ad9ba24cd","webpack://StravaModern/../../../node_modules/prop-types/index.js","webpack://StravaModern/../../../node_modules/react-is/index.js","webpack://StravaModern/../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://StravaModern/../../../node_modules/hyphenate-style-name/index.js","webpack://StravaModern/../../../src/mediaQuery.js","webpack://StravaModern/../../../src/index.js","webpack://StravaModern/../../../external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://StravaModern/../../../node_modules/react-is/cjs/react-is.development.js","webpack://StravaModern/../../../node_modules/prop-types/factoryWithTypeCheckers.js","webpack://StravaModern/../../../node_modules/object-assign/index.js","webpack://StravaModern/../../../node_modules/prop-types/checkPropTypes.js","webpack://StravaModern/../../../node_modules/matchmediaquery/index.js","webpack://StravaModern/../../../node_modules/css-mediaquery/index.js","webpack://StravaModern/../../../src/toQuery.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/react-hooks/src/use-window-scroll-top/useWindowScrollTop.hook.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/constants/src/appConstants.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/clsx/clsx.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/state/FrontDoorsPageContainerContext.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/StravaLogo/StravaLogo.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/Button/styles.module.scss?d411","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/Button/Button.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/ui/Button/LinkButton.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/DesktopNav/DesktopNav.module.scss?c1e7","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/IconButton/IconButton.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/DesktopNav/DesktopNav.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_freeGlobal.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_root.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Symbol.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getRawTag.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_objectToString.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseGetTag.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isArray.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isObjectLike.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isString.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/utils/src/utils.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/CallToAction/CallToAction.module.scss?0611","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/CallToAction/CallToAction.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/components/MenuDrawer/MenuDrawer.module.scss?958d","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/components/MenuDrawer/MenuDrawer.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/components/MenuIcon/MenuIcon.module.scss?6a21","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/components/MenuIcon/MenuIcon.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/MobileNav.module.scss?096c","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/components/MobileNav/MobileNav.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/Header.module.scss?0ddb","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Header/Header.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/node_modules/@strava/react-hooks/src/use-safe-state/useSafeState.hook.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/node_modules/@strava/react-hooks/src/use-localized-images/constants.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/node_modules/@strava/react-hooks/src/use-localized-images/helpers.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/node_modules/@strava/react-hooks/src/use-localized-images/useLocalizedImages.hook.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/src/AppStoreBadges/components/Badge/Badge.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/src/AppStoreBadges/constants.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/node_modules/@strava/utils/src/utils.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/src/AppStoreBadges/helpers.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/node_modules/@strava/shared-ui/src/AppStoreBadges/AppStoreBadges.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Footer/components/SocialLink/SocialLink.module.scss?b5d7","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Footer/components/SocialLink/SocialLink.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Footer/Footer.module.scss?6353","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/components/Footer/Footer.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/state/FrontDoorsPageContainer.actions.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/state/FrontDoorsPageContainer.reducer.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/FrontDoorsPageContainer.module.scss?fd40","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/FrontDoorsPageContainer.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/front-doors-page-container-ui/helpers/getDefaultEventHandlers.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/ActionsCancelCircleHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/ActionsCheckCircleOnMedium.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/NavigationWarningHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/NavigationInformationNormalMedium.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/ActionsCancelNormalSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/node_modules/@strava/react-hooks/src/use-interval/useInterval.hook.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/clsx/clsx.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/VisuallyHidden/VisuallyHidden.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Alert/Alert.module.scss?2b2a","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Alert/Alert.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/node_modules/@strava/react-hooks/src/use-queue/useQueue.hook.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/node_modules/@strava/utils/src/utils.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Alert/AlertProvider/AlertContext.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.module.scss?d950","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Alert/AlertProvider/AlertContainer.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/constants.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arrayMap.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isSymbol.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseToString.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/toString.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/replace.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/utils/src/externalSocialPartners/externalSocialPartners.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/utils/src/externalSocialPartners/useApple.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Button/styles.module.scss?165c","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Button/Button.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Button/LinkButton.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/react-google-recaptcha/lib/esm/recaptcha.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/react-google-recaptcha/lib/esm/index.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isNil.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Spinner/Spinner.module.scss?c03b","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Spinner/Spinner.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/utils.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Input/Input.module.scss?9c21","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Input/Input.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/ActionsVisibleDisabledNormalSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/ActionsVisibleNormalSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Input/PasswordInput.module.scss?d130","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Input/PasswordInput.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/RegistrationInput/RegistrationInput.module.scss?7952","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/RegistrationInput/RegistrationInput.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/api/lib/base-url-staging.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/api/lib/base-url.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/api/lib/axios-client.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/api/lib/csrf.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/EmailRegistrationForm/EmailRegistrationForm.module.scss?4da0","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/EmailRegistrationForm/EmailRegistrationForm.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/EmailRegistrationForm/email-registration-api.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/AccountAuthButton/AccountAuthButton.module.scss?e78e","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/AccountAuthButton/AccountAuthButton.tsx","webpack://StravaModern/../src/Element.tsx","webpack://StravaModern/../src/Filter.ts","webpack://StravaModern/../src/constants.ts","webpack://StravaModern/../src/StyleFilter.ts","webpack://StravaModern/../src/Parser.ts","webpack://StravaModern/../src/Interweave.tsx","webpack://StravaModern/../src/Markup.tsx","webpack://StravaModern/../src/Matcher.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/DisclaimerText/DisclaimerText.module.scss?e8c6","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/DisclaimerText/DisclaimerText.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/OrDivider/OrDivider.module.scss?c075","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/authentication-ui/src/OrDivider/OrDivider.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/DesktopRegistrationOptions/DesktopRegistrationOptions.module.scss?b2b7","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/MediaQuery/index.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/DesktopRegistrationOptions/DesktopRegistrationOptions.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/node_modules/@strava/react-hooks/src/use-safe-state/useSafeState.hook.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/NavigationProfileHighlightedMedium.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/BadgesMulticolorSuperuserSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/BadgesMulticolorSummitSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/BadgesMulticolorProSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/icons/dist/BadgesMulticolorVerifiedSmall.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Avatar/Avatar.module.scss?39c4","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/ui/Avatar/Avatar.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/helpers/getTitleAndSubtitle.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/DesktopRegistrationMessage/DesktopRegistrationMessage.module.scss?b10e","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/DesktopRegistrationMessage/DesktopRegistrationMessage.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/MobileRegistrationOptions/MobileRegistrationOptions.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/MobileRegistrationMessage/MobileRegistrationMessage.module.scss?d951","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/MobileRegistrationMessage/MobileRegistrationMessage.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_listCacheClear.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/eq.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_assocIndexOf.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_listCacheDelete.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_listCacheGet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_listCacheHas.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_listCacheSet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_ListCache.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_stackClear.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_stackDelete.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_stackGet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_stackHas.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isObject.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isFunction.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_isMasked.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_coreJsData.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_toSource.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsNative.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getValue.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getNative.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Map.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_nativeCreate.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_hashClear.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_hashDelete.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_hashGet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_hashHas.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_hashSet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Hash.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_mapCacheClear.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_isKeyable.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getMapData.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_mapCacheDelete.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_mapCacheGet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_mapCacheHas.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_mapCacheSet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_MapCache.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_stackSet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Stack.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_setCacheAdd.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_setCacheHas.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_SetCache.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arraySome.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_cacheHas.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_equalArrays.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Uint8Array.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_mapToArray.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_setToArray.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_equalByTag.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arrayPush.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseGetAllKeys.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arrayFilter.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/stubArray.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getSymbols.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseTimes.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsArguments.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isArguments.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/stubFalse.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isBuffer.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_isIndex.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isLength.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsTypedArray.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseUnary.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_nodeUtil.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isTypedArray.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arrayLikeKeys.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_isPrototype.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_overArg.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_nativeKeys.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseKeys.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/isArrayLike.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/keys.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getAllKeys.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_equalObjects.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_DataView.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Promise.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_Set.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_WeakMap.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getTag.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsEqualDeep.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsEqual.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsMatch.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_isStrictComparable.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_getMatchData.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_matchesStrictComparable.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseMatches.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_isKey.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/memoize.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_memoizeCapped.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_stringToPath.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_castPath.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_toKey.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseGet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/get.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseHasIn.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_hasPath.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/hasIn.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseMatchesProperty.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/identity.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseProperty.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_basePropertyDeep.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/property.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIteratee.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_createBaseFor.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseFor.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_createBaseEach.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseEach.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseForOwn.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseMap.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/map.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseFindIndex.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIsNaN.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_strictIndexOf.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseIndexOf.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arrayIncludes.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_arrayIncludesWith.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/noop.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_createSet.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/_baseUniq.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/lodash-es/uniqBy.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/shared-ui/src/Picture/components/SourceTags/helpers.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/shared-ui/src/Picture/components/SourceTags/SourceTags.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/shared-ui/src/Picture/components/ImgTag/ImgTag.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/shared-ui/src/Picture/constants.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/shared-ui/src/Picture/Picture.js","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/TabletImage/TabletImage.module.scss?5442","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/components/TabletImage/TabletImage.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/AccountRegistrationPage.module.scss?150a","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/AccountRegistrationPage.tsx","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/node_modules/@strava/utils/src/utils.ts","webpack://StravaModern/./node_modules/@strava/account-registration-page-ui/src/helpers/useExtAuthBtnClickHandler.hook.ts","webpack://StravaModern/./node_modules/email-validator/index.js","webpack://StravaModern/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://StravaModern/./node_modules/react-async-script/lib/esm/async-script-loader.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" 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 * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\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 (true) {\n var ReactIs = __webpack_require__(1);\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 = __webpack_require__(8)(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\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (false) {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = __webpack_require__(7);\n}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (hyphenateStyleName);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__);\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nvar stringOrNumber = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string, __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number]); // properties that match media queries\n\nvar matchers = {\n orientation: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf(['portrait', 'landscape']),\n scan: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf(['progressive', 'interlace']),\n aspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n deviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n colorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n monochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n resolution: stringOrNumber // media features\n\n};\n\nvar features = _objectSpread({\n minAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber\n}, matchers); // media types\n\n\nvar types = {\n all: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n grid: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n aural: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n braille: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n handheld: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n print: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n projection: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n screen: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tty: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tv: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n embossed: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool\n};\n\nvar all = _objectSpread({}, types, features); // add the type property\n\n\nmatchers.type = Object.keys(types);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n all: all,\n types: types,\n matchers: matchers,\n features: features\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MediaQueryContextConsumer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaQuery\", function() { return MediaQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Context\", function() { return Context; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_matchmediaquery__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_matchmediaquery__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mediaQuery__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__toQuery__ = __webpack_require__(13);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toQuery\", function() { return __WEBPACK_IMPORTED_MODULE_5__toQuery__[\"a\"]; });\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nvar defaultTypes = {\n component: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node,\n query: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.string,\n values: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.shape(__WEBPACK_IMPORTED_MODULE_4__mediaQuery__[\"a\" /* default */].matchers),\n children: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node, __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.func]),\n onChange: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.func\n};\nvar excludedQueryKeys = Object.keys(defaultTypes);\n\nvar omit = function omit(object, keys) {\n var newObject = _objectSpread({}, object);\n\n keys.forEach(function (key) {\n return delete newObject[key];\n });\n return newObject;\n};\n\nvar getValues = function getValues(_ref) {\n var values = _ref.values;\n if (!values) return null;\n var keys = Object.keys(values);\n if (keys.length === 0) return null;\n return keys.reduce(function (result, key) {\n result[Object(__WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__[\"a\" /* default */])(key)] = values[key];\n return result;\n }, {});\n};\n\nvar getQuery = function getQuery(props) {\n return props.query || Object(__WEBPACK_IMPORTED_MODULE_5__toQuery__[\"a\" /* default */])(omit(props, excludedQueryKeys));\n};\n\nvar MediaQuery =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(MediaQuery, _React$Component);\n\n function MediaQuery() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MediaQuery);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MediaQuery)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n matches: false,\n mq: null,\n query: '',\n values: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.state.mq.addListener(_this.updateMatches); // make sure match is correct since status could have since first render and now\n\n\n _this.updateMatches();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps, prevState) {\n if (_this.state.mq !== prevState.mq) {\n _this.cleanupMediaQuery(prevState.mq);\n\n _this.state.mq.addListener(_this.updateMatches); // we don't need to call updateMatches here because even if the old mq fired before\n // we could safely remove it, updateMatches refers to the new one mq instance\n // and it will be accurate.\n\n }\n\n if (_this.props.onChange && prevState.matches !== _this.state.matches) {\n _this.props.onChange(_this.state.matches);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n _this._unmounted = true;\n\n _this.cleanupMediaQuery(_this.state.mq);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"cleanupMediaQuery\", function (mq) {\n if (!mq) return;\n mq.removeListener(_this.updateMatches);\n mq.dispose();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateMatches\", function () {\n if (_this._unmounted) return;\n if (_this.state.mq.matches === _this.state.matches) return;\n\n _this.setState({\n matches: _this.state.mq.matches\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n if (typeof _this.props.children === 'function') {\n return _this.props.children(_this.state.matches);\n }\n\n return _this.state.matches ? _this.props.children : null;\n });\n\n return _this;\n }\n\n _createClass(MediaQuery, null, [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var query = getQuery(props);\n if (!query) throw new Error('Invalid or missing MediaQuery!');\n var values = getValues(props);\n if (query === state.query && values === state.values) return null; // nothing changed\n\n var mq = __WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default()(query, values || {}, !!values);\n return {\n matches: mq.matches,\n mq: mq,\n query: query,\n values: values\n };\n }\n }]);\n\n return MediaQuery;\n}(__WEBPACK_IMPORTED_MODULE_0_react___default.a.Component);\n\n_defineProperty(MediaQuery, \"displayName\", 'MediaQuery');\n\n_defineProperty(MediaQuery, \"defaultProps\", {\n values: null\n});\n\nvar Context = __WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext();\n\nvar MediaQueryContextConsumer = function MediaQueryContextConsumer(props) {\n var values = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useContext(Context);\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(MediaQuery, _extends({\n values: values\n }, props));\n};\n\nMediaQueryContextConsumer.displayName = \"MediaQueryContextConsumer\";\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.8.6\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\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 lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(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 lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar ReactIs = __webpack_require__(1);\nvar assign = __webpack_require__(9);\n\nvar ReactPropTypesSecret = __webpack_require__(2);\nvar checkPropTypes = __webpack_require__(10);\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (true) {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (true) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (\"development\" !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (true) {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(2);\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar staticMatch = __webpack_require__(12).match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mediaQuery__ = __webpack_require__(4);\n\n\n\nvar negate = function negate(cond) {\n return \"not \".concat(cond);\n};\n\nfunction keyVal(k, v) {\n var realKey = Object(__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__[\"a\" /* default */])(k); // px shorthand\n\n if (typeof v === 'number') {\n v = \"\".concat(v, \"px\");\n }\n\n if (v === true) {\n return k;\n }\n\n if (v === false) {\n return negate(k);\n }\n\n return \"(\".concat(realKey, \": \").concat(v, \")\");\n}\n\nfunction join(conds) {\n return conds.join(' and ');\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj) {\n var rules = [];\n Object.keys(__WEBPACK_IMPORTED_MODULE_1__mediaQuery__[\"a\" /* default */].all).forEach(function (k) {\n var v = obj[k];\n\n if (v != null) {\n rules.push(keyVal(k, v));\n }\n });\n return join(rules);\n});\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// dist/react-responsive.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a240fde86c0ad9ba24cd","/**\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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 0\n// module chunks = 0","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/index.js\n// module id = 1\n// module chunks = 0","/**\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 2\n// module chunks = 0","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hyphenate-style-name/index.js\n// module id = 3\n// module chunks = 0","import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n])\n\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf([\n 'portrait',\n 'landscape'\n ]),\n\n scan: PropTypes.oneOf([\n 'progressive',\n 'interlace'\n ]),\n\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n\n color: PropTypes.bool,\n\n colorIndex: PropTypes.bool,\n\n monochrome: PropTypes.bool,\n resolution: stringOrNumber\n}\n\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n\n ...matchers\n}\n\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n}\n\nconst all = { ...types, ...features }\n\n// add the type property\nmatchers.type = Object.keys(types)\n\nexport default {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mediaQuery.js","import React from 'react'\nimport PropTypes from 'prop-types'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport mediaQuery from './mediaQuery'\nimport toQuery from './toQuery'\n\nconst defaultTypes = {\n component: PropTypes.node,\n query: PropTypes.string,\n values: PropTypes.shape(mediaQuery.matchers),\n children: PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]),\n onChange: PropTypes.func\n}\n\nconst excludedQueryKeys = Object.keys(defaultTypes)\n\nconst omit = (object, keys) => {\n const newObject = { ...object }\n keys.forEach(key => delete newObject[key])\n return newObject\n}\n\nconst getValues = ({ values }) => {\n if (!values) return null\n const keys = Object.keys(values)\n if (keys.length === 0) return null\n return keys.reduce((result, key) => {\n result[hyphenate(key)] = values[key]\n return result\n }, {})\n}\n\nconst getQuery = (props) =>\n props.query || toQuery(omit(props, excludedQueryKeys))\n\nclass MediaQuery extends React.Component {\n static displayName = 'MediaQuery'\n static defaultProps = {\n values: null\n }\n\n static getDerivedStateFromProps(props, state) {\n const query = getQuery(props)\n if (!query) throw new Error('Invalid or missing MediaQuery!')\n const values = getValues(props)\n if (query === state.query && values === state.values) return null // nothing changed\n const mq = matchMedia(query, values || {}, !!values)\n return {\n matches: mq.matches,\n mq,\n query,\n values\n }\n }\n\n state = {\n matches: false,\n mq: null,\n query: '',\n values: null\n }\n\n componentDidMount = () => {\n this.state.mq.addListener(this.updateMatches)\n // make sure match is correct since status could have since first render and now\n this.updateMatches()\n }\n\n componentDidUpdate = (prevProps, prevState) => {\n if (this.state.mq !== prevState.mq) {\n this.cleanupMediaQuery(prevState.mq)\n this.state.mq.addListener(this.updateMatches)\n // we don't need to call updateMatches here because even if the old mq fired before\n // we could safely remove it, updateMatches refers to the new one mq instance\n // and it will be accurate.\n }\n if (this.props.onChange && prevState.matches !== this.state.matches) {\n this.props.onChange(this.state.matches)\n }\n }\n\n componentWillUnmount = () => {\n this._unmounted = true\n this.cleanupMediaQuery(this.state.mq)\n }\n\n cleanupMediaQuery = (mq) => {\n if (!mq) return\n mq.removeListener(this.updateMatches)\n mq.dispose()\n }\n\n updateMatches = () => {\n if (this._unmounted) return\n if (this.state.mq.matches === this.state.matches) return\n this.setState({ matches: this.state.mq.matches })\n }\n\n render = () => {\n if (typeof this.props.children === 'function') {\n return this.props.children(this.state.matches)\n }\n return this.state.matches ? this.props.children : null\n }\n}\n\nconst Context = React.createContext()\n\nconst MediaQueryContextConsumer = props => {\n const values = React.useContext(Context)\n return \n}\n\nMediaQueryContextConsumer.displayName = \"MediaQueryContextConsumer\"\n\nexport {\n MediaQueryContextConsumer as default,\n MediaQuery,\n Context,\n toQuery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/** @license React v16.8.6\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\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 lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(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 lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/cjs/react-is.development.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 8\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 10\n// module chunks = 0","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/matchmediaquery/index.js\n// module id = 11\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-mediaquery/index.js\n// module id = 12\n// module chunks = 0","import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\n\nconst negate = cond => `not ${cond}`\n\nfunction keyVal(k, v) {\n const realKey = hyphenate(k)\n\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`\n }\n if (v === true) {\n return k\n }\n if (v === false) {\n return negate(k)\n }\n return `(${realKey}: ${v})`\n}\n\nfunction join(conds) {\n return conds.join(' and ')\n}\n\nexport default function (obj) {\n const rules = []\n Object.keys(mq.all).forEach(function (k) {\n const v = obj[k]\n if (v != null) {\n rules.push(keyVal(k, v))\n }\n })\n return join(rules)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/toQuery.js","import { useState, useEffect, useCallback } from 'react';\n\nexport const useWindowScrollTop = () => {\n const [windowScrollTop, setWindowScrollTop] = useState(0);\n\n const onScroll = useCallback(() => {\n setWindowScrollTop(window.scrollY);\n }, []);\n\n useEffect(() => {\n window?.addEventListener('scroll', onScroll);\n return () => {\n window?.removeEventListener('scroll', onScroll);\n };\n }, [onScroll]);\n\n return [windowScrollTop, onScroll];\n};\n\nexport default useWindowScrollTop;\n","export const YOUNGEST_AGE_ON_PLATFORM = 13;\n\nexport const YOUNGEST_AGE_FOR_HEALTH_AND_PROMO = 16;\n\nexport const GENDER = Object.freeze({\n man: 'man',\n woman: 'woman',\n preferNotSay: 'prefer_not_say',\n nonBinary: 'nonbinary'\n});\n\nexport const LOCALE = Object.freeze({\n deDE: 'de-DE',\n enUS: 'en-US',\n enGB: 'en-GB',\n esES: 'es-ES',\n es419: 'es-419',\n frFR: 'fr-FR',\n itIT: 'it-IT',\n jaJP: 'ja-JP',\n koKR: 'ko-KR',\n nlNL: 'nl-NL',\n ptBR: 'pt-BR',\n ptPT: 'pt-PT',\n ruRU: 'ru-RU',\n zhCN: 'zh-CN',\n zhTW: 'zh-TW'\n});\n\n// If a language has more than one locale, the first in the list is the default\nexport const LANGUAGE_LOCALES = Object.freeze({\n de: [LOCALE.deDE],\n // en is intentionally omitted here since English is the global default\n es: [LOCALE.esES, LOCALE.es419],\n fr: [LOCALE.frFR],\n it: [LOCALE.itIT],\n ja: [LOCALE.jaJP],\n ko: [LOCALE.koKR],\n nl: [LOCALE.nlNL],\n pt: [LOCALE.ptPT, LOCALE.ptBR],\n ru: [LOCALE.ruRU],\n zh: [LOCALE.zhCN, LOCALE.zhTW]\n});\n\nexport const EXPERIMENT_COHORTS = Object.freeze({\n control: 'control',\n variantA: 'variant-a',\n variantB: 'variant-b'\n});\n\nexport const MOBILE_OS = Object.freeze({\n android: 'android',\n iPhone: 'iphone',\n iPad: 'ipad'\n});\n\nexport const SUPPORTED_BROWSERS = Object.freeze({\n chrome: 'chrome',\n firefox: 'firefox',\n safari: 'safari'\n});\n\n// universal link paths from 'apple-app-site-association' file in active\nexport const APPLE_APP_LINK_PATHS = [\n '/dashboard',\n '/activities/*',\n '/athletes/*',\n '/segments/*',\n '/challenges/*',\n '/videos/*',\n '/routes/*',\n '/premium/*',\n '/settings/*',\n '/shop/*',\n '/athlete/*',\n '/clubs/*',\n '/summit/join',\n '/summit/perks',\n '/oauth/mobile/authorize'\n];\n\nexport const ATHLETES_VISIBILITY = Object.freeze({\n optedOut: 'opted_out' // Strava::Athletes::Visibility::OPTED_OUT\n});\n\nexport default {\n YOUNGEST_AGE_ON_PLATFORM,\n YOUNGEST_AGE_FOR_HEALTH_AND_PROMO,\n GENDER,\n LOCALE,\n EXPERIMENT_COHORTS,\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS,\n ATHLETES_VISIBILITY\n};\n","type Value = string | number | boolean | undefined | null;\ntype MixObject = {\n [key: string]: boolean | Mix | undefined | null;\n};\ntype MixArray = Array;\ntype Mix = Value | MixObject | MixArray;\n\nfunction toVal(mix: Mix): string {\n let k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (!mix || mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport function clsx(..._args: Mix[]): string {\n let i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = toVal(tmp))) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n}\n\nexport default clsx;\n","import React, { createContext, useContext } from 'react';\n\nconst FrontDoorsPageContainerContext = createContext();\nFrontDoorsPageContainerContext.displayName = 'FrontDoorsPageContainerContext';\n\nexport const useFrontDoorsPageContainerContext = () => {\n const context = useContext(FrontDoorsPageContainerContext);\n if (!context) {\n throw new Error(\n 'useFrontDoorsPageContainerContext must be used within the FrontDoorsPageContainerContext.Provider'\n );\n }\n return context;\n};\n\nexport const FrontDoorsPageContainerContextProvider = (props) => (\n \n);\n\nexport default FrontDoorsPageContainerContext;\n","import React from 'react';\nimport { color } from '@strava/ui-tokens/js';\nimport clsx from '../clsx';\n\nexport interface StravaLogoProps {\n alt?: string;\n className?: string;\n width: string | number;\n height: string | number;\n fill: string;\n style: React.CSSProperties;\n}\n\nfunction StravaLogo({\n className,\n alt = 'Strava',\n width = 'auto',\n height = 'auto',\n fill = color.colorCoreO3,\n style,\n ...props\n}: StravaLogoProps) {\n return (\n \n {alt}\n \n \n );\n}\n\nexport default StravaLogo;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"Button--btn--DCYws\",\"default\":\"Button--default--5ZDJs\",\"primary\":\"Button--primary--FZuCk\",\"primaryOutline\":\"Button--primaryOutline--wjMlQ\",\"secondary\":\"Button--secondary--ENNv6\",\"icon\":\"Button--icon--PEpBe\",\"text\":\"Button--text--Ld+5R\"};","import React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.module.scss';\n\nexport interface ButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n variant?:\n | 'default'\n | 'primary'\n | 'primaryOutline'\n | 'secondary'\n | 'icon'\n | 'text';\n className?: string;\n}\n\nconst Button = React.forwardRef(\n ({ children, className, variant = 'default', ...props }, ref) => (\n \n {children}\n \n )\n);\n\nexport default Button;\n","import clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport styles from './styles.module.scss';\nimport { ButtonProps } from './Button';\n\nexport type LinkButtonProps = ButtonProps & ComponentPropsWithoutRef<'a'>;\n\nconst LinkButton = forwardRef(\n ({ href, children, className, variant = 'default', ...otherProps }, ref) => {\n return (\n \n {children}\n \n );\n }\n);\n\nexport default LinkButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"DesktopNav--container--3+Z9C\",\"item\":\"DesktopNav--item--LfrFo\",\"loginBtn\":\"DesktopNav--loginBtn--XqADk\",\"signupBtn\":\"DesktopNav--signupBtn--m1iBY\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@strava/ui/Button';\n\nconst IconButton = ({\n children,\n onClick,\n ariaLabel,\n className,\n ...options\n}) => {\n return (\n \n {children}\n \n );\n};\n\nIconButton.defaultProps = {\n className: null\n};\n\nIconButton.propTypes = {\n children: PropTypes.node.isRequired,\n onClick: PropTypes.func.isRequired,\n ariaLabel: PropTypes.string.isRequired,\n className: PropTypes.string\n};\n\nexport default IconButton;\n","import React from 'react';\nimport StravaLogo from '@strava/ui/StravaLogo';\nimport Button from '@strava/ui/Button';\nimport { EXPERIMENT_COHORTS } from '@strava/constants/src/appConstants';\nimport { useFrontDoorsPageContainerContext } from '../../../../state/FrontDoorsPageContainerContext';\nimport styles from './DesktopNav.module.scss';\nimport IconButton from '../../../IconButton';\n\nconst DesktopNav = () => {\n const {\n t,\n state,\n onDesktopHeaderLoginBtnClick,\n onDesktopHeaderSignupBtnClick,\n onDesktopHeaderLogoClick\n } = useFrontDoorsPageContainerContext();\n const { cohort, menuConfig } = state;\n const { showLoginOptionOnly } = menuConfig;\n\n const handleLoginBtnClick = () => {\n onDesktopHeaderLoginBtnClick();\n window.location.href = '/login';\n };\n\n const handleSignupBtnClick = () => {\n onDesktopHeaderSignupBtnClick();\n window.location.href = '/register';\n };\n\n const handleLogoClick = () => {\n onDesktopHeaderLogoClick();\n window.location.href = '/';\n };\n\n // TODO - cleanup after experiment https://strava.atlassian.net/browse/ACQN-301\n const signupBtnCopy = () => {\n // join_us -> 'Join For Free'\n const key = cohort === EXPERIMENT_COHORTS.variantA ? 'join_now' : 'join_us';\n return t(`header.${key}`);\n };\n\n return (\n
\n
\n \n \n \n
\n
\n \n {t('header.log_in')}\n \n {!showLoginOptionOnly && (\n \n {signupBtnCopy()}\n \n )}\n
\n
\n );\n};\n\nexport default DesktopNav;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","import {\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS\n} from '@strava/constants/src/appConstants';\nimport { isString } from 'lodash-es';\nimport camelCase from 'lodash-es/camelCase';\nimport snakeCase from 'lodash-es/snakeCase';\nimport isObject from 'lodash-es/isObject';\nimport {\n CamelCasedProperties,\n CamelCasedPropertiesDeep,\n SnakeCasedPropertiesDeep\n} from 'type-fest';\n\nexport const generateRandomId = () => Math.random().toString(36).substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nexport const titleize = (sentence: string) => {\n return sentence\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(firstName.substring(0, maxLength - 4))}... ${lastName\n .charAt(0)\n .toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\n/**\n * Checks to see if device is mobile\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {boolean} - true if the device is mobile\n */\nexport const isMobile = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n // ref - https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_tablet_or_desktop\n return userAgent.toLowerCase().includes('mobi');\n }\n return false;\n};\n\n/**\n * Determines the OS for mobile devices\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['android', 'ipad', 'iphone'] or null for unknown\n */\nexport const getMobileOS = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Android')) {\n return MOBILE_OS.android;\n }\n if (userAgent.includes('iPad')) {\n return MOBILE_OS.iPad;\n }\n if (userAgent.includes('iPhone')) {\n return MOBILE_OS.iPhone;\n }\n }\n return null;\n};\n\n/**\n * Determines, in a limited fashion, the browser according to the user agent.\n * NOTE: UAs are notoriously difficult to parse. This is meant as a bare-bones, noncomprehensive parser,\n * based on https://www.whatismybrowser.com/guides/the-latest-user-agent/.\n *\n * The order of conditionals is important, bc some Chrome & Firefox UAs include 'Safari', too.\n * Some Edge UAs may be recognized as Chrome for now, since they can include 'Chrome'. We don't\n * officially support Edge (yet?).\n *\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['chrome', 'firefox', 'safari'] or null for unknown/unsupported browser\n */\nexport const getBrowser = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Chrome') || userAgent.includes('CriOS')) {\n return SUPPORTED_BROWSERS.chrome;\n }\n if (userAgent.includes('Firefox') || userAgent.includes('FxiOS'))\n return SUPPORTED_BROWSERS.firefox;\n if (userAgent.includes('Safari')) {\n return SUPPORTED_BROWSERS.safari;\n }\n }\n\n return null;\n};\n\n/**\n * Universal links are determined by the paths described in `apple-app-site-association` in active.\n * @param {string} pathname - window.location.pathname or nextjs equivalent\n * @returns {boolean} - whether the pathname string matches\n */\nexport const isUniversalLinkPage = (pathname: string) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path: string) => {\n const pathWithoutAsterisk = path.replace('/*', '');\n return pathname.startsWith(pathWithoutAsterisk);\n });\n }\n return false;\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (\n photoUrlHash: Record\n) => {\n if (!isObject(photoUrlHash)) {\n return '';\n }\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\n/**\n * Immutably merges a payload into an item in an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to update\n * @param {object} payload - the value to merge into the matched item\n * @param {object} options\n * @param {string} [options.idName=id] - the key of the unique identifier\n * @param {bool} [options.upsert=false] - if true, will insert the payload into the array as a new item if no matching item is found\n * @return {array} - A copy of the original array with the matching item updated\n */\nexport function arrayUpdateItemById(\n array: T[],\n id: string | number,\n payload: Partial,\n { idName, upsert }: { idName?: keyof T; upsert?: boolean } = {}\n): T[] {\n let itemFound = false;\n const property = idName || ('id' as keyof T);\n const mappedArray = array.map((item) => {\n itemFound = itemFound || item[property] === id;\n return item[property] === id ? { ...item, ...payload } : item;\n });\n\n return itemFound || !upsert ? mappedArray : ([...array, payload] as T[]);\n}\n\n/**\n * Immutably removes an item from an array by index\n * @param {array} array\n * @param {number} index - the index of the item to remove\n * @return {array} - A copy of the original array with the matching item removed\n */\nexport function arrayRemoveByIndex(array: T[], index: number): T[] {\n return index === -1\n ? array\n : [...array.slice(0, index), ...array.slice(index + 1)];\n}\n\n/**\n * Immutably removes an item from an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to remove\n * @param {string} [idName=id] - the key of the unique identifier\n * @return {array} - A copy of the original array with the matching item removed\n */\n\nexport function arrayRemoveItemById(\n array: T[],\n propertyValue: string | number,\n idName = 'id'\n): T[] {\n const index = array.findIndex(\n (item) => item[idName as keyof T] === propertyValue\n );\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n `${string.charAt(0).toUpperCase()}${string.slice(1)}`;\n\n/**\n * @description Converts Object keys from string of any case to camelCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToCamel(\n object: T,\n isShallow: true\n): CamelCasedProperties;\nexport function convertKeysToCamel(\n object: T,\n isShallow?: false\n): CamelCasedPropertiesDeep;\nexport function convertKeysToCamel(object: T, isShallow?: boolean) {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToCamel(item)\n ) as typeof isShallow extends true\n ? CamelCasedProperties\n : CamelCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = camelCase(k);\n const value = object[k as keyof typeof object] as CamelCasedProperties;\n\n if (!isShallow && isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToCamel(value)\n };\n }\n\n if (!isShallow && Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToCamel(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as CamelCasedProperties);\n }\n\n return object as typeof isShallow extends true\n ? CamelCasedProperties\n : CamelCasedPropertiesDeep;\n}\n\n/**\n * @description Converts Object keys from string of any case to snakeCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToSnake(object: T): SnakeCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToSnake(item)\n ) as SnakeCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = snakeCase(k);\n const value = object[\n k as keyof typeof object\n ] as SnakeCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToSnake(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToSnake(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as SnakeCasedPropertiesDeep);\n }\n\n return object as SnakeCasedPropertiesDeep;\n}\n\n/**\n * Checks to see if localStorage is available\n *\n * @return {boolean} - true if localStorage can be used\n */\nexport const isLocalStorageAvailable = () => {\n const test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Appends querystring params to a URL\n *\n * @param {string} originalUrl - The original URL to append params to\n * @param {object} params - An object of key value parameters to append to URL\n * @return {string} - URL with params appended\n */\nexport const addParamsToURL = (originalUrl: string, params: object) => {\n const url = new URL(originalUrl);\n\n Object.entries(params).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n\n return url.toString();\n};\n\n/**\n * Some of our logged-out pages have a full-screen image background.\n * This util helps with setting the background image on the `` element, and\n * just requires passing in the image to be used.\n * @param {string} background\n */\nexport const setFullScreenBackgroundImage = (background: string) => {\n // apply background image directly to ``\n const body = document.querySelector('body');\n if (body) {\n body.style.setProperty('background-image', `url(${background})`);\n body.style.setProperty('background-size', 'cover');\n body.style.setProperty('background-position', 'center');\n }\n};\n\n/**\n * Uses the host to determine if a page is being loaded in staging or localhost.\n *\n * This util function is helpful for apps that run on nextJS which has node process\n * defined as production in both staging and production.\n *\n * @param host - host name\n * @returns {boolean} - true if app is running in staging or local or webapp\n */\nexport const isStagingOrLocal = (host: string) =>\n ['staging', 'localhost', 'webapp'].some((_host) => host.includes(_host));\n\n/**\n * Adds an id property to each object in an array. Uses the object's index as the value for the id\n * @param {array} objects - An array of objects\n * @return {array} - A copy of the original array with id property added to each object\n */\nexport const arrayAddIndexAsId = (objects: Array) =>\n objects.map((object, index) => ({ ...object, id: index }));\n\n/**\n * Uses the host to determine if the protocol should be http or https\n *\n * @param host - host name\n * @returns {string} - Protocol (http / https)\n */\nexport const getProtocolForHost = (host: string) => {\n return host.includes('localhost') ? 'http' : 'https';\n};\n\n/**\n * Constructs the site root URL\n *\n * @param host - host name\n * @returns {string} - Root URL with protocol\n */\nexport const getRootUrl = (host: string) => {\n return `${getProtocolForHost(host)}://${host}`;\n};\n\n/**\n * Constructs the athlete URL for pro and non-pro athletes, i.e.\n * https://www.strava.com/athletes/[athlete_id] or\n * https://www.strava.com/pros/[athlete_id]\n *\n * @param isPro - boolean indicating if the athlete is a pro or not\n * @param athleteId - athlete unique identifier\n * @param host - host name\n * @returns {string} - Root URL with protocol\n */\nexport const getAthleteUrl = (\n isPro: boolean,\n athleteId: number,\n host: string\n) => {\n return `${getProtocolForHost(host)}://${host}/${\n isPro ? 'pros' : 'athletes'\n }/${athleteId.toString()}`;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"callToAction\":\"CallToAction--callToAction--2a+gN\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from '@strava/ui/clsx';\nimport { LinkButton } from '@strava/ui/Button';\nimport { useStravaBranch } from '@strava/container-context';\n\nimport styles from './CallToAction.module.scss';\n\nconst CallToAction = ({ label, className, dataCy, onClick }) => {\n const { appLink, isProcessing } = useStravaBranch();\n\n return (\n \n {label}\n \n );\n};\n\nCallToAction.propTypes = {\n label: PropTypes.string.isRequired,\n className: PropTypes.string,\n dataCy: PropTypes.string,\n onClick: PropTypes.func\n};\n\nCallToAction.defaultProps = {\n className: undefined,\n dataCy: undefined,\n onClick: () => {}\n};\n\nexport default CallToAction;\n","// extracted by mini-css-extract-plugin\nexport default {\"menuDrawer\":\"MenuDrawer--menuDrawer--qEDiy\",\"active\":\"MenuDrawer--active--p1XGP\",\"primaryOptions\":\"MenuDrawer--primaryOptions--yfeMW\",\"secondaryOptions\":\"MenuDrawer--secondaryOptions--Hm8JE\",\"menuDrawerBtn\":\"MenuDrawer--menuDrawerBtn--2kVGU\",\"drawerCallToAction\":\"MenuDrawer--drawerCallToAction--FU8tz\"};","import React, { useEffect, useState } from 'react';\nimport Drawer from 'react-modern-drawer';\nimport Button from '@strava/ui/Button';\nimport PropTypes from 'prop-types';\nimport clsx from '@strava/ui/clsx';\nimport { useFrontDoorsPageContainerContext } from '../../../../../../state/FrontDoorsPageContainerContext';\nimport CallToAction from '../../../../../CallToAction';\n\nimport 'react-modern-drawer/dist/index.css';\nimport styles from './MenuDrawer.module.scss';\n\nconst MenuDrawer = ({ isOpen, top, onClose }) => {\n const {\n t,\n onMobileHeaderMenuSignupBtnClick,\n onMobileHeaderMenuLoginBtnClick\n } = useFrontDoorsPageContainerContext();\n\n const PRIMARY_OPTIONS = [\n { key: 'home', destination: '/' },\n { key: 'features', destination: '/features' },\n {\n key: 'subscription',\n destination: '/subscribe?origin=website_header'\n }\n ];\n\n const SECONDARY_OPTIONS = [\n {\n key: 'stories',\n destination: 'https://stories.strava.com/'\n },\n {\n key: 'support',\n destination: 'https://support.strava.com/'\n },\n {\n key: 'sign_up',\n destination:\n '/register/free?cta=sign-up&element=mobile-nav&source=website_show'\n }\n ];\n\n const [location, setLocation] = useState('');\n\n useEffect(() => {\n setLocation(window.location.pathname);\n }, []);\n\n const handleLoginBtnClick = () => {\n onMobileHeaderMenuLoginBtnClick();\n window.location.href = '/login';\n };\n\n const generateLinkProps = ({ key, destination }) => {\n return {\n 'data-cy': `primary_option_${key}`,\n className: clsx({\n [styles.active]: location === destination\n }),\n href: destination\n };\n };\n\n return (\n \n \n\n \n\n
    \n
  • \n \n {t('header.log_in')}\n \n
  • \n\n
  • \n \n
  • \n
\n \n );\n};\n\nMenuDrawer.defaultProps = {\n top: 0\n};\n\nMenuDrawer.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n top: PropTypes.number\n};\n\nexport default MenuDrawer;\n","// extracted by mini-css-extract-plugin\nexport default {\"menuIcon\":\"MenuIcon--menuIcon--5GGLR\",\"bar\":\"MenuIcon--bar--8KEWf\",\"isOpen\":\"MenuIcon--isOpen--PQydX\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from '@strava/ui/clsx';\nimport styles from './MenuIcon.module.scss';\n\nconst MenuIcon = ({ isOpen }) => {\n return (\n
\n \n \n \n
\n );\n};\n\nMenuIcon.propTypes = {\n isOpen: PropTypes.bool.isRequired\n};\n\nexport default MenuIcon;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"MobileNav--container--3ETtt\",\"left\":\"MobileNav--left--tlRw9\",\"right\":\"MobileNav--right--Bdu4U\",\"logo\":\"MobileNav--logo--eI9Nj\",\"headerCallToAction\":\"MobileNav--headerCallToAction--Uvi3E\",\"menuBtn\":\"MobileNav--menuBtn--272BR\"};","import React, { useState, useEffect, useRef } from 'react';\nimport StravaLogo from '@strava/ui/StravaLogo';\nimport { getMobileOS } from '@strava/utils';\nimport SmartBanner from '@strava/smart-banner-ui';\nimport { useFrontDoorsPageContainerContext } from '../../../../state/FrontDoorsPageContainerContext';\nimport IconButton from '../../../IconButton';\nimport CallToAction from '../../../CallToAction';\nimport MenuDrawer from './components/MenuDrawer/MenuDrawer';\nimport MenuIcon from './components/MenuIcon';\n\nimport styles from './MobileNav.module.scss';\n\nconst MobileNav = () => {\n const [isMenuOpen, toggleMenu] = useState(false);\n const mobileAppDownloadBannerRef = useRef();\n const {\n t,\n state,\n onMobileHeaderLogoClick,\n onMobileHeaderMenuOpen,\n onMobileHeaderMenuClose,\n onMobileHeaderSignupBtnClick\n } = useFrontDoorsPageContainerContext();\n const { page, category, userAgent, showSmartBanner, branch, url } = state;\n const [forceSmartBanner, setForceSmartbanner] = useState(false);\n\n const handleLogoClick = () => {\n onMobileHeaderLogoClick();\n window.location.href = '/';\n };\n\n const handleMenuToggle = () => {\n if (isMenuOpen) {\n onMobileHeaderMenuClose();\n } else {\n onMobileHeaderMenuOpen();\n }\n toggleMenu(!isMenuOpen);\n };\n\n // For development only - use query param to force the smartbanner to show\n // on a page.\n useEffect(() => {\n if (window?.location?.href) {\n const [, queryParams] = window.location.href.split('?');\n const searchParams = new URLSearchParams(queryParams);\n setForceSmartbanner(!!searchParams.get('force_smartbanner'));\n }\n }, [url]);\n\n return (\n <>\n {(showSmartBanner || forceSmartBanner) && (\n \n )}\n
\n
\n \n \n \n
\n \n \n \n
\n
\n\n
\n \n
\n toggleMenu(!isMenuOpen)}\n top={\n mobileAppDownloadBannerRef.current?.getBoundingClientRect().height\n }\n />\n
\n \n );\n};\n\nexport default MobileNav;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Header--container--Uvd7X\",\"isScrolling\":\"Header--isScrolling--E+mFF\",\"menu\":\"Header--menu--dTyc-\",\"items\":\"Header--items--n177P\"};","import React, { forwardRef } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport { useFrontDoorsPageContainerContext } from '../../state/FrontDoorsPageContainerContext';\nimport DesktopNav from './components/DesktopNav';\nimport MobileNav from './components/MobileNav';\n\nimport styles from './Header.module.scss';\n\nconst Header = forwardRef((_, ref) => {\n const { state } = useFrontDoorsPageContainerContext();\n\n const isScrolling = state.windowScrollTop > 0;\n\n return (\n \n \n \n );\n});\n\nexport default Header;\n","import {\n Dispatch,\n SetStateAction,\n useRef,\n useCallback,\n useEffect,\n useState\n} from 'react';\n\n/**\n * The `useSafeState` hook acts the same as React's `useState`,\n * where we can set the initial state, and it returns (1) the current state,\n * and (2) the state setter.\n *\n * But with `useSafeState`, it will only set the state when the component is mounted\n * in order to prevent memory leaks and avoid this warning:\n * \"Warning: Can’t perform a React state update on an unmounted component.\"\n * When a component is unmounted, we don't want to set the state.\n *\n * This helps when we have async behavior where we call an async API call,\n * then based on the async response, we set the state. But if the component\n * unmounts before the API call resolves, we don't want to set the state.\n * */\n// eslint-disable-next-line import/prefer-default-export\nexport const useSafeState = (\n initialState: S | (() => S)\n): [S, Dispatch>] => {\n const mountedRef = useRef(false);\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const setSafeState = useCallback(\n (args) => (mountedRef.current ? setState(args) : () => {}),\n []\n );\n\n return [state, setSafeState];\n};\n","export const DEFAULT_LOCALIZED_IMAGES_SIZES = [\n { id: 'lg', value: 'large', minVw: '1200px' },\n { id: 'md', value: 'medium', minVw: '992px' },\n { id: 'sm', value: 'small', minVw: '768px' },\n { id: 'xs', value: 'xsmall', minVw: '0px' }\n];\n\nexport const DEFAULT_LOCALIZED_IMAGES_FORMATS = ['webp', 'png'];\n\nexport const DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS = ['1x', '2x'];\n\nexport const DEFAULT_LOCALIZED_IMAGES_DIRECTORY = 'shared';\n\nexport const DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER = [\n 'xl',\n 'lg',\n 'md',\n 'sm',\n 'xs'\n];\n\nexport const DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER = ['webp', 'png', 'jpg'];\n","import { LOCALE } from '@strava/constants/src/appConstants';\n\nexport const sortImagesBySizeAndFormat =\n (sizeOrder, formatOrder) => (image1, image2) => {\n const { size: image1Size, format: image1Format } = image1;\n const { size: image2Size, format: image2Format } = image2;\n\n // Sort images by size\n if (sizeOrder.indexOf(image1Size?.id) > sizeOrder.indexOf(image2Size?.id)) {\n return 1;\n }\n\n if (sizeOrder.indexOf(image1Size?.id) < sizeOrder.indexOf(image2Size?.id)) {\n return -1;\n }\n\n // Sort images by format\n if (formatOrder.indexOf(image1Format) > formatOrder.indexOf(image2Format)) {\n return 1;\n }\n\n if (formatOrder.indexOf(image1Format) < formatOrder.indexOf(image2Format)) {\n return -1;\n }\n\n return 0;\n };\n\nexport const getImageLocaleDirectory = (locale, defaultDirectory) => {\n if (!locale) {\n return defaultDirectory;\n }\n\n return Object.values(LOCALE).includes(locale) ? locale : LOCALE.enUS;\n};\n\nexport const getImageLocale = (locale) => {\n if (!locale) {\n return null;\n }\n\n return Object.values(LOCALE).includes(locale) ? locale : LOCALE.enUS;\n};\n\nexport default {\n getImageLocaleDirectory,\n getImageLocale,\n sortImagesBySizeAndFormat\n};\n","import { useEffect } from 'react';\nimport { useSafeState } from '../use-safe-state';\nimport {\n DEFAULT_LOCALIZED_IMAGES_SIZES,\n DEFAULT_LOCALIZED_IMAGES_FORMATS,\n DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS,\n DEFAULT_LOCALIZED_IMAGES_DIRECTORY,\n DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER,\n DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER\n} from './constants';\nimport {\n getImageLocale,\n getImageLocaleDirectory,\n sortImagesBySizeAndFormat\n} from './helpers';\n\n/**\n * This hook accepts a 'key' and additional optional params and returns an array of localized image assets.\n * For each image asset a callback is called to load the asset.\n * @param {Object} params\n * @param {string} params.key - string representing collection of image files e.g. 'Strava.com-Home-Screen1'\n * @param {string} params.locale - locale to use in filename / filepath e.g. 'de-DE' (optional, if none provided, defaults to 'defaultDirectory')\n * @param {Array=} params.sizes - sizes to use for a given asset. e.g. [{ id: 'lg', value: 'large', minVw: '1200px' }, { id: 'md', value: 'medium', minVw: '992px' }]\n * @param {Array=} params.formats - formats to use for a given asset. e.g. ['webp', 'png']\n * @param {Array=} params.resolutions - resolutions to use for a given asset e.g. ['1x', '2x']\n * @param {string=} params.defaultDirectory - directory to use if no locale provided. Defaults to 'shared'\n * @param {Function=} params.imageImportCallback - Callback function; called for each image instance. Params passed: imageLocaleDirectory, imageKey, imageSize, imageFormat, imageResolution, imageLocale\n * @param {Function=} params.logError - Error handling function\n * @returns {Array} images\n */\n\nexport const useLocalizedImages = ({\n key,\n locale,\n sizes = DEFAULT_LOCALIZED_IMAGES_SIZES,\n formats = DEFAULT_LOCALIZED_IMAGES_FORMATS,\n resolutions = DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS,\n defaultDirectory = DEFAULT_LOCALIZED_IMAGES_DIRECTORY,\n imageImportCallback = () => {},\n logError\n}) => {\n const [images, setImages] = useSafeState([]);\n\n useEffect(() => {\n // Import asset from dynamic filepath\n const importImage = async (imageData) => {\n try {\n return imageImportCallback(imageData);\n } catch (error) {\n logError(new Error(`Error in imageImportCallback, Error: ${error}`));\n return null;\n }\n };\n\n const initImages = async () => {\n sizes.forEach((size) => {\n formats.forEach((format) => {\n resolutions.forEach(async (resolution) => {\n // Import file\n const file = await importImage({\n imageLocaleDirectory: getImageLocaleDirectory(\n locale,\n defaultDirectory\n ),\n imageKey: key,\n imageSize: size,\n imageFormat: format,\n imageResolution: resolution,\n imageLocale: getImageLocale(locale)\n });\n\n if (file) {\n // Update state with new image\n setImages((prevImages) => [\n ...prevImages,\n { size, format, resolution, file }\n ]);\n }\n });\n });\n });\n };\n\n initImages();\n }, [\n key,\n locale,\n formats,\n sizes,\n resolutions,\n imageImportCallback,\n logError,\n defaultDirectory,\n setImages\n ]);\n\n // Note: Sorting the images before returning as the order is not guranteed due to async import operations.\n // Order is important for use cases such as tags within elements\n return images.sort(\n sortImagesBySizeAndFormat(\n DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER,\n DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER\n )\n );\n};\n\nexport default useLocalizedImages;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nconst Badge = ({\n badge,\n imgTagFallbackConfig = { size: 'md', format: 'png', resolution: '1x' },\n onClick\n}) => {\n const [sources, setSources] = useState({});\n const [fallbackImgSrc, setFallbackImgSrc] = useState(null);\n const { id, url, images, isLazy, alt } = badge;\n\n useEffect(() => {\n const getSourceData = () => {\n const imgWebp1x = images.find(\n (image) => image.resolution === '1x' && image.format === 'webp'\n )?.file;\n const imgWebp2x = images.find(\n (image) => image.resolution === '2x' && image.format === 'webp'\n )?.file;\n const imgPng1x = images.find(\n (image) => image.resolution === '1x' && image.format === 'png'\n )?.file;\n const imgPng2x = images.find(\n (image) => image.resolution === '2x' && image.format === 'png'\n )?.file;\n\n return {\n ...((imgWebp1x || imgWebp2x) && {\n webp: [\n ...(imgWebp1x ? [`${imgWebp1x} 1x`] : []),\n ...(imgWebp2x ? [`${imgWebp2x} 2x`] : [])\n ].join(', ')\n }),\n ...((imgPng1x || imgPng2x) && {\n png: [\n ...(imgPng1x ? [`${imgPng1x} 1x`] : []),\n ...(imgPng2x ? [`${imgPng2x} 2x`] : [])\n ].join(', ')\n })\n };\n };\n\n const sourceData = getSourceData();\n\n setSources(sourceData);\n }, [images]);\n\n useEffect(() => {\n if (!fallbackImgSrc) {\n const defaultImage = images.find(\n (image) =>\n image.resolution === imgTagFallbackConfig.resolution &&\n image.format === imgTagFallbackConfig.format &&\n image.size.id === imgTagFallbackConfig.size\n );\n\n if (defaultImage?.file) {\n setFallbackImgSrc(defaultImage.file);\n }\n }\n }, [images, imgTagFallbackConfig, fallbackImgSrc]);\n\n return (\n onClick(id)} data-cy={id}>\n \n {Object.entries(sources).map(([key, value]) => (\n \n ))}\n \n \n \n );\n};\n\nBadge.propTypes = {\n badge: PropTypes.shape({\n id: PropTypes.string.isRequired,\n url: PropTypes.string,\n images: PropTypes.arrayOf(\n PropTypes.shape({\n file: PropTypes.string,\n format: PropTypes.string,\n resolution: PropTypes.string,\n size: PropTypes.shape({\n id: PropTypes.string,\n value: PropTypes.string,\n minVw: PropTypes.string\n })\n })\n ),\n isLazy: PropTypes.bool,\n alt: PropTypes.string\n }).isRequired,\n imgTagFallbackConfig: PropTypes.shape({\n size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg']),\n format: PropTypes.oneOf(['png', 'webp']),\n resolution: PropTypes.oneOf(['1x', '2x'])\n }),\n onClick: PropTypes.func.isRequired\n};\n\nBadge.defaultProps = {\n imgTagFallbackConfig: undefined\n};\n\nexport default Badge;\n","export const APP_STORE_BADGE_SIZES = [{ id: 'md', value: '', minVw: '0px' }];\n\nexport const APP_STORES = Object.freeze({\n google: 'google',\n apple: 'apple',\n unknown: 'unknown'\n});\n","import {\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS\n} from '@strava/constants/src/appConstants';\nimport { isString } from 'lodash-es';\nimport camelCase from 'lodash-es/camelCase';\nimport snakeCase from 'lodash-es/snakeCase';\nimport isObject from 'lodash-es/isObject';\nimport {\n CamelCasedProperties,\n CamelCasedPropertiesDeep,\n SnakeCasedPropertiesDeep\n} from 'type-fest';\n\nexport const generateRandomId = () => Math.random().toString(36).substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nexport const titleize = (sentence: string) => {\n return sentence\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(firstName.substring(0, maxLength - 4))}... ${lastName\n .charAt(0)\n .toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\n/**\n * Checks to see if device is mobile\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {boolean} - true if the device is mobile\n */\nexport const isMobile = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n // ref - https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_tablet_or_desktop\n return userAgent.toLowerCase().includes('mobi');\n }\n return false;\n};\n\n/**\n * Determines the OS for mobile devices\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['android', 'ipad', 'iphone'] or null for unknown\n */\nexport const getMobileOS = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Android')) {\n return MOBILE_OS.android;\n }\n if (userAgent.includes('iPad')) {\n return MOBILE_OS.iPad;\n }\n if (userAgent.includes('iPhone')) {\n return MOBILE_OS.iPhone;\n }\n }\n return null;\n};\n\n/**\n * Determines, in a limited fashion, the browser according to the user agent.\n * NOTE: UAs are notoriously difficult to parse. This is meant as a bare-bones, noncomprehensive parser,\n * based on https://www.whatismybrowser.com/guides/the-latest-user-agent/.\n *\n * The order of conditionals is important, bc some Chrome & Firefox UAs include 'Safari', too.\n * Some Edge UAs may be recognized as Chrome for now, since they can include 'Chrome'. We don't\n * officially support Edge (yet?).\n *\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['chrome', 'firefox', 'safari'] or null for unknown/unsupported browser\n */\nexport const getBrowser = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Chrome') || userAgent.includes('CriOS')) {\n return SUPPORTED_BROWSERS.chrome;\n }\n if (userAgent.includes('Firefox') || userAgent.includes('FxiOS'))\n return SUPPORTED_BROWSERS.firefox;\n if (userAgent.includes('Safari')) {\n return SUPPORTED_BROWSERS.safari;\n }\n }\n\n return null;\n};\n\n/**\n * Universal links are determined by the paths described in `apple-app-site-association` in active.\n * @param {string} pathname - window.location.pathname or nextjs equivalent\n * @returns {boolean} - whether the pathname string matches\n */\nexport const isUniversalLinkPage = (pathname: string) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path: string) => {\n const pathWithoutAsterisk = path.replace('/*', '');\n return pathname.startsWith(pathWithoutAsterisk);\n });\n }\n return false;\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (\n photoUrlHash: Record\n) => {\n if (!isObject(photoUrlHash)) {\n return '';\n }\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\n/**\n * Immutably merges a payload into an item in an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to update\n * @param {object} payload - the value to merge into the matched item\n * @param {object} options\n * @param {string} [options.idName=id] - the key of the unique identifier\n * @param {bool} [options.upsert=false] - if true, will insert the payload into the array as a new item if no matching item is found\n * @return {array} - A copy of the original array with the matching item updated\n */\nexport function arrayUpdateItemById(\n array: T[],\n id: string | number,\n payload: Partial,\n { idName, upsert }: { idName?: keyof T; upsert?: boolean } = {}\n): T[] {\n let itemFound = false;\n const property = idName || ('id' as keyof T);\n const mappedArray = array.map((item) => {\n itemFound = itemFound || item[property] === id;\n return item[property] === id ? { ...item, ...payload } : item;\n });\n\n return itemFound || !upsert ? mappedArray : ([...array, payload] as T[]);\n}\n\n/**\n * Immutably removes an item from an array by index\n * @param {array} array\n * @param {number} index - the index of the item to remove\n * @return {array} - A copy of the original array with the matching item removed\n */\nexport function arrayRemoveByIndex(array: T[], index: number): T[] {\n return index === -1\n ? array\n : [...array.slice(0, index), ...array.slice(index + 1)];\n}\n\n/**\n * Immutably removes an item from an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to remove\n * @param {string} [idName=id] - the key of the unique identifier\n * @return {array} - A copy of the original array with the matching item removed\n */\n\nexport function arrayRemoveItemById(\n array: T[],\n propertyValue: string | number,\n idName = 'id'\n): T[] {\n const index = array.findIndex(\n (item) => item[idName as keyof T] === propertyValue\n );\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n `${string.charAt(0).toUpperCase()}${string.slice(1)}`;\n\n/**\n * @description Converts Object keys from string of any case to camelCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToCamel(\n object: T,\n isShallow: true\n): CamelCasedProperties;\nexport function convertKeysToCamel(\n object: T,\n isShallow?: false\n): CamelCasedPropertiesDeep;\nexport function convertKeysToCamel(object: T, isShallow?: boolean) {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToCamel(item)\n ) as typeof isShallow extends true\n ? CamelCasedProperties\n : CamelCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = camelCase(k);\n const value = object[k as keyof typeof object] as CamelCasedProperties;\n\n if (!isShallow && isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToCamel(value)\n };\n }\n\n if (!isShallow && Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToCamel(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as CamelCasedProperties);\n }\n\n return object as typeof isShallow extends true\n ? CamelCasedProperties\n : CamelCasedPropertiesDeep;\n}\n\n/**\n * @description Converts Object keys from string of any case to snakeCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToSnake(object: T): SnakeCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToSnake(item)\n ) as SnakeCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = snakeCase(k);\n const value = object[\n k as keyof typeof object\n ] as SnakeCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToSnake(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToSnake(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as SnakeCasedPropertiesDeep);\n }\n\n return object as SnakeCasedPropertiesDeep;\n}\n\n/**\n * Checks to see if localStorage is available\n *\n * @return {boolean} - true if localStorage can be used\n */\nexport const isLocalStorageAvailable = () => {\n const test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Appends querystring params to a URL\n *\n * @param {string} originalUrl - The original URL to append params to\n * @param {object} params - An object of key value parameters to append to URL\n * @return {string} - URL with params appended\n */\nexport const addParamsToURL = (originalUrl: string, params: object) => {\n const url = new URL(originalUrl);\n\n Object.entries(params).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n\n return url.toString();\n};\n\n/**\n * Some of our logged-out pages have a full-screen image background.\n * This util helps with setting the background image on the `` element, and\n * just requires passing in the image to be used.\n * @param {string} background\n */\nexport const setFullScreenBackgroundImage = (background: string) => {\n // apply background image directly to ``\n const body = document.querySelector('body');\n if (body) {\n body.style.setProperty('background-image', `url(${background})`);\n body.style.setProperty('background-size', 'cover');\n body.style.setProperty('background-position', 'center');\n }\n};\n\n/**\n * Uses the host to determine if a page is being loaded in staging or localhost.\n *\n * This util function is helpful for apps that run on nextJS which has node process\n * defined as production in both staging and production.\n *\n * @param host - host name\n * @returns {boolean} - true if app is running in staging or local\n */\nexport const isStagingOrLocal = (host: string) =>\n ['staging', 'localhost'].some((_host) => host.includes(_host));\n\n/**\n * Adds an id property to each object in an array. Uses the object's index as the value for the id\n * @param {array} objects - An array of objects\n * @return {array} - A copy of the original array with id property added to each object\n */\nexport const arrayAddIndexAsId = (objects: Array) =>\n objects.map((object, index) => ({ ...object, id: index }));\n\n/**\n * Uses the host to determine if the protocol should be http or https\n *\n * @param host - host name\n * @returns {string} - Protocol (http / https)\n */\nexport const getProtocolForHost = (host: string) => {\n return host.includes('localhost') ? 'http' : 'https';\n};\n\n/**\n * Constructs the site root URL\n *\n * @param host - host name\n * @returns {string} - Root URL with protocol\n */\nexport const getRootUrl = (host: string) => {\n return `${getProtocolForHost(host)}://${host}`;\n};\n\n/**\n * Constructs the athlete URL for pro and non-pro athletes, i.e.\n * https://www.strava.com/athletes/[athlete_id] or\n * https://www.strava.com/pros/[athlete_id]\n *\n * @param isPro - boolean indicating if the athlete is a pro or not\n * @param athleteId - athlete unique identifier\n * @param host - host name\n * @returns {string} - Root URL with protocol\n */\nexport const getAthleteUrl = (\n isPro: boolean,\n athleteId: number,\n host: string\n) => {\n return `${getProtocolForHost(host)}://${host}/${\n isPro ? 'pros' : 'athletes'\n }/${athleteId.toString()}`;\n};\n","import { getMobileOS } from '@strava/utils';\nimport { MOBILE_OS } from '@strava/constants/src/appConstants';\nimport { APP_STORES } from './constants';\n\nexport const mobileOsToAppStore = (userAgent) => {\n switch (getMobileOS(userAgent)) {\n case MOBILE_OS.android:\n return APP_STORES.google;\n case MOBILE_OS.iPhone:\n case MOBILE_OS.iPad:\n return APP_STORES.apple;\n default:\n return APP_STORES.unknown;\n }\n};\n","import React, { useCallback } from 'react';\nimport { useLocalizedImages } from '@strava/react-hooks/src/use-localized-images';\nimport { useStravaBranch } from '@strava/container-context';\nimport Badge from './components/Badge';\nimport { APP_STORES, APP_STORE_BADGE_SIZES } from './constants';\nimport { mobileOsToAppStore } from './helpers';\n\nimport {\n useStravaErrorLogging,\n useStravaTranslations\n} from '@strava/container-context';\n\nconst AppStoreBadges = ({ onBadgeClick, className, userAgent }) => {\n const { t, getLanguage } = useStravaTranslations();\n const locale = getLanguage();\n\n const { logError } = useStravaErrorLogging();\n const { appLink } = useStravaBranch();\n\n // Note: Example path (locale provided) - './media/de-DE/app-store-de-DE@1x.png`\n const importBadgeImage = useCallback(\n async ({\n imageLocaleDirectory,\n imageKey,\n imageFormat,\n imageResolution,\n imageLocale\n }) => {\n // Create dynamic path to file\n const path = `${imageLocaleDirectory}/${imageKey}-${\n imageLocale ? `${imageLocale}` : ''\n }@${imageResolution}.${imageFormat}`;\n\n try {\n // Import file\n return (\n await import(\n /* webpackMode: \"eager\" */\n /* webpackExports: [\"default\", \"named\"] */\n `./media/${path}`\n )\n ).default;\n } catch (error) {\n logError(error);\n return null;\n }\n },\n [logError]\n );\n\n const appleBadgeImages = useLocalizedImages({\n key: 'app-store',\n locale,\n imageImportCallback: importBadgeImage,\n logError,\n sizes: APP_STORE_BADGE_SIZES\n });\n\n const googleBadgeImages = useLocalizedImages({\n key: 'play-store',\n locale,\n imageImportCallback: importBadgeImage,\n logError,\n sizes: APP_STORE_BADGE_SIZES\n });\n\n const appStore = mobileOsToAppStore(userAgent);\n\n return (\n
    \n {[APP_STORES.apple, APP_STORES.unknown].includes(appStore) && (\n
  • \n \n
  • \n )}\n {[APP_STORES.google, APP_STORES.unknown].includes(appStore) && (\n
  • \n \n
  • \n )}\n
\n );\n};\n\nexport default AppStoreBadges;\n","// extracted by mini-css-extract-plugin\nexport default {\"socialLink\":\"SocialLink--socialLink--rTG0p\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './SocialLink.module.scss';\n\nconst SocialLink = ({ url, image, altText, target, rel }) => {\n return (\n \n {altText}\n \n );\n};\n\nSocialLink.propTypes = {\n url: PropTypes.string.isRequired,\n image: PropTypes.string.isRequired,\n altText: PropTypes.string.isRequired,\n target: PropTypes.string,\n rel: PropTypes.string\n};\n\nSocialLink.defaultProps = {\n target: '_blank',\n rel: 'noopener noreferrer'\n};\n\nexport default SocialLink;\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"Footer--footer--EgYdV\",\"cpraComplianceCta\":\"Footer--cpraComplianceCta--1ce56\",\"container\":\"Footer--container--PvIjq\",\"privacySocial\":\"Footer--privacySocial--3tKQS\",\"social\":\"Footer--social--nZoE2\",\"links\":\"Footer--links--mJhp8\",\"highlight\":\"Footer--highlight--xQw5O\"};","import React, { useMemo } from 'react';\nimport StravaLogo from '@strava/ui/StravaLogo';\nimport { EXPERIMENT_COHORTS } from '@strava/constants/src/appConstants';\nimport CPRAComplianceCTA from '@strava/cpra-compliance-cta';\nimport clsx from '@strava/ui/clsx';\nimport AppStoreBadges from '@strava/shared-ui/src/AppStoreBadges';\nimport SocialLink from './components/SocialLink';\nimport { useFrontDoorsPageContainerContext } from '../../state/FrontDoorsPageContainerContext';\n\nimport socialTwitterImage from '../../media/social_tw.svg';\nimport socialYouTubeImage from '../../media/social_yt.svg';\nimport socialInstagramImage from '../../media/social_ig.svg';\nimport socialLinkedInImage from '../../media/social_li.svg';\nimport socialFacebookImage from '../../media/social_fb.svg';\n\nimport styles from './Footer.module.scss';\n\nconst Footer = () => {\n const { t, state, onFooterAppStoreBadgeClick } =\n useFrontDoorsPageContainerContext();\n const { cohort, dataSharingOptedOut, cpraI18nPrefix, menuConfig, userAgent } =\n state;\n const { showLoginOptionOnly } = menuConfig;\n\n const socialLinks = useMemo(\n () => [\n {\n id: 1,\n url: 'https://twitter.com/strava',\n image: socialTwitterImage,\n altText: t('footer.social.alt.twitter')\n },\n {\n id: 2,\n url: 'https://www.youtube.com/stravainc',\n image: socialYouTubeImage,\n altText: t('footer.social.alt.youtube')\n },\n {\n id: 3,\n url: 'https://www.instagram.com/strava/',\n image: socialInstagramImage,\n altText: t('footer.social.alt.instagram')\n },\n {\n id: 4,\n url: 'https://www.linkedin.com/company/strava-inc.',\n image: socialLinkedInImage,\n altText: t('footer.social.alt.linkedin')\n },\n {\n id: 5,\n url: 'https://www.facebook.com/Strava',\n image: socialFacebookImage,\n altText: t('footer.social.alt.facebook')\n }\n ],\n [t]\n );\n\n // TODO - cleanup after experiment https://strava.atlassian.net/browse/ACQN-301\n const signUpLinkCopy = () => {\n // join_us -> 'Join For Free'\n const key =\n cohort === EXPERIMENT_COHORTS.variantA\n ? 'header.join_now'\n : 'footer.links.join_us';\n return t(key);\n };\n\n return (\n \n );\n};\n\nexport default Footer;\n","export const UPDATE_WINDOW_SCROLL_TOP = 'UPDATE_WINDOW_SCROLL_TOP';\n\nexport default {\n UPDATE_WINDOW_SCROLL_TOP\n};\n","import { UPDATE_WINDOW_SCROLL_TOP } from './FrontDoorsPageContainer.actions';\n\nexport const reducer = (state, action) => {\n switch (action.type) {\n case UPDATE_WINDOW_SCROLL_TOP: {\n const { windowScrollTop } = action.payload;\n return {\n ...state,\n windowScrollTop\n };\n }\n default: {\n return { ...state };\n }\n }\n};\n\nexport default { reducer };\n","// extracted by mini-css-extract-plugin\nexport default {\"body\":\"front-doors-page-container-ui--body--j-TLS\"};","import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef\n} from 'react';\nimport PropTypes from 'prop-types';\nimport {\n useStravaAnalytics,\n useStravaErrorLogging,\n useStravaTranslations\n} from '@strava/container-context';\nimport { useWindowScrollTop } from '@strava/react-hooks/src/use-window-scroll-top';\nimport { EXPERIMENT_COHORTS } from '@strava/constants/src/appConstants';\nimport clsx from '@strava/ui/clsx';\nimport Header from './components/Header';\nimport Footer from './components/Footer';\nimport { FrontDoorsPageContainerContextProvider } from './state/FrontDoorsPageContainerContext';\nimport { reducer } from './state/FrontDoorsPageContainer.reducer';\nimport { UPDATE_WINDOW_SCROLL_TOP } from './state/FrontDoorsPageContainer.actions';\nimport styles from './FrontDoorsPageContainer.module.scss';\n\n/**\n *\n * @param {string} cohort - Defaults to control. Front-door pages can only have one experiment\n * running on them at a time because we depend on snowplow cookies for cohorting. This\n * prop is built-in to be reusable for any pages that need to show different treatments based\n * on the cohort in which an athlete is placed.\n *\n * @param {object} authorizationUrls - (optional) urls to be used for facebook, google, apple and email sign-up\n * options\n *\n * @param {boolean} showSmartBanner - Controls whether the smartbanner should be shown on the mobile-web version of the page.\n * Default is false (hide).\n *\n * @param {string} userAgent - Request user agent. This is required for SSR (nextJS apps).\n *\n * @param {string} cpraI18nPrefix - (optional) path to 'cpra_compliance_cta' translations, if different from just `legal` (as is the\n * case for when the FrontDoorsPageContainer is used in active instead of a nextjs app)\n *\n * @param {boolean} menuConfig.showLoginOptionOnly - (optional) true if we want to hide the `register` options, such as on the `/register` page.\n * Will also adjust styling for the login option so it gets primary/highlighted styling. Defaults to false.\n *\n * @param {function} onScreenEnter - (optional) Callback function, called on screen enter\n *\n * @param {function} onDesktopHeaderLogoClick - (optional) Callback function, called when athlete clicks on Strava logo on desktop header\n *\n * @param {function} onDesktopHeaderLoginBtnClick - (optional) Callback function, called when athlete clicks on 'Login' on desktop header\n *\n * @param {function} onDesktopHeaderSignupBtnClick - (optional) Callback function, called when athlete clicks on 'Join for Free' on desktop header\n *\n * @param {function} onMobileHeaderLogoClick - (optional) Callback function, called when athlete clicks on Strava logo on mobile header\n *\n * @param {function} onMobileHeaderSignupBtnClick - (optional) Callback function, called when athlete clicks on 'Get the App' on mobile header\n *\n * @param {function} onMobileHeaderMenuOpen - (optional) Callback function, called when athlete opens the menu on mobile header\n *\n * @param {function} onMobileHeaderMenuClose - (optional) Callback function, called when athlete closes the menu on mobile header\n *\n * @param {function} onMobileHeaderMenuLoginBtnClick - (optional) Callback function, called when athlete clicks on 'Login' in the menu on mobile header\n *\n * @param {function} onMobileHeaderMenuSignupBtnClick - (optional) Callback function, called when athlete clicks on 'Get the App' in the menu on mobile header\n *\n * @param {function} onFooterAppStoreBadgeClick - (optional) Callback function, called when athlete clicks on App store badges on footer\n *\n */\nconst FrontDoorsPageContainer = ({\n children,\n locale,\n page,\n category,\n showSmartBanner,\n dataSharingOptedOut,\n cohort,\n cpraI18nPrefix,\n userAgent,\n className,\n header,\n footer,\n menuConfig,\n onScreenEnter,\n onDesktopHeaderLogoClick,\n onDesktopHeaderLoginBtnClick,\n onDesktopHeaderSignupBtnClick,\n onMobileHeaderLogoClick,\n onMobileHeaderSignupBtnClick,\n onMobileHeaderMenuOpen,\n onMobileHeaderMenuClose,\n onMobileHeaderMenuLoginBtnClick,\n onMobileHeaderMenuSignupBtnClick,\n onFooterAppStoreBadgeClick\n}) => {\n const { track: _track } = useStravaAnalytics();\n const { t: _t } = useStravaTranslations();\n const noop = () => {};\n\n const { showHeader } = header;\n const { showFooter } = footer;\n\n const {\n logError,\n setTags = noop,\n setContext = noop\n } = useStravaErrorLogging();\n\n const [windowScrollTop] = useWindowScrollTop();\n\n // override translations helper function\n const t = useMemo(\n () => (key, params) =>\n _t(`front_doors_page_container_ui.${key}`, { ...params }),\n [_t]\n );\n\n const headerRef = useRef();\n\n // override analytics helper function\n const track = useCallback(\n (fields = {}) => {\n _track({\n category,\n page,\n ...fields,\n properties: {\n ...fields.properties\n }\n });\n },\n [_track, category, page]\n );\n\n const [state, dispatch] = useReducer(reducer, {\n category,\n cohort,\n headerRef,\n locale,\n page,\n userAgent,\n windowScrollTop,\n dataSharingOptedOut,\n cpraI18nPrefix,\n header,\n footer,\n menuConfig,\n showSmartBanner\n });\n\n const providerState = useMemo(\n () => ({\n state,\n dispatch,\n track,\n t,\n logError,\n onScreenEnter,\n onDesktopHeaderLogoClick,\n onDesktopHeaderLoginBtnClick,\n onDesktopHeaderSignupBtnClick,\n onMobileHeaderLogoClick,\n onMobileHeaderSignupBtnClick,\n onMobileHeaderMenuOpen,\n onMobileHeaderMenuClose,\n onMobileHeaderMenuLoginBtnClick,\n onMobileHeaderMenuSignupBtnClick,\n onFooterAppStoreBadgeClick\n }),\n [\n logError,\n state,\n t,\n track,\n onScreenEnter,\n onDesktopHeaderLogoClick,\n onDesktopHeaderLoginBtnClick,\n onDesktopHeaderSignupBtnClick,\n onMobileHeaderLogoClick,\n onMobileHeaderSignupBtnClick,\n onMobileHeaderMenuOpen,\n onMobileHeaderMenuClose,\n onMobileHeaderMenuLoginBtnClick,\n onMobileHeaderMenuSignupBtnClick,\n onFooterAppStoreBadgeClick\n ]\n );\n\n // screen enter\n // - track analytics\n // - set container-level tags and context for sentry error tracking and performance monitoring\n useEffect(() => {\n setTags({\n 'frontDoorsPageContainer.locale': locale,\n 'frontDoorsPageContainer.cohort': cohort,\n 'frontDoorsPageContainer.page': page\n });\n setContext('frontDoorsPageContainer', {\n showSmartBanner,\n category\n });\n }, [category, cohort, locale, showSmartBanner, page, setContext, setTags]);\n\n useEffect(() => {\n onScreenEnter();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []); // Note: Empty [] required to ensure that `onScreenEnter` only runs once\n\n useEffect(() => {\n dispatch({ type: UPDATE_WINDOW_SCROLL_TOP, payload: { windowScrollTop } });\n }, [windowScrollTop]);\n\n return (\n \n
\n {showHeader &&
}\n {children}\n {showFooter &&
}\n
\n
\n );\n};\n\nFrontDoorsPageContainer.defaultProps = {\n locale: null,\n showSmartBanner: false,\n cohort: EXPERIMENT_COHORTS.control,\n userAgent:\n typeof window === 'undefined' ? null : window?.navigator?.userAgent,\n className: null,\n cpraI18nPrefix: 'legal',\n menuConfig: {\n showLoginOptionOnly: false\n },\n header: {\n showHeader: true\n },\n footer: {\n showFooter: true\n },\n onScreenEnter: () => {},\n onDesktopHeaderLogoClick: () => {},\n onDesktopHeaderLoginBtnClick: () => {},\n onDesktopHeaderSignupBtnClick: () => {},\n onMobileHeaderLogoClick: () => {},\n onMobileHeaderSignupBtnClick: () => {},\n onMobileHeaderMenuOpen: () => {},\n onMobileHeaderMenuClose: () => {},\n onMobileHeaderMenuLoginBtnClick: () => {},\n onMobileHeaderMenuSignupBtnClick: () => {},\n onFooterAppStoreBadgeClick: () => {}\n};\n\nFrontDoorsPageContainer.propTypes = {\n children: PropTypes.node.isRequired,\n locale: PropTypes.string,\n page: PropTypes.string.isRequired,\n category: PropTypes.string.isRequired,\n showSmartBanner: PropTypes.bool,\n dataSharingOptedOut: PropTypes.bool.isRequired,\n cpraI18nPrefix: PropTypes.string,\n cohort: PropTypes.oneOf(Object.values(EXPERIMENT_COHORTS)),\n userAgent: PropTypes.string,\n className: PropTypes.string,\n menuConfig: PropTypes.shape({\n showLoginOptionOnly: PropTypes.bool\n }),\n header: PropTypes.shape({\n showHeader: PropTypes.bool\n }),\n footer: PropTypes.shape({\n showFooter: PropTypes.bool\n }),\n onScreenEnter: PropTypes.func,\n onDesktopHeaderLogoClick: PropTypes.func,\n onDesktopHeaderLoginBtnClick: PropTypes.func,\n onDesktopHeaderSignupBtnClick: PropTypes.func,\n onMobileHeaderLogoClick: PropTypes.func,\n onMobileHeaderSignupBtnClick: PropTypes.func,\n onMobileHeaderMenuOpen: PropTypes.func,\n onMobileHeaderMenuClose: PropTypes.func,\n onMobileHeaderMenuLoginBtnClick: PropTypes.func,\n onMobileHeaderMenuSignupBtnClick: PropTypes.func,\n onFooterAppStoreBadgeClick: PropTypes.func\n};\n\nexport default FrontDoorsPageContainer;\n","/**\n * This helper function is intended for use with `FrontDoorsPageContainer`\n * It accepts an instance of `track`, an `appLink` and the optional parameter `additionalTrackProperties`\n * It returns default event handlers, each containing a `track` event with the relevant payload\n * These default event handlers can be overriden as required for custom use cases\n *\n * Example Usage:\n *\n * import { getDefaultEventHandlers } from '@strava/front-doors-page-container-ui';\n *\n * const additionalTrackProperties = { myAdditionalTrackProperty: 'my-additional-track-property-value' };\n * const myCustomOnScreenEnterCallback = () => { ... };\n *\n * const { appLink } = useStravaBranch();\n *\n * \n * {children}\n * \n *\n * @param {Function} track Track function (Required)\n * @param {String} appLink Branch link\n * @param {object} additionalTrackProperties object of properties to be added to `properties` within `track` events (Optional)\n * @returns {object} Object containing default event handlers\n *\n */\n\nconst getDefaultEventHandlers = (track, appLink, additionalTrackProperties) => {\n // Common track event used in `onDesktopHeaderLogoClick` and `onMobileHeaderLogoClick`\n const onHeaderLogoClickTrackEvent = () => {\n track({\n element: 'strava_logo',\n action: 'click',\n ...(additionalTrackProperties && {\n properties: additionalTrackProperties\n })\n });\n };\n\n return {\n // Called on screen enter\n onScreenEnter: () => {\n track({\n action: 'screen_enter',\n ...(additionalTrackProperties && {\n properties: additionalTrackProperties\n })\n });\n },\n\n // Called when athlete clicks on Strava logo on desktop header\n onDesktopHeaderLogoClick: () => {\n onHeaderLogoClickTrackEvent();\n },\n\n // Called when athlete clicks on 'Login' button on desktop header\n onDesktopHeaderLoginBtnClick: () => {\n track({\n element: 'login_header',\n action: 'click',\n ...(additionalTrackProperties && {\n properties: additionalTrackProperties\n })\n });\n },\n\n // Called when athlete clicks on the 'Join for Free' button on desktop header\n onDesktopHeaderSignupBtnClick: () => {\n track({\n element: 'start_signup',\n action: 'click',\n properties: {\n signup_copy: 'join_header',\n ...additionalTrackProperties\n }\n });\n },\n\n // Called when athlete clicks on Strava logo on mobile header\n onMobileHeaderLogoClick: () => {\n onHeaderLogoClickTrackEvent();\n },\n\n // Called when athlete clicks on the 'Get the App' button on mobile header\n onMobileHeaderSignupBtnClick: () => {\n track({\n element: 'get_app',\n action: 'click',\n properties: {\n cta_copy: 'get_the_app_header',\n url: appLink,\n ...additionalTrackProperties\n }\n });\n },\n\n // Called when athlete opens the menu on mobile header\n onMobileHeaderMenuOpen: () => {\n track({\n element: 'open_menu',\n action: 'click',\n ...(additionalTrackProperties && {\n properties: additionalTrackProperties\n })\n });\n },\n\n // Called when athlete closes the menu on mobile header\n onMobileHeaderMenuClose: () => {\n track({\n element: 'close_menu',\n action: 'click',\n ...(additionalTrackProperties && {\n properties: additionalTrackProperties\n })\n });\n },\n\n // Called when athlete clicks on the 'Login' button in mobile menu\n onMobileHeaderMenuLoginBtnClick: () => {\n track({\n element: 'drawer_login_btn',\n action: 'click',\n ...(additionalTrackProperties && {\n properties: additionalTrackProperties\n })\n });\n },\n\n // Called when athlete clicks on the 'Get the App' button in mobile menu\n onMobileHeaderMenuSignupBtnClick: () => {\n track({\n element: 'get_app',\n action: 'click',\n properties: {\n cta_copy: 'get_the_app_drawer',\n url: appLink,\n ...additionalTrackProperties\n }\n });\n },\n\n // Called when athlete clicks on app store badges in footer\n onFooterAppStoreBadgeClick: (id) => {\n track({\n element: 'get_app',\n action: 'click',\n properties: {\n url: appLink,\n cta_copy: `${id}_app_store`,\n ...additionalTrackProperties\n }\n });\n }\n };\n};\n\nexport default getDefaultEventHandlers;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelCircleHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelCircleHighlightedMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelCircleHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelCircleHighlightedMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCheckCircleOnMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCheckCircleOnMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCheckCircleOnMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCheckCircleOnMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationWarningHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationWarningHighlightedMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationWarningHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationWarningHighlightedMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationInformationNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgNavigationInformationNormalMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationInformationNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationInformationNormalMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsCancelNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCancelNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsCancelNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsCancelNormalSmall;\n","import { useRef, useEffect } from 'react';\n\n/**\n * Declarative setInterval React hook.\n *\n * `useInterval` uses the same API as setInterval, but the arguments of this hook is \"dynamic\".\n * Set your `callback` function as the first argument and the `delay` as the second argument.\n * When passing `null` or `undefined` to the `delay` arg then it will stop/pause the interval.\n *\n * For implementation details explanation, why to use useInterval hook, and an example see Dan Abramov's blog post\n * 👀: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n * */\nexport const useInterval = (callback: Function, delay: number | null) => {\n const savedCallback = useRef(null);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n // If no delay then pause/stop the interval.\n // Delay of 0 is valid delay.\n if ((!delay && delay !== 0) || delay < 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current?.(), delay);\n // eslint-disable-next-line consistent-return\n return () => clearInterval(id);\n }, [delay]);\n};\n\nexport default useInterval;\n","type Value = string | number | boolean | undefined | null;\ntype MixObject = {\n [key: string]: boolean | Mix | undefined | null;\n};\ntype MixArray = Array;\ntype Mix = Value | MixObject | MixArray;\n\nfunction toVal(mix: Mix): string {\n let k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (!mix || mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport function clsx(..._args: Mix[]): string {\n let i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = toVal(tmp))) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n}\n\nexport default clsx;\n","import React, { forwardRef } from 'react';\n\ntype VisuallyHiddenProps = React.ComponentPropsWithoutRef<'span'>;\n\n// visually hidden styling comes from https://www.a11yproject.com/posts/how-to-hide-content/\nconst VisuallyHidden = forwardRef(\n ({ style, ...props }, ref) => {\n return (\n \n );\n }\n);\n\nexport default VisuallyHidden;\n","// extracted by mini-css-extract-plugin\nexport default {\"alert\":\"Alert--alert---e1bq\",\"alertInner\":\"Alert--alertInner--GJAKu\",\"hasError\":\"Alert--hasError--qsih4\",\"buttonError\":\"Alert--buttonError--Wfx3f\",\"hasWarning\":\"Alert--hasWarning--w9SId\",\"buttonWarning\":\"Alert--buttonWarning--WlwAG\",\"hasSuccess\":\"Alert--hasSuccess--PpwFt\",\"buttonSuccess\":\"Alert--buttonSuccess--uWpOg\",\"hasInfo\":\"Alert--hasInfo--4FYK0\",\"buttonInfo\":\"Alert--buttonInfo--cT1LS\",\"alertContent\":\"Alert--alertContent--JatNU\",\"alignLeft\":\"Alert--alignLeft--NqEBB\",\"alignCenter\":\"Alert--alignCenter--rN-YF\",\"alignRight\":\"Alert--alignRight--uy1mH\",\"indicatorIcon\":\"Alert--indicatorIcon--kwDf1\",\"closeButtonContainer\":\"Alert--closeButtonContainer--h4UG0\",\"button\":\"Alert--button--SaJal\",\"autoDismissBar\":\"Alert--autoDismissBar--7OZfY\",\"countdown\":\"Alert--countdown--fjx4g\",\"fadeIn\":\"Alert--fadeIn--v9wyH\",\"fadeOut\":\"Alert--fadeOut--9yRC9\",\"enterFadeOut\":\"Alert--enterFadeOut--evY6+\",\"newKudo\":\"Alert--newKudo--ZJLq6\"};","import React, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\n// import ReachAlert from '@reach/alert';\nimport {\n ActionsCancelCircleHighlightedMedium as ErrorIcon,\n ActionsCheckCircleOnMedium as SuccessIcon,\n NavigationWarningHighlightedMedium as WarningIcon,\n NavigationInformationNormalMedium as InfoIcon,\n ActionsCancelNormalSmall as CancelIcon\n} from '@strava/icons';\nimport { useInterval } from '@strava/react-hooks';\nimport { isTest } from '@strava/utils';\nimport clsx from '../clsx';\nimport VisuallyHidden from '../VisuallyHidden';\nimport styles from './Alert.module.scss';\n\nexport const AlertStatus = {\n ERROR: 'error',\n SUCCESS: 'success',\n WARNING: 'warning',\n INFO: 'info'\n} as const;\n\nexport type AlertStatusType = (typeof AlertStatus)[keyof typeof AlertStatus];\n\nexport type AlertStyleType =\n | 'hasError'\n | 'hasSuccess'\n | 'hasWarning'\n | 'hasInfo';\nexport type AlertButtonStyleType =\n | 'buttonError'\n | 'buttonSuccess'\n | 'buttonWarning'\n | 'buttonInfo';\n\nconst ALERT_DELAY = 8000;\n\nconst getAlertDetails = ({\n type,\n iconSize\n}: {\n type: AlertStatusType;\n iconSize: number;\n}): {\n indicatorIcon: ReactNode;\n messageType: AlertStatusType;\n alertStyle: AlertStyleType;\n buttonStyle: AlertButtonStyleType;\n} =>\n ({\n [AlertStatus.ERROR]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.ERROR,\n alertStyle: 'hasError' as const,\n buttonStyle: 'buttonError' as const\n },\n [AlertStatus.SUCCESS]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.SUCCESS,\n alertStyle: 'hasSuccess' as const,\n buttonStyle: 'buttonSuccess' as const\n },\n [AlertStatus.WARNING]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.WARNING,\n alertStyle: 'hasWarning' as const,\n buttonStyle: 'buttonWarning' as const\n },\n [AlertStatus.INFO]: {\n indicatorIcon: (\n \n ),\n messageType: AlertStatus.INFO,\n alertStyle: 'hasInfo' as const,\n buttonStyle: 'buttonInfo' as const\n }\n }[type]);\n\nconst fadeStyles = {\n enter: isTest() ? '' : 'fadeIn',\n exit: isTest() ? '' : 'fadeOut'\n};\n\nexport interface AlertProps extends ComponentPropsWithoutRef<'div'> {\n children: ReactNode;\n alertType?: AlertStatusType;\n autoDismiss?: boolean;\n autoDismissDelay?: number;\n className?: string;\n contentPosition?: 'left' | 'center' | 'right';\n hideCloseButton?: boolean;\n hideIcon?: boolean;\n iconSize?: number;\n onClose?: () => void;\n}\n\nexport const Alert = ({\n children,\n className,\n alertType = AlertStatus.ERROR,\n autoDismiss = false,\n autoDismissDelay = ALERT_DELAY,\n contentPosition = 'left',\n hideCloseButton = false,\n hideIcon = true,\n iconSize = 32,\n onClose = () => {},\n ...options\n}: AlertProps) => {\n const { indicatorIcon, messageType, alertStyle, buttonStyle } =\n getAlertDetails({ type: alertType, iconSize });\n const [fadeStyle, setFadeStyle] = useState(fadeStyles.enter);\n\n const handleOnClose = async () => {\n setFadeStyle(fadeStyles.exit);\n // eslint-disable-next-line no-unused-expressions\n !isTest() && (await new Promise((resolve) => setTimeout(resolve, 0)));\n onClose();\n };\n\n useInterval(\n () => {\n handleOnClose();\n },\n autoDismiss ? autoDismissDelay : null\n );\n\n return (\n \n
\n {/* Icon */}\n {!hideIcon && (\n
{indicatorIcon}
\n )}\n\n {/* Content */}\n \n {messageType}: \n
{children}
\n
\n\n {/* Close Button */}\n {!hideCloseButton && (\n
\n \n \n \n
\n )}\n \n\n {/* Auto Dismiss Progress */}\n {autoDismiss && (\n \n
\n
\n )}\n \n );\n};\n\nexport default Alert;\n","import { useState, useCallback } from 'react';\n\ninterface QueueOptions {\n initialValues?: T[];\n}\n\nexport interface QueueState {\n queue: T[];\n length: number;\n enqueue: (...items: T[]) => void;\n dequeue: () => void;\n updateQueue: (fn: (current: T[]) => T[]) => void;\n clearQueue: () => void;\n peek: () => T | undefined;\n}\n\nexport const useQueue = ({\n initialValues = []\n}: QueueOptions = {}): QueueState => {\n const [queue, setState] = useState(initialValues);\n\n /**\n * Enqueue; Adds item to queue.\n */\n const enqueue = useCallback((...items: T[]) => {\n setState((current) => [...current, ...items]);\n }, []);\n\n /**\n * Dequeue; Removes first item in queue.\n */\n const dequeue = useCallback(() => {\n // Immutable solution to remove first element in array.\n setState((current) => current.slice(1));\n }, []);\n\n /**\n * Update function to allow for more granular control of updating the queue.\n * The `update` function accepts a callback fn where the first arg is the\n * current queue state that we can then manipulate. See tests for examples.\n * */\n const updateQueue = useCallback(\n (fn: (current: T[]) => T[]) => setState((current) => fn([...current])),\n []\n );\n\n /**\n * Remove all items from queue.\n */\n const clearQueue = useCallback(() => setState(() => []), []);\n\n /**\n * Returns the first item in the queue.\n */\n const peek = useCallback(() => {\n if (queue.length > 0) {\n return queue[0];\n }\n\n return undefined;\n }, [queue]);\n\n return {\n queue,\n length: queue.length,\n enqueue,\n dequeue,\n updateQueue,\n clearQueue,\n peek\n };\n};\n\nexport default useQueue;\n","import {\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS\n} from '@strava/constants/src/appConstants';\nimport { isString } from 'lodash-es';\nimport camelCase from 'lodash-es/camelCase';\nimport snakeCase from 'lodash-es/snakeCase';\nimport isObject from 'lodash-es/isObject';\nimport { CamelCasedPropertiesDeep, SnakeCasedPropertiesDeep } from 'type-fest';\n\nexport const generateRandomId = () => Math.random().toString(36).substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nexport const titleize = (sentence: string) => {\n return sentence\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(firstName.substring(0, maxLength - 4))}... ${lastName\n .charAt(0)\n .toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\n/**\n * Checks to see if device is mobile\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {boolean} - true if the device is mobile\n */\nexport const isMobile = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n // ref - https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_tablet_or_desktop\n return userAgent.toLowerCase().includes('mobi');\n }\n return false;\n};\n\n/**\n * Determines the OS for mobile devices\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['android', 'ipad', 'iphone'] or null for unknown\n */\nexport const getMobileOS = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Android')) {\n return MOBILE_OS.android;\n }\n if (userAgent.includes('iPad')) {\n return MOBILE_OS.iPad;\n }\n if (userAgent.includes('iPhone')) {\n return MOBILE_OS.iPhone;\n }\n }\n return null;\n};\n\n/**\n * Determines, in a limited fashion, the browser according to the user agent.\n * NOTE: UAs are notoriously difficult to parse. This is meant as a bare-bones, noncomprehensive parser,\n * based on https://www.whatismybrowser.com/guides/the-latest-user-agent/.\n *\n * The order of conditionals is important, bc some Chrome & Firefox UAs include 'Safari', too.\n * Some Edge UAs may be recognized as Chrome for now, since they can include 'Chrome'. We don't\n * officially support Edge (yet?).\n *\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['chrome', 'firefox', 'safari'] or null for unknown/unsupported browser\n */\nexport const getBrowser = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Chrome') || userAgent.includes('CriOS')) {\n return SUPPORTED_BROWSERS.chrome;\n }\n if (userAgent.includes('Firefox') || userAgent.includes('FxiOS'))\n return SUPPORTED_BROWSERS.firefox;\n if (userAgent.includes('Safari')) {\n return SUPPORTED_BROWSERS.safari;\n }\n }\n\n return null;\n};\n\n/**\n * Universal links are determined by the paths described in `apple-app-site-association` in active.\n * @param {string} pathname - window.location.pathname or nextjs equivalent\n * @returns {boolean} - whether the pathname string matches\n */\nexport const isUniversalLinkPage = (pathname: string) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path: string) => {\n const pathWithoutAsterisk = path.replace('/*', '');\n return pathname.startsWith(pathWithoutAsterisk);\n });\n }\n return false;\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (\n photoUrlHash: Record\n) => {\n if (!isObject(photoUrlHash)) {\n return '';\n }\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\n/**\n * Immutably merges a payload into an item in an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to update\n * @param {object} payload - the value to merge into the matched item\n * @param {object} options\n * @param {string} [options.idName=id] - the key of the unique identifier\n * @param {bool} [options.upsert=false] - if true, will insert the payload into the array as a new item if no matching item is found\n * @return {array} - A copy of the original array with the matching item updated\n */\nexport function arrayUpdateItemById(\n array: T[],\n id: string | number,\n payload: Partial,\n { idName, upsert }: { idName?: keyof T; upsert?: boolean } = {}\n): T[] {\n let itemFound = false;\n const property = idName || ('id' as keyof T);\n const mappedArray = array.map((item) => {\n itemFound = itemFound || item[property] === id;\n return item[property] === id ? { ...item, ...payload } : item;\n });\n\n return itemFound || !upsert ? mappedArray : ([...array, payload] as T[]);\n}\n\n/**\n * Immutably removes an item from an array by index\n * @param {array} array\n * @param {number} index - the index of the item to remove\n * @return {array} - A copy of the original array with the matching item removed\n */\nexport function arrayRemoveByIndex(array: T[], index: number): T[] {\n return index === -1\n ? array\n : [...array.slice(0, index), ...array.slice(index + 1)];\n}\n\n/**\n * Immutably removes an item from an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to remove\n * @param {string} [idName=id] - the key of the unique identifier\n * @return {array} - A copy of the original array with the matching item removed\n */\n\nexport function arrayRemoveItemById(\n array: T[],\n propertyValue: string | number,\n idName = 'id'\n): T[] {\n const index = array.findIndex(\n (item) => item[idName as keyof T] === propertyValue\n );\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n `${string.charAt(0).toUpperCase()}${string.slice(1)}`;\n\n/**\n * @description Converts Object keys from string of any case to camelCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToCamel(object: T): CamelCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToCamel(item)\n ) as CamelCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = camelCase(k);\n const value = object[\n k as keyof typeof object\n ] as CamelCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToCamel(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToCamel(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as CamelCasedPropertiesDeep);\n }\n\n return object as CamelCasedPropertiesDeep;\n}\n\n/**\n * @description Converts Object keys from string of any case to snakeCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToSnake(object: T): SnakeCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToSnake(item)\n ) as SnakeCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = snakeCase(k);\n const value = object[\n k as keyof typeof object\n ] as SnakeCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToSnake(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToSnake(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as SnakeCasedPropertiesDeep);\n }\n\n return object as SnakeCasedPropertiesDeep;\n}\n\n/**\n * Checks to see if localStorage is available\n *\n * @return {boolean} - true if localStorage can be used\n */\nexport const isLocalStorageAvailable = () => {\n const test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Appends querystring params to a URL\n *\n * @param {string} originalUrl - The original URL to append params to\n * @param {object} params - An object of key value parameters to append to URL\n * @return {string} - URL with params appended\n */\nexport const addParamsToURL = (originalUrl: string, params: object) => {\n const url = new URL(originalUrl);\n\n Object.entries(params).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n\n return url.toString();\n};\n\n/**\n * Some of our logged-out pages have a full-screen image background.\n * This util helps with setting the background image on the `` element, and\n * just requires passing in the image to be used.\n * @param {string} background\n */\nexport const setFullScreenBackgroundImage = (background: string) => {\n // apply background image directly to ``\n const body = document.querySelector('body');\n if (body) {\n body.style.setProperty('background-image', `url(${background})`);\n body.style.setProperty('background-size', 'cover');\n body.style.setProperty('background-position', 'center');\n }\n};\n\n/**\n * Uses the host to determine if a page is being loaded in staging or localhost.\n *\n * This util function is helpful for apps that run on nextJS which has node process\n * defined as production in both staging and production.\n *\n * @param host - host name\n * @returns {boolean} - true if app is running in staging or local\n */\nexport const isStagingOrLocal = (host: string) =>\n ['staging', 'localhost'].some((_host) => host.includes(_host));\n\n/**\n * Adds an id property to each object in an array. Uses the object's index as the value for the id\n * @param {array} objects - An array of objects\n * @return {array} - A copy of the original array with id property added to each object\n */\nexport const arrayAddIndexAsId = (objects: Array) =>\n objects.map((object, index) => ({ ...object, id: index }));\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo\n} from 'react';\nimport { useQueue } from '@strava/react-hooks';\nimport { generateRandomId } from '@strava/utils';\nimport { AlertStatusType } from '../Alert';\n\nexport interface AlertConfig {\n alertType: AlertStatusType;\n content: ReactNode;\n containerId?: string;\n id?: string;\n className?: string;\n autoDismiss?: boolean;\n autoDismissDelay?: number;\n contentPosition?: 'left' | 'center' | 'right';\n hideCloseButton?: boolean;\n hideIcon?: boolean;\n iconSize?: number;\n onClose?: () => void;\n}\n\nexport interface AlertState {\n alerts: AlertConfig[];\n showAlert: (config: AlertConfig) => string;\n hideAlert: (id: string) => void;\n clearAlerts: (containerId?: string) => void;\n}\n\nconst AlertContext = createContext(undefined);\nAlertContext.displayName = 'AlertContext';\n\nexport const useAlertContext = () => {\n const context = useContext(AlertContext);\n\n // Fail fast if useAlertContext hook is used outside the Provider.\n if (!context) {\n throw new Error(`useAlertContext must be used within the AlertProvider`);\n }\n\n return context;\n};\n\ninterface AlertProviderProps {\n children: ReactNode;\n}\n\nexport const AlertProvider = ({ children }: AlertProviderProps) => {\n const { queue, updateQueue, clearQueue } = useQueue({\n initialValues: []\n });\n\n /**\n * @description Display an alert.\n *\n * @param {Object} alertConfig\n * @param {'error' | 'warning' | 'info' | 'success'} alertConfig.alertType\n * @param {ReactNode} alertConfig.content - Message to display in the the content of the Alert Component.\n * @param {string} [alertConfig.containerId=\"base\"] - It's used to identify which `AlertContainer` the alert is associated to.\n * @param {string | number} [alertConfig.id] - Optional; by default id is randomly generated. Used to update or close alert.\n * @param {string} [alertConfig.className] - The className passed to Alert component.\n * @param {boolean} [alertConfig.autoDismiss=false] - Determine if alert will auto dismiss/close.\n * @param {number} [alertConfig.autoDismissDelay=8000] - Delay in ms that alert will auto dismiss.\n * @param {'left' | 'center' | 'right'} [alertConfig.contentPosition=\"left\"] - Position to align content inside of alert container.\n * @param {boolean} [alertConfig.hideCloseButton=false] - Hides the close button, alert can only be closed programmatically.\n * @param {boolean} [alertConfig.hideIcon=false] - Display or hide alert icon.\n * @param {number} [alertConfig.iconSize=32] - The Alert's SVG icon's width and height.\n * @param {Function} [alertConfig.onClose] - Callback fn; called when alert closes.\n *\n * @return {string} - Alert ID\n */\n const showAlert = useCallback(\n (alertConfig: AlertConfig) => {\n const id = alertConfig.id ?? generateRandomId();\n const containerId = alertConfig.containerId ?? 'base';\n\n updateQueue((alerts) => {\n const hasAlert =\n alertConfig?.id &&\n alerts.some((alert) => alert.id === alertConfig.id);\n // Check if alert exist in queue.\n // If true then return hasAlerts\n // Else add/append alert to queue.\n if (hasAlert) {\n return alerts;\n }\n\n return [...alerts, { ...alertConfig, id, containerId }];\n });\n\n return `${id}`;\n },\n [updateQueue]\n );\n\n /**\n * @description Hide an alert by id.\n *\n * @param {string} id - Unique id to hide/remove alert.\n *\n * @return {boolean}\n * */\n const hideAlert = useCallback(\n (id) =>\n updateQueue((alerts) =>\n alerts.filter((alert) => {\n if (alert.id === id) {\n // eslint-disable-next-line no-unused-expressions\n alert?.onClose?.();\n return false;\n }\n\n return true;\n })\n ),\n [updateQueue]\n );\n\n /**\n * @description Clears/remove all alerts.\n * If no `containerId` provided then removes ALL alerts. Else if `containerId`\n * provided then clears alerts for specific container when working with multiple containers.\n *\n * @param {string} [containerId] - Optional; Clear alerts for specific container when working with multiple containers.\n *\n * @return {boolean}\n * */\n const clearAlerts = useCallback(\n (containerId) => {\n // If containerId is passed then remove all alerts for specific container\n if (containerId) {\n return updateQueue((alerts) =>\n alerts.filter((alert) => {\n if (alert.containerId === containerId) {\n // eslint-disable-next-line no-unused-expressions\n alert?.onClose?.();\n return false;\n }\n\n return true;\n })\n );\n }\n // Else clear entire queue\n return clearQueue();\n },\n [updateQueue, clearQueue]\n );\n\n const providerState = useMemo(\n () => ({\n alerts: queue,\n showAlert,\n hideAlert,\n clearAlerts\n }),\n [queue, showAlert, hideAlert, clearAlerts]\n );\n\n return (\n \n {children}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"alertContainerInfoContainer\":\"AlertProvider--alertContainerInfoContainer--w2gCz\",\"alertContainerInfo\":\"AlertProvider--alertContainerInfo--8Wkrc\"};","import React from 'react';\nimport { AlertConfig, useAlertContext } from './AlertContext';\nimport Alert from '../Alert';\nimport styles from './AlertContainer.module.scss';\n\nconst defaultTranslateAlertInfoText = (\n totalAlertsShown: number,\n totalAlerts: number\n) => `Showing ${totalAlertsShown} of ${totalAlerts} alerts`;\n\ninterface AlertContainerProps {\n containerId?: string;\n limit?: number;\n shouldShowAlertInfoText?: boolean;\n translateAlertInfoText?: typeof defaultTranslateAlertInfoText;\n}\n\nexport const AlertContainer = ({\n containerId = 'base',\n limit,\n shouldShowAlertInfoText = true,\n translateAlertInfoText = defaultTranslateAlertInfoText\n}: AlertContainerProps) => {\n const { alerts, hideAlert } = useAlertContext();\n\n const handleOnClose = (id?: string) => {\n if (id) {\n hideAlert(id);\n }\n };\n\n const filterLimit = (_: unknown, index: number) => !limit || index < limit;\n const filterContainer = (alert: AlertConfig) =>\n alert?.containerId === containerId;\n\n const totalAlerts = alerts.filter(filterContainer).length;\n const totalAlertsShown = alerts\n .filter(filterContainer)\n .filter(filterLimit).length;\n\n return (\n <>\n {alerts\n .filter(filterContainer)\n .filter(filterLimit)\n .map(\n ({\n alertType,\n id,\n content,\n containerId: containerIdProp,\n ...rest\n }) => (\n handleOnClose(id)}\n >\n {content}\n \n )\n )}\n {shouldShowAlertInfoText && totalAlerts > totalAlertsShown && (\n \n
\n {translateAlertInfoText(totalAlertsShown, totalAlerts)}\n
\n \n )}\n \n );\n};\n\nexport default AlertContainer;\n","// authentication options\nexport const APPLE = 'apple';\nexport const EMAIL = 'email';\nexport const FACEBOOK = 'facebook';\nexport const GOOGLE = 'google';\n\n// session storage key(s)\nexport const HIDE_TIME_DELAY_MODAL = 'hide-time-delay-modal';\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import toString from './toString.js';\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 */\nfunction 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\nexport default replace;\n","import { replace } from 'lodash-es';\n\nconst appendScriptToBody = ({ script, name, logError }) => {\n if (document.querySelector('body')) {\n document.querySelector('body').appendChild(script);\n } else {\n const e = new Error(`Failed to inject ${name} script`);\n logError(e);\n }\n};\n\n// this injects window.google and not the legacy window.gapi JS api\nexport const injectGoogleScript = ({ callback, logError }) => {\n if (!window.google) {\n const script = document.createElement('script');\n script.src = 'https://accounts.google.com/gsi/client';\n script.async = true;\n script.onload = callback;\n script.id = 'google-client-script';\n appendScriptToBody({ script, name: 'google gsi', logError });\n } else {\n callback();\n }\n};\n\nexport const injectAppleScript = ({ logError, locale = 'en_US' }) => {\n if (!window.AppleID) {\n const script = window.document.createElement('script');\n const formattedLocale = replace(locale, '-', '_');\n script.src = `https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/${formattedLocale}/appleid.auth.js`;\n script.async = true;\n appendScriptToBody({ script, name: 'apple', logError });\n }\n};\n\nexport const injectFacebookScript = ({\n logError,\n appId,\n version,\n callback,\n locale = 'en_US'\n}) => {\n // make sure haml FB injection has not already injected script and also make sure nothing else\n // has injected FB script\n if (!window.Strava?.fbInitialized && !window.FB) {\n window.fbAsyncInit = () => {\n // ref - https://developers.facebook.com/docs/javascript/reference/FB.init/v13.0\n window.FB.init({\n appId,\n xfbml: true,\n version,\n status: true,\n cookie: true\n });\n callback();\n };\n\n // facebook uses format ll_CC - see https://developers.facebook.com/docs/javascript/internationalization\n const formattedLocale = replace(locale, '-', '_');\n\n const script = window.document.createElement('script');\n script.src = `https://connect.facebook.net/${formattedLocale}/sdk.js`;\n script.async = true;\n appendScriptToBody({ script, name: 'facebook-jssdk', logError });\n } else {\n callback();\n }\n};\n\nexport default { injectGoogleScript, injectAppleScript, injectFacebookScript };\n","import { useEffect } from 'react';\nimport { injectAppleScript } from './externalSocialPartners';\n\ndeclare global {\n interface Window {\n AppleID: {\n stravaInit: boolean;\n auth: {\n init: (params: {\n clientId: string;\n scope: string;\n redirectURI: string;\n state: string;\n }) => void;\n signIn: () => void;\n };\n };\n }\n}\n\n/**\n *\n * @param {String} state https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230956-state\n */\nexport const useApple = (state: string, logError: (error: Error) => void) => {\n useEffect(() => {\n injectAppleScript({ logError });\n }, [logError]);\n\n const signin = () => {\n if (!window.AppleID.stravaInit) {\n window.AppleID.auth.init({\n clientId: 'com.strava.app.sign.in',\n scope: 'name email',\n redirectURI: 'https://www.strava.com/o_auth/apple',\n state\n });\n window.AppleID.stravaInit = true;\n }\n window.AppleID.auth.signIn();\n };\n\n return { signin };\n};\n\nexport default useApple;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"Button--btn--zVW63\",\"default\":\"Button--default--Ia53C\",\"primary\":\"Button--primary--JfVjh\",\"primaryOutline\":\"Button--primaryOutline--vUsab\",\"secondary\":\"Button--secondary--d8RQu\",\"icon\":\"Button--icon--zqOWr\",\"text\":\"Button--text--WYJ6h\"};","import React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.module.scss';\n\nexport interface ButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n variant?:\n | 'default'\n | 'primary'\n | 'primaryOutline'\n | 'secondary'\n | 'icon'\n | 'text';\n className?: string;\n}\n\nconst Button = React.forwardRef(\n ({ children, className, variant = 'default', ...props }, ref) => (\n \n {children}\n \n )\n);\n\nexport default Button;\n","import clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport styles from './styles.module.scss';\nimport { ButtonProps } from './Button';\n\nexport type LinkButtonProps = ButtonProps & ComponentPropsWithoutRef<'a'>;\n\nconst LinkButton = forwardRef(\n ({ href, children, className, variant = 'default', ...otherProps }, ref) => {\n return (\n \n {children}\n \n );\n }\n);\n\nexport default LinkButton;\n","var _excluded = [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\", \"isolated\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _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 _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nvar ReCAPTCHA = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n function ReCAPTCHA() {\n var _this;\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n var _proto = ReCAPTCHA.prototype;\n _proto.getCaptchaFunction = function getCaptchaFunction(fnName) {\n if (this.props.grecaptcha) {\n if (this.props.grecaptcha.enterprise) {\n return this.props.grecaptcha.enterprise[fnName];\n }\n return this.props.grecaptcha[fnName];\n }\n return null;\n };\n _proto.getValue = function getValue() {\n var getResponse = this.getCaptchaFunction(\"getResponse\");\n if (getResponse && this._widgetId !== undefined) {\n return getResponse(this._widgetId);\n }\n return null;\n };\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n return null;\n };\n _proto.execute = function execute() {\n var execute = this.getCaptchaFunction(\"execute\");\n if (execute && this._widgetId !== undefined) {\n return execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n _this2.execute();\n });\n };\n _proto.reset = function reset() {\n var resetter = this.getCaptchaFunction(\"reset\");\n if (resetter && this._widgetId !== undefined) {\n resetter(this._widgetId);\n }\n };\n _proto.forceReset = function forceReset() {\n var resetter = this.getCaptchaFunction(\"reset\");\n if (resetter) {\n resetter();\n }\n };\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n _proto.explicitRender = function explicitRender() {\n var render = this.getCaptchaFunction(\"render\");\n if (render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge,\n isolated: this.props.isolated\n });\n this.captcha.appendChild(wrapper);\n }\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n isolated = _this$props.isolated,\n childProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n /* eslint-enable no-unused-vars */\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n return ReCAPTCHA;\n}(React.Component);\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\n isolated: PropTypes.bool\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n if (dynamicOptions.enterprise) {\n return \"https://\" + hostname + \"/recaptcha/enterprise.js?onload=\" + callbackName + \"&render=explicit\";\n }\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName,\n attributes: getOptions().nonce ? {\n nonce: getOptions().nonce\n } : {}\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nexport default isNil;\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner\":\"Spinner--spinner--qzsjH\",\"graphic\":\"Spinner--graphic--kqWQZ\",\"spin\":\"Spinner--spin--kJ7Zm\"};","import React from 'react';\nimport clsx from '../clsx';\n\nimport styles from './Spinner.module.scss';\n\nexport type SpinnerProps = {\n color?: 'default' | 'white';\n size?: number;\n};\n\nconst Spinner = ({ color = 'default', size = 20 }: SpinnerProps) => (\n \n \n \n);\n\nexport default Spinner;\n","import { APPLE, EMAIL, FACEBOOK, GOOGLE } from './constants';\n\ntype ElementTypes =\n | typeof APPLE\n | typeof EMAIL\n | typeof FACEBOOK\n | typeof GOOGLE;\n\nexport const elemAttrForAnalytics = (option: ElementTypes) => {\n switch (option) {\n case FACEBOOK:\n return 'facebook_signup';\n case APPLE:\n return 'apple_signup';\n case EMAIL:\n return 'email_signup';\n case GOOGLE:\n return 'google_signup';\n default:\n return 'signup';\n }\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"Input--input--prSsI\"};","import React, { forwardRef } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport styles from './Input.module.scss';\n\ntype InputProps = React.ComponentPropsWithoutRef<'input'>;\n\nexport const Input = forwardRef(\n ({ className, ...props }, ref) => (\n \n )\n);\n\nexport default Input;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsVisibleDisabledNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleDisabledNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsVisibleDisabledNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsVisibleDisabledNormalSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgActionsVisibleNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleNormalSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgActionsVisibleNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgActionsVisibleNormalSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"passwordInput\":\"Input--passwordInput--96vI2\",\"showPasswordButton\":\"Input--showPasswordButton--gR3YF\"};","import React, { forwardRef, useState } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport ActionsVisibleDisabledNormalSmall from '@strava/icons/ActionsVisibleDisabledNormalSmall';\nimport ActionsVisibleNormalSmall from '@strava/icons/ActionsVisibleNormalSmall';\nimport VisuallyHidden from '../VisuallyHidden';\nimport Input from '.';\n\nimport styles from './PasswordInput.module.scss';\n\nexport type PasswordInputProps = React.ComponentPropsWithoutRef<'input'> & {\n showPasswordText: string; // translated text for accessibility. Should inform users that clicking show password button will display the password on the screen\n hidePasswordText: string;\n};\n\nconst PasswordInput = forwardRef(\n ({ showPasswordText, hidePasswordText, className, ...props }, ref) => {\n const [passwordIsVisible, setPasswordIsVisible] = useState(false);\n\n return (\n
\n \n setPasswordIsVisible((prev) => !prev)}\n className={styles.showPasswordButton}\n type=\"button\"\n role=\"switch\"\n aria-checked={passwordIsVisible}\n title={passwordIsVisible ? hidePasswordText : showPasswordText}\n >\n {passwordIsVisible ? (\n \n ) : (\n \n )}\n \n {passwordIsVisible ? hidePasswordText : showPasswordText}\n \n \n
\n );\n }\n);\n\nexport default PasswordInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"RegistrationInput--input--xOBVC\",\"label\":\"RegistrationInput--label--i86co\",\"light\":\"RegistrationInput--light--dH7Cd\",\"textInput\":\"RegistrationInput--textInput--bJRcS\",\"message\":\"RegistrationInput--message--yeHql\",\"error\":\"RegistrationInput--error--95QOE\"};","import React, { forwardRef } from 'react';\nimport Input, { PasswordInput } from '@strava/ui/Input';\nimport { ThemeTypes } from '@strava/authentication-ui';\nimport clsx from '@strava/ui/clsx';\nimport styles from './RegistrationInput.module.scss';\n\ntype RegistrationInputProps = React.ComponentPropsWithoutRef<'input'> &\n (\n | {\n // type just has to not be 'password' or string for the conditional to work\n type: 'email' | 'text';\n hidePasswordText?: string;\n showPasswordText?: string;\n }\n | {\n type: 'password';\n hidePasswordText: string;\n showPasswordText: string;\n }\n ) & {\n label: string;\n inputMessage?: string | null;\n errorMessage?: string | null;\n errorMessageTestId?: string;\n theme?: ThemeTypes;\n };\n\nexport const RegistrationInput = forwardRef<\n HTMLInputElement,\n RegistrationInputProps\n>(\n (\n {\n label,\n id,\n type,\n inputMessage,\n errorMessage,\n errorMessageTestId,\n hidePasswordText,\n showPasswordText,\n theme = 'dark',\n ...props\n },\n ref\n ) => (\n
\n \n {type === 'password' ? (\n \n ) : (\n \n )}\n {inputMessage && !errorMessage && (\n

{inputMessage}

\n )}\n {errorMessage && (\n

\n {errorMessage}\n

\n )}\n
\n )\n);\n\nexport default RegistrationInput;\n","// At times, we will be developing the app using different hostnames and ports.\n// On docker-compose, the origin might be http://webapp:3001.\n// Or, you might be running it on your machine at http://localhost:3000\n//\n// If the incoming request doesn't include '/dev-api',\n// we want it to be for /dev-api on this same server,\n// so it can be modified and re-sent, from the server, with appropriate auth cookies,\n// to the staging api.\n\nexport function stagingBaseUrlFromReq(req) {\n // When using the staging api, we will toggle the '/dev-api' depending on the state of the request.\n // If the incoming request is for localhost:3000/dev-api,\n // then we will strip out '/dev-api' and forward the request to to staging.strava.com.\n // See next-server/src/utils.js #proxyToStaging\n\n return `${req.protocol}://${req.headers.host}/dev-api`;\n}\n\nexport function stagingBaseUrlFromWindow() {\n const { location } = window;\n const { protocol, hostname, port } = location;\n\n return `${protocol}//${hostname}:${port}/dev-api`;\n}\n","// We serve active from different domains depending\n// on the environment. We need to know which URL\n// to use for a given environment (development, staging, prod).\n// https://www.strava.com\n// https://www.staging.strava.com\n// http://localhost + port\n// http://127.0.0.1 + port\n\n// Note: When developing locally, we will serve this web app\n// on a different port than active\nconst LOCALHOST_ACTIVE_PORT = 3000;\n\nexport function extractUrlFromReq(req) {\n let fullHost = req.headers['x-forwarded-host'] || req.headers.host;\n let protocol = 'https';\n\n // If we are developing locally, we will be running\n // active on some other port, so we set it here:.\n if (fullHost.includes('localhost')) {\n fullHost = `localhost:${LOCALHOST_ACTIVE_PORT}`;\n protocol = 'http';\n }\n\n return `${protocol}://${fullHost}`;\n}\n\nexport function baseUrlFromWindow() {\n const { location } = window;\n\n // If we are on the browser, and have included a port in the location URL, then\n // we are running locally, and the api client should use active's port.\n const port = location.port === '' ? '' : `:${LOCALHOST_ACTIVE_PORT}`;\n\n return `${location.protocol}//${location.hostname}${port}`;\n}\n","import axios from 'axios';\nimport { stagingBaseUrlFromWindow } from './base-url-staging';\nimport { baseUrlFromWindow } from './base-url';\nimport getCsrfToken from './csrf';\n\n/**\n * nextjs apps can be run locally but be configured to call active staging rather than active localhost.\n * If client is called by a microfrontend mounted by a nextjs app, `useStagingApi` can be passed in to\n * the mfe's props from `process.env.USE_STAGING_API` so it uses the same baseurl as the nextjs app's other\n * api requests.\n */\n\nconst apiClient = ({\n useStagingApi = typeof process !== 'undefined'\n ? process?.env?.USE_STAGING_API\n : false,\n currentLanguage = 'en-US',\n options = {}\n} = {}) => {\n const { headers: optionalHeaders, ...moreOptions } = options;\n const config = {\n baseURL: useStagingApi ? stagingBaseUrlFromWindow() : baseUrlFromWindow(),\n withCredentials: true,\n timeout: 30000, // 30 seconds\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Accept-Language': currentLanguage,\n ...optionalHeaders\n },\n ...moreOptions\n };\n\n const csrfToken = getCsrfToken();\n if (csrfToken) {\n config.headers = { 'x-csrf-token': csrfToken, ...config.headers };\n }\n\n return axios.create(config);\n};\n\nexport default apiClient;\n","export default function getCsrfToken() {\n const metaCsrfTag =\n document.head.querySelector('meta[name=\"csrf\"]') ||\n document.head.querySelector('meta[name=\"csrf-token\"]');\n\n return metaCsrfTag ? metaCsrfTag.content : null;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"emailCaption\":\"EmailRegistrationForm--emailCaption--6Xvb4\",\"submitButton\":\"EmailRegistrationForm--submitButton--IyHrC\"};","import React, { useState, useRef } from 'react';\nimport Button from '@strava/ui/Button';\nimport * as EmailValidator from 'email-validator';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { isNil } from 'lodash-es';\nimport Spinner from '@strava/ui/Spinner';\nimport { AlertStatus, useAlertContext } from '@strava/ui/Alert';\nimport {\n elemAttrForAnalytics,\n EMAIL,\n ThemeTypes\n} from '@strava/authentication-ui';\nimport RegistrationInput from '../RegistrationInput';\nimport {\n submitFormData,\n isAlreadyRegisteredEmail\n} from './email-registration-api';\n\nimport {\n useStravaErrorLogging,\n useStravaTranslations\n} from '@strava/container-context';\n\nimport styles from './EmailRegistrationForm.module.scss';\n\nconst i18nPrefix = 'authentication_ui.email_registration_form';\n\nexport const EMAIL_REGISTRATION_FORM_ALERT_ID = 'email-registration-form-alert';\n\n// these props are passed into the parent component from the active\nexport interface EmailRegistrationFormProps {\n reCaptchaSiteKey: string;\n clubId?: number;\n isPremium: boolean;\n challengeId?: number;\n autoJoinChallenge?: boolean;\n honeyPot: string;\n plan?: string;\n formAuthToken?: string;\n}\n\ntype FormInputTypes = {\n email: string;\n password: string;\n honeyPot: string;\n};\n\ntype EmailValidationStateTypes = {\n message: string;\n isExistingEmail: boolean;\n isValidEmail: boolean;\n};\n\nexport type AnalyticsFieldsTypes = {\n action: string;\n element?: string;\n properties?: Record;\n};\n\nexport type AlertConfigTypes = {\n className?: string;\n contentPosition?: 'left' | 'center' | 'right';\n};\n\nconst EmailRegistrationForm = ({\n authorizationUrl,\n reCaptchaSiteKey,\n honeyPot,\n isPremium,\n clubId,\n plan,\n challengeId,\n autoJoinChallenge,\n formAuthToken,\n track,\n className,\n theme = 'dark',\n idPrefix,\n alertConfig,\n isInView = true\n}: EmailRegistrationFormProps & {\n // these props are passed in from the parent component\n authorizationUrl: string; // this url generally still comes from active\n track: (fields: AnalyticsFieldsTypes) => void;\n className?: string;\n idPrefix: string;\n theme?: ThemeTypes;\n alertConfig?: AlertConfigTypes;\n isInView?: boolean;\n}) => {\n const [formInput, setFormInput] = useState({\n email: '',\n password: '',\n honeyPot: '' // if this field gets filled out, user is probably a bot\n });\n const [passwordErrorMsg, setPasswordErrMsg] = useState(null);\n const [emailValidationState, setEmailValidationState] =\n useState(null);\n const [isProcessing, setIsProcessing] = useState(false);\n\n const emailInput = useRef(null);\n const passwordInput = useRef(null);\n const recaptchaRef = useRef(null);\n\n const useRecaptcha = !!reCaptchaSiteKey && isInView;\n\n const { logError } = useStravaErrorLogging();\n const { t } = useStravaTranslations();\n const { showAlert, clearAlerts } = useAlertContext();\n\n const emailRegFormAlert = (content: React.ReactNode, id: string) => ({\n content,\n alertType: AlertStatus.ERROR,\n containerId: EMAIL_REGISTRATION_FORM_ALERT_ID,\n hideCloseButton: true,\n ...(alertConfig && { ...alertConfig }),\n id // to prevent showing duplicate error messages\n });\n\n const getRecaptchaToken = async () => {\n if (useRecaptcha) {\n return (await recaptchaRef?.current?.executeAsync()) ?? '';\n }\n return '';\n };\n\n const handleEmailFormSubmit = async () => {\n const recaptchaToken = await getRecaptchaToken();\n\n const element = elemAttrForAnalytics(EMAIL);\n const { email, password, honeyPot } = formInput;\n\n const formData = new FormData();\n formData.append('web_registration_form', 'true');\n formData.append('email', email);\n formData.append('password', password);\n formData.append('g-recaptcha-response', recaptchaToken);\n formData.append('checkbox_agreed_to_terms', 'on');\n formData.append(honeyPot, honeyPot);\n formData.append('plan', String(plan));\n formData.append('authenticity_token', String(formAuthToken));\n\n if (isPremium) {\n formData.append('premium', 'true');\n }\n if (!isNil(clubId)) {\n formData.append('club_id', String(clubId));\n }\n if (!isNil(challengeId)) {\n formData.append('challenge_id', String(challengeId));\n }\n if (!isNil(autoJoinChallenge)) {\n formData.append('auto_join_challenge', String(autoJoinChallenge));\n }\n\n try {\n const response = await submitFormData({\n formData,\n url: authorizationUrl,\n logError\n });\n\n if ('error' in response) {\n // join request failed server-side validations,\n // flash message is populated and shown if an error occurred\n showAlert(emailRegFormAlert(response.error, 'submitFormData error'));\n setIsProcessing(false); // let user try again\n } else {\n const { pathType, load } = response;\n track({\n action: 'redirect',\n element,\n properties: {\n path_type: pathType,\n redirect_url: load\n }\n });\n\n // navigate to onboarding flow if no errors were encountered\n window.location.href = load;\n }\n } catch (error) {\n logError(error);\n\n // generic \"something went wrong\" alert\n showAlert(\n emailRegFormAlert(\n t(`${i18nPrefix}.error_message`),\n 'submitFormData catch'\n )\n );\n setIsProcessing(false); // let user try again\n }\n };\n\n /**\n * Validate athlete email -\n * 1 - value should be provided (required)\n * 2 - valid email address should be entered (eg. should have @)\n * 3 - email address should not be already registered on strava\n *\n * @returns {Object} result\n * @returns {boolean} result.isValidEmail - true when the email has passed all validation criteria\n * @returns {string} result.isExistingEmail - true when the email is already registered on strava\n * @returns {string} result.message - string message to display to athlete when an error occurs\n */\n const validateEmail = async () => {\n const { email } = formInput;\n if (emailValidationState) {\n // avoid validating email if there is already an error that is not addressed by the athlete yet\n // this prevents making an unnecessary api call to check if email is already registered (see #isAlreadyRegisteredEmail)\n return emailValidationState;\n } else {\n let isValidEmail = true;\n let isExistingEmail = false;\n let message = null;\n\n if (!(email && email.length > 0)) {\n message = t(`${i18nPrefix}.email_required`);\n isValidEmail = false;\n } else if (!EmailValidator.validate(email)) {\n message = t(`${i18nPrefix}.email_invalid`);\n isValidEmail = false;\n } else {\n try {\n const isUniqueEmail = await isAlreadyRegisteredEmail(email);\n if (!isUniqueEmail) {\n message = t(`${i18nPrefix}.email_taken`);\n isExistingEmail = true;\n }\n } catch (error) {\n logError(error);\n isValidEmail = false;\n\n // generic \"something went wrong\" alert\n showAlert(\n emailRegFormAlert(\n t(`${i18nPrefix}.error_message`),\n 'isAlreadyRegisteredEmail catch'\n )\n );\n }\n }\n setEmailValidationState({ isExistingEmail, isValidEmail, message });\n return { message, isValidEmail, isExistingEmail };\n }\n };\n\n /**\n * Validates athlete password\n * - value should be provided (required)\n * - max length of 40 chars\n * - min length of 8 chars\n *\n * @returns {boolean} result true when the password is valid\n */\n const validatePassword = () => {\n const { password } = formInput;\n\n if (!passwordErrorMsg) {\n // avoid validating email if there is already an error that is not addressed by the athlete yet\n let isValidPassword = true;\n let passwordValidationMsg = null;\n if (!(password && password.length > 0)) {\n passwordValidationMsg = t(`${i18nPrefix}.password_required`);\n isValidPassword = false;\n } else if (password.length > 40) {\n passwordValidationMsg = t(`${i18nPrefix}.password_max_length`);\n isValidPassword = false;\n } else if (password.length < 8) {\n passwordValidationMsg = t(`${i18nPrefix}.password_min_length`);\n isValidPassword = false;\n }\n setPasswordErrMsg(passwordValidationMsg);\n return isValidPassword;\n }\n return false;\n };\n\n const validateForm = async () => {\n return {\n ...(await validateEmail()),\n isValidPassword: validatePassword()\n };\n };\n\n /**\n * Actions to perform when a user hits the \"sign up\" button (account registration using email).\n * - validate user input (email and password)\n * - submit form if input is valid\n * - focus on invalid inputs if input is invalid\n */\n const handleFormSubmission = async (\n event: React.FormEvent\n ) => {\n event.preventDefault();\n setIsProcessing(true); // prevent impatient submit clicks\n\n const { isValidEmail, isValidPassword, isExistingEmail } =\n await validateForm();\n\n track({\n action: 'click',\n element: 'signup',\n properties: {\n is_valid_email: isValidEmail,\n is_valid_password: isValidPassword,\n is_existing_email: isExistingEmail\n }\n });\n\n if (isValidEmail && !isExistingEmail && isValidPassword) {\n handleEmailFormSubmit();\n } else {\n setIsProcessing(false); // let user try again\n\n if (recaptchaRef.current) {\n recaptchaRef.current.reset();\n }\n if (!isValidPassword) {\n passwordInput?.current?.focus();\n }\n // prioritize focus on email input if both password and email inputs are invalid\n if (!isValidEmail || isExistingEmail) {\n emailInput?.current?.focus();\n }\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent) => {\n const { target } = event;\n const { name } = target;\n\n // save honeyPot input as 'honeyPot' instead of whatever the value of honeyPot is\n // (server determines honeyPot value)\n setFormInput((prev) => {\n return { ...prev, [name === honeyPot ? 'honeyPot' : name]: target.value };\n });\n\n // clear input specific errors\n if (name === 'email' && emailValidationState?.message) {\n setEmailValidationState(null);\n } else if (passwordErrorMsg) {\n setPasswordErrMsg(null);\n }\n // clear alerts on all input changes\n clearAlerts(EMAIL_REGISTRATION_FORM_ALERT_ID);\n };\n\n return (\n \n \n\n \n\n {/**\n * Honeypot input is hidden to real users but visible to bots.\n * It should be a value that seems legit to bots but one we don't actually use/care about.\n * If the input is populated, we know it's a bot. */}\n
\n \n \n
\n\n {useRecaptcha && (\n \n )}\n\n \n {isProcessing ? : t(`${i18nPrefix}.sign_up`)}\n \n \n );\n};\n\nexport default EmailRegistrationForm;\n","import apiClient from '@strava/api/lib/axios-client';\n\ntype SubmitFormDataSuccessResponse = {\n success: boolean;\n pathType: string;\n load: string;\n};\n\ntype SubmitFormDataErrorResponse = {\n error: string;\n};\n\ntype SubmitFormDataResponseType =\n | SubmitFormDataSuccessResponse\n | SubmitFormDataErrorResponse;\n\nexport const submitFormData = async ({\n formData,\n url,\n logError\n}: {\n formData: FormData;\n url: string;\n logError: (s: string | unknown) => void;\n}): Promise => {\n return new Promise((resolve, reject) => {\n apiClient({\n options: {\n headers: { 'Content-Type': 'multipart/form-data' }\n }\n })\n .post(url, formData)\n .then((response: { data: SubmitFormDataResponseType }) => {\n resolve(response.data);\n })\n .catch((error: unknown) => {\n logError(error);\n reject(error);\n });\n });\n};\n\nexport const isAlreadyRegisteredEmail = async (email: string) => {\n return new Promise((resolve, reject) => {\n apiClient()\n .get('/athletes/email_unique', { params: { email } })\n .then(({ data }: { data: boolean }) => {\n resolve(data);\n })\n .catch((error: unknown) => {\n reject(error);\n });\n });\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"authButton\":\"AccountAuthButton--authButton--vcyqP\",\"placeholder\":\"AccountAuthButton--placeholder--8aCI1\",\"facebookBlue\":\"AccountAuthButton--facebookBlue--d+bCw\"};","import React, { ReactNode } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport Button from '@strava/ui/Button';\nimport styles from './AccountAuthButton.module.scss';\n\nconst AppleLogo = React.lazy(() => import('@strava/icons/LogosAppleSmall'));\nconst FacebookLogo = React.lazy(\n () => import('@strava/icons/LogosFacebookSmall')\n);\nconst GoogleLogo = React.lazy(() => import('@strava/icons/LogosGoogleSmall'));\nconst EmailLogo = React.lazy(\n () => import('@strava/icons/ActionsEmailNormalSmall')\n);\n\nexport type AuthButtonVariantTypes =\n | 'apple'\n | 'email'\n | 'facebook'\n | 'facebook-blue' // ironically corresponds to the lighter version of the icon\n | 'google';\n\ntype AccountAuthButtonProps = {\n children: ReactNode;\n className?: string;\n variant?: AuthButtonVariantTypes;\n onClick?: () => void;\n};\n\nconst AccountAuthButton = ({\n children,\n onClick,\n variant,\n className,\n ...options\n}: AccountAuthButtonProps) => {\n return (\n \n }>\n {variant === 'apple' && }\n {variant === 'facebook' && }\n {variant === 'facebook-blue' && }\n {variant === 'google' && }\n {variant === 'email' && }\n \n {children}\n \n );\n};\n\nexport default AccountAuthButton;\n",null,null,null,null,null,null,null,null,"// extracted by mini-css-extract-plugin\nexport default {\"disclaimerText\":\"DisclaimerText--disclaimerText--Dmxap\"};","import React from 'react';\nimport { Markup } from 'interweave';\nimport { useStravaTranslations } from '@strava/container-context';\nimport clsx from '@strava/ui/clsx/clsx';\n\nimport styles from './DisclaimerText.module.scss';\n\ntype DisclaimerTextProps = {\n className?: string;\n};\n\nconst DisclaimerText = ({ className }: DisclaimerTextProps) => {\n const { t } = useStravaTranslations();\n\n const legalTerms = t(\n 'authentication_ui.disclaimer_text.by_clicking_cta_html',\n { terms_path: '/legal/terms' }\n );\n\n const legalPrivacy = t(\n 'authentication_ui.disclaimer_text.view_privacy_policy_html',\n { privacy_path: '/legal/privacy' }\n );\n\n return (\n

\n {' '}\n \n

\n );\n};\n\nexport default DisclaimerText;\n","// extracted by mini-css-extract-plugin\nexport default {\"orDivider\":\"OrDivider--orDivider--1hf5c\",\"or\":\"OrDivider--or--scsGp\",\"light\":\"OrDivider--light--1XgjF\",\"line\":\"OrDivider--line--XO1qL\"};","import React from 'react';\nimport clsx from '@strava/ui/clsx';\n\nimport styles from './OrDivider.module.scss';\nimport { ThemeTypes } from '..';\n\ninterface OrDividerProps {\n text: string;\n theme?: ThemeTypes;\n className?: string;\n}\n\nexport const OrDivider = ({\n text,\n theme = 'dark',\n className\n}: OrDividerProps) => {\n return (\n
\n
\n {text}\n
\n
\n );\n};\n\nexport default OrDivider;\n","// extracted by mini-css-extract-plugin\nexport default {\"registrationOptions\":\"DesktopRegistrationOptions--registrationOptions--E-NPY\",\"noMarginTop\":\"DesktopRegistrationOptions--noMarginTop--MT-+7\",\"disclaimerText\":\"DesktopRegistrationOptions--disclaimerText--OvkQU\",\"loginOption\":\"DesktopRegistrationOptions--loginOption--nzmpV\",\"variant\":\"DesktopRegistrationOptions--variant--4ZY17\"};","import MediaQuery from 'react-responsive';\n\nexport const breakpoints: {\n [key: string]: number;\n} = {\n screenXs: 480,\n screenXsMax: 767,\n screenSm: 768,\n screenSmMax: 991,\n screenMd: 992,\n screenMdMax: 1199,\n screenLg: 1200,\n screenLgMax: 1249,\n screenXl: 1250\n};\n\nexport const matchMaxMedia = {\n screenXs() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXs}px)`).matches;\n },\n\n screenXsMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXsMax}px)`)\n .matches;\n },\n\n screenSm() {\n return window.matchMedia(`(max-width: ${breakpoints.screenSm}px)`).matches;\n },\n\n screenSmMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenSmMax}px)`)\n .matches;\n },\n\n screenMd() {\n return window.matchMedia(`(max-width: ${breakpoints.screenMd}px)`).matches;\n },\n\n screenMdMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenMdMax}px)`)\n .matches;\n },\n\n screenLg() {\n return window.matchMedia(`(max-width: ${breakpoints.screenLg}px)`).matches;\n },\n\n screenLgMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenLgMax}px)`)\n .matches;\n },\n\n screenXl() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXl}px)`).matches;\n }\n};\n\nexport const matchMinMedia = {\n screenXs() {\n return window.matchMedia(`(min-width: ${breakpoints.screenXs}px)`).matches;\n },\n\n screenSm() {\n return window.matchMedia(`(min-width: ${breakpoints.screenSm}px)`).matches;\n },\n\n screenMd() {\n return window.matchMedia(`(min-width: ${breakpoints.screenMd}px)`).matches;\n },\n\n screenLg() {\n return window.matchMedia(`(min-width: ${breakpoints.screenLg}px)`).matches;\n },\n\n screenXl() {\n return window.matchMedia(`(min-width: ${breakpoints.screenXl}px)`).matches;\n }\n};\n\nexport default MediaQuery;\n","import React, { useEffect } from 'react';\nimport { AlertContainer, AlertStatus, useAlertContext } from '@strava/ui/Alert';\nimport { useStravaTranslations } from '@strava/container-context';\nimport {\n DisclaimerText,\n AccountAuthButton,\n OrDivider,\n APPLE,\n FACEBOOK,\n GOOGLE,\n EmailRegistrationForm,\n EMAIL_REGISTRATION_FORM_ALERT_ID,\n AnalyticsFieldsTypes,\n EmailRegistrationFormProps\n} from '@strava/authentication-ui';\nimport styles from './DesktopRegistrationOptions.module.scss';\nimport { matchMinMedia } from '@strava/ui/MediaQuery';\n\nconst i18nPrefix = 'account_registration_page_ui';\n\nexport type DesktopRegistrationOptionsProps = EmailRegistrationFormProps & {\n flashMessage?: string;\n};\n\nconst DesktopRegistrationOptions = ({\n emailAuthorizationUrl,\n handleExtAuthBtnClick,\n flashMessage,\n track,\n ...emailRegFormProps\n}: DesktopRegistrationOptionsProps & {\n emailAuthorizationUrl: string;\n track: (fields: AnalyticsFieldsTypes) => void;\n handleExtAuthBtnClick: (\n option: typeof FACEBOOK | typeof GOOGLE | typeof APPLE\n ) => void;\n}) => {\n const { t } = useStravaTranslations();\n const { showAlert } = useAlertContext();\n\n useEffect(() => {\n if (flashMessage) {\n showAlert({\n alertType: AlertStatus.ERROR,\n content: flashMessage,\n hideCloseButton: true,\n containerId: EMAIL_REGISTRATION_FORM_ALERT_ID,\n id: 'flashMessage'\n });\n }\n }, [flashMessage, showAlert]);\n\n const externalSignups = (\n <>\n handleExtAuthBtnClick(FACEBOOK)}\n data-testid=\"facebook_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.facebook_cta_v2`)}\n \n\n handleExtAuthBtnClick(GOOGLE)}\n data-testid=\"google_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.google_cta_v2`)}\n \n \n );\n\n const emailSignup = (\n <>\n \n\n \n \n );\n\n return (\n
\n \n\n {externalSignups}\n\n \n\n {emailSignup}\n\n

\n {t(`${i18nPrefix}.login_option.already_a_member`)}{' '}\n \n {t(`${i18nPrefix}.login_option.log_in`)}\n \n

\n
\n );\n};\n\nexport default DesktopRegistrationOptions;\n","import {\n Dispatch,\n SetStateAction,\n useRef,\n useCallback,\n useEffect,\n useState\n} from 'react';\n\n/**\n * The `useSafeState` hook acts the same as React's `useState`,\n * where we can set the initial state, and it returns (1) the current state,\n * and (2) the state setter.\n *\n * But with `useSafeState`, it will only set the state when the component is mounted\n * in order to prevent memory leaks and avoid this warning:\n * \"Warning: Can’t perform a React state update on an unmounted component.\"\n * When a component is unmounted, we don't want to set the state.\n *\n * This helps when we have async behavior where we call an async API call,\n * then based on the async response, we set the state. But if the component\n * unmounts before the API call resolves, we don't want to set the state.\n * */\n// eslint-disable-next-line import/prefer-default-export\nexport const useSafeState = (\n initialState: S | (() => S)\n): [S, Dispatch>] => {\n const mountedRef = useRef(false);\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const setSafeState = useCallback(\n (args) => (mountedRef.current ? setState(args) : () => {}),\n []\n );\n\n return [state, setSafeState];\n};\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgNavigationProfileHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationProfileHighlightedMedium.defaultProps = {\n color: \"currentColor\",\n size: 32,\n title: undefined,\n titleId: undefined,\n};\nSvgNavigationProfileHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgNavigationProfileHighlightedMedium;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorSuperuserSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSuperuserSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorSuperuserSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorSuperuserSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorSummitSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSummitSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorSummitSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorSummitSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorProSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorProSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorProSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorProSmall;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nconst SvgBadgesMulticolorVerifiedSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgBadgesMulticolorVerifiedSmall.defaultProps = {\n color: \"currentColor\",\n size: 24,\n title: undefined,\n titleId: undefined,\n};\nSvgBadgesMulticolorVerifiedSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string,\n};\nexport default SvgBadgesMulticolorVerifiedSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"Avatar--avatar--1Hyjq\",\"imgWrapper\":\"Avatar--imgWrapper--rVV43\",\"badge\":\"Avatar--badge--G44+m\",\"athlete\":\"Avatar--athlete--NyFbe\",\"xsmall\":\"Avatar--xsmall--6ITDl\",\"small\":\"Avatar--small--c0nCa\",\"large\":\"Avatar--large--niCTW\",\"xlarge\":\"Avatar--xlarge--Tl9Vd\",\"club\":\"Avatar--club--G2roN\",\"default\":\"Avatar--default--4oW8w\"};","import React, { useEffect } from 'react';\nimport { useSafeState } from '@strava/react-hooks/src/use-safe-state';\nimport AvatarFallback from '@strava/icons/NavigationProfileHighlightedMedium';\nimport EmployeeBadge from '@strava/icons/BadgesMulticolorSuperuserSmall';\nimport SubscriberBadge from '@strava/icons/BadgesMulticolorSummitSmall';\nimport ProBadge from '@strava/icons/BadgesMulticolorProSmall';\nimport VerifiedBadge from '@strava/icons/BadgesMulticolorVerifiedSmall';\nimport clsx from '../clsx';\n\nimport styles from './Avatar.module.scss';\n\ninterface ImgProps {\n src: string;\n alt: string;\n title: string;\n fallback?: React.ReactNode;\n}\n\nconst Img = ({ src, alt, title, fallback = null }: ImgProps) => {\n const [children, setChildren] = useSafeState(\n {alt}\n );\n\n useEffect(() => {\n let image: HTMLImageElement | null = new Image();\n image.onload = () => {\n setChildren({alt});\n };\n image.onerror = () => {\n setChildren(fallback);\n };\n image.src = src;\n return () => {\n image = null;\n };\n }, [src, alt, title, fallback]);\n\n return <>{children};\n};\n\nfunction getBadge(badge: string) {\n switch (badge) {\n case 'ambassador':\n return ;\n case 'employee':\n return ;\n case 'subscriber':\n case 'premium':\n return ;\n case 'pro':\n return ;\n case 'verified':\n return ;\n default:\n return null;\n }\n}\n\nexport type AvatarType = 'athlete' | 'club';\nexport type AvatarSize = 'xsmall' | 'small' | 'default' | 'large' | 'xlarge';\nexport type AvatarBadge =\n | '' // in some cases active has member_type as empty string for default users\n | 'ambassador'\n | 'employee'\n | 'subscriber'\n | 'premium' // legacy name referring to 'subscriber', used in active\n | 'pro'\n | 'verified';\n\ninterface BaseAvatarProps {\n src: string;\n type: AvatarType;\n name?: string;\n alt?: string;\n title?: string;\n size?: AvatarSize;\n badge?: AvatarBadge;\n className?: string;\n}\n\ntype AnchorProps = React.ComponentPropsWithoutRef<'a'> & {\n href?: string;\n};\ntype DivProps = React.ComponentPropsWithoutRef<'div'> & {\n href?: never;\n};\n\n// Guard to check if href exists in props\nconst hasHref = (props: AnchorProps | DivProps): props is AnchorProps =>\n 'href' in props;\n\ntype AvatarProps = BaseAvatarProps & (AnchorProps | DivProps);\n\n/**\n * Prop Deprecation Warning: We are slowly deprecating the `name` prop in favor of the `title` prop\n * so that the React props match up to the element's attribute.\n * */\nconst Avatar = ({\n name = '',\n alt = '',\n title,\n type,\n src,\n size,\n badge,\n className,\n ...otherProps\n}: AvatarProps) => {\n const classNames = clsx([\n styles.avatar,\n styles[type],\n className,\n size && styles[size]\n ]);\n\n // TODO: uncomment when existing Avatar usage is refactored. Otherwise, there will be a lot of warning in the console.\n // if (name || process.env.NODE_ENV !== 'production') {\n // console.warn(\n // '[Prop Deprecation Warning] Deprecating the `name` prop in favor of the `title`.'\n // );\n // }\n\n const children = (\n <>\n {badge &&
{getBadge(badge)}
}\n
\n : null}\n />\n
\n \n );\n\n if (hasHref(otherProps)) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n
\n );\n};\n\nexport default Avatar;\n","export type RegMessageVariants =\n | 'generic'\n | 'follow_athlete'\n | 'join_challenge'\n | 'join_club'\n | 'kudos_comment'\n | 'trial_sign_up';\n\n// when we add `_v2` strings for the variants, we need to map the variants to the proper key\nconst getTextKey = (variant: RegMessageVariants) => {\n if (\n variant === 'follow_athlete' ||\n variant === 'join_club' ||\n variant === 'trial_sign_up'\n ) {\n return `${variant}_v2`;\n }\n return variant;\n};\n\n// Not all variants have a subtitle. Attempt to translate the subtitle text\n// and if it can't be translated (`t` gives back the translation key),\n// we'll know not to render the subtitle.\nexport const getTitleAndSubtitle = (\n t: (k: string, p?: Record) => string,\n variant: RegMessageVariants,\n name?: string\n) => {\n const textKey = getTextKey(variant);\n const title = t(\n `account_registration_page_ui.registration_message.${textKey}.title`,\n { name }\n );\n\n const translatedSubtitle = t(\n `account_registration_page_ui.registration_message.${textKey}.subtitle`\n );\n\n const subtitle = translatedSubtitle.includes('account_registration_page_ui')\n ? null\n : translatedSubtitle;\n\n return { title, subtitle };\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"registrationMessage\":\"DesktopRegistrationMessage--registrationMessage--YbNw8\",\"subheadingContainer\":\"DesktopRegistrationMessage--subheadingContainer--X19Yz\",\"heading\":\"DesktopRegistrationMessage--heading--ut77-\",\"subheading\":\"DesktopRegistrationMessage--subheading--WR2zA\",\"withAvatar\":\"DesktopRegistrationMessage--withAvatar--628fC\"};","import React from 'react';\nimport clsx from '@strava/ui/clsx';\nimport Avatar, { AvatarType } from '@strava/ui/Avatar';\nimport { useStravaTranslations } from '@strava/container-context';\nimport {\n getTitleAndSubtitle,\n RegMessageVariants\n} from '../../helpers/getTitleAndSubtitle';\nimport styles from './DesktopRegistrationMessage.module.scss';\n\nexport type DesktopRegistrationMessageProps = {\n variant: RegMessageVariants;\n name?: string;\n avatar?: string;\n avatarType?: AvatarType;\n};\n\nexport const DesktopRegistrationMessage = ({\n variant,\n name,\n avatar,\n avatarType\n}: DesktopRegistrationMessageProps) => {\n const { t } = useStravaTranslations();\n const { title, subtitle } = getTitleAndSubtitle(t, variant, name);\n\n return (\n <>\n \n {avatar && (\n \n )}\n

\n {title}\n

\n
\n {subtitle && (\n
\n

\n {subtitle}\n

\n
\n )}\n \n );\n};\n\nexport default DesktopRegistrationMessage;\n","import React, { useEffect } from 'react';\nimport { useStravaTranslations } from '@strava/container-context';\nimport {\n DisclaimerText,\n AccountAuthButton,\n APPLE,\n FACEBOOK,\n GOOGLE,\n EmailRegistrationForm,\n AnalyticsFieldsTypes,\n EmailRegistrationFormProps,\n OrDivider,\n EMAIL_REGISTRATION_FORM_ALERT_ID\n} from '@strava/authentication-ui';\nimport { AlertContainer, AlertStatus, useAlertContext } from '@strava/ui/Alert';\nimport { matchMaxMedia } from '@strava/ui/MediaQuery';\n\ntype MobileRegistrationOptionsProps = EmailRegistrationFormProps & {\n track: (fields: AnalyticsFieldsTypes) => void;\n emailAuthorizationUrl: string;\n handleExtAuthBtnClick: (\n option: typeof FACEBOOK | typeof GOOGLE | typeof APPLE\n ) => void;\n cohort?: string | undefined;\n flashMessage?: string | undefined;\n};\n\nexport const MobileRegistrationOptions = ({\n emailAuthorizationUrl,\n handleExtAuthBtnClick,\n track,\n flashMessage,\n ...emailRegFormProps\n}: MobileRegistrationOptionsProps) => {\n const { t } = useStravaTranslations();\n const { showAlert } = useAlertContext();\n\n useEffect(() => {\n if (flashMessage) {\n showAlert({\n alertType: AlertStatus.ERROR,\n content: flashMessage,\n hideCloseButton: true,\n containerId: EMAIL_REGISTRATION_FORM_ALERT_ID,\n id: 'flashMessage'\n });\n }\n }, [flashMessage, showAlert]);\n\n const i18nPrefix = 'account_registration_page_ui';\n\n return (\n <>\n \n\n
\n handleExtAuthBtnClick(FACEBOOK)}\n data-testid=\"facebook_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.facebook_cta_v2`)}\n \n\n handleExtAuthBtnClick(GOOGLE)}\n data-testid=\"google_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.google_cta_v2`)}\n \n\n handleExtAuthBtnClick(APPLE)}\n data-testid=\"apple_auth_btn\"\n >\n {t(`${i18nPrefix}.signup_ctas.apple_cta_v2`)}\n \n\n \n \n\n \n
\n \n );\n};\n\nexport default MobileRegistrationOptions;\n","// extracted by mini-css-extract-plugin\nexport default {\"mobileRegistrationMessage\":\"MobileRegistrationMessage--mobileRegistrationMessage--8H5CO\"};","import React from 'react';\nimport { useStravaTranslations } from '@strava/container-context';\nimport clsx from '@strava/ui/clsx';\nimport {\n getTitleAndSubtitle,\n RegMessageVariants\n} from '../../helpers/getTitleAndSubtitle';\nimport styles from './MobileRegistrationMessage.module.scss';\ninterface MobileRegistrationMessageProps {\n variant: RegMessageVariants;\n name?: string;\n className?: string;\n}\n\nexport const MobileRegistrationMessage = ({\n variant,\n name,\n className\n}: MobileRegistrationMessageProps) => {\n const { t } = useStravaTranslations();\n const { title, subtitle } = getTitleAndSubtitle(t, variant, name);\n\n return (\n
\n

{title}

\n {subtitle &&

{subtitle}

}\n
\n );\n};\n\nexport default MobileRegistrationMessage;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n","import { map, uniqBy } from 'lodash-es';\n\nexport const getUniqueSizesFromImages = (images) =>\n map(uniqBy(images, 'size.id'), 'size');\n\nexport const getUniqueFormatsFromImages = (images) =>\n map(uniqBy(images, 'format'), 'format');\n\nexport const getUniqueResolutionsFromImages = (images) =>\n map(uniqBy(images, 'resolution'), 'resolution');\n\nexport const getImagesBySize = (images, size) => {\n return images.filter((image) => image.size.id === size.id);\n};\n\nexport const getImagesByFormat = (images, format) => {\n return images.filter((image) => image.format === format);\n};\n\nexport const getImagesByResolution = (images, resolution) => {\n return images.filter((image) => image.resolution === resolution);\n};\n\nexport default {\n getUniqueSizesFromImages,\n getUniqueFormatsFromImages,\n getUniqueResolutionsFromImages,\n getImagesBySize,\n getImagesByFormat,\n getImagesByResolution\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStravaErrorLogging } from '@strava/container-context';\nimport {\n getUniqueSizesFromImages,\n getUniqueFormatsFromImages,\n getUniqueResolutionsFromImages,\n getImagesBySize,\n getImagesByFormat,\n getImagesByResolution\n} from './helpers';\n\nconst SourceTags = ({ images }) => {\n const { logError } = useStravaErrorLogging();\n const [sources, setSources] = useState([]);\n\n useEffect(() => {\n const getSourceData = () => {\n const sourceData = [];\n\n try {\n getUniqueSizesFromImages(images).forEach((size) => {\n // Loop through sizes\n const imagesForSize = getImagesBySize(images, size); // Get images for current size\n const formatsForSize = getUniqueFormatsFromImages(imagesForSize); // Get formats for current sized images\n\n formatsForSize.forEach((format) => {\n // Loop through formats\n const imagesForSizeAndFormat = getImagesByFormat(\n imagesForSize,\n format\n ); // Get images for current size and format\n\n const resolutionsForSizeAndFormat = getUniqueResolutionsFromImages(\n imagesForSizeAndFormat\n ); // Get resolutions for current size and format\n\n // Get srcSet value\n const srcSet = resolutionsForSizeAndFormat\n .map((resolution) => {\n // Map through resolutions\n const imageBySizeAndFormatAndResolution = getImagesByResolution(\n imagesForSizeAndFormat,\n resolution\n ); // Get image for current size, format and resolution\n if (imageBySizeAndFormatAndResolution[0]) {\n return `${imageBySizeAndFormatAndResolution[0].file} ${resolution}`; // Return filename and resolution e.g. '863bfd6a6d3c6e43e7c6.png 1x'\n }\n return false;\n })\n .filter(Boolean) // Strip out any falsy values\n .join(', '); // Concatenate to form srcSet e.g. '863bfd6a6d3c6e43e7c6.png 1x, edbe289c4c8ee72858c6.png 2x'\n\n sourceData.push({\n size,\n format,\n srcSet\n });\n });\n });\n } catch (error) {\n logError(new Error(`Source tags not created, Error: ${error}`));\n }\n\n return sourceData;\n };\n\n const sourceData = getSourceData();\n setSources(sourceData);\n }, [images, logError]);\n\n return (\n <>\n {sources.map((source) => {\n const { size, format, srcSet } = source;\n\n return (\n \n );\n })}\n \n );\n};\n\nSourceTags.propTypes = {\n images: PropTypes.arrayOf(\n PropTypes.shape({\n file: PropTypes.string.isRequired,\n format: PropTypes.oneOf(['png', 'jpg', 'webp']).isRequired,\n resolution: PropTypes.oneOf(['1x', '2x']).isRequired,\n size: PropTypes.shape({\n id: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n value: PropTypes.string,\n minVw: PropTypes.string\n }).isRequired\n })\n ).isRequired\n};\n\nexport default SourceTags;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ImgTag = ({ src, className, isLazy, altText, dataCy }) => (\n \n);\n\nImgTag.propTypes = {\n src: PropTypes.string,\n className: PropTypes.string.isRequired,\n isLazy: PropTypes.bool,\n altText: PropTypes.string,\n dataCy: PropTypes.string\n};\n\nImgTag.defaultProps = {\n src: null,\n isLazy: false,\n altText: '',\n dataCy: null\n};\n\nexport default ImgTag;\n","export const DEFAULT_IMG_TAG_FALLBACK_CONFIG = {\n size: 'md',\n format: 'png',\n resolution: '1x'\n};\n\nexport default {\n DEFAULT_IMG_TAG_FALLBACK_CONFIG\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport SourceTags from './components/SourceTags';\nimport ImgTag from './components/ImgTag';\nimport DEFAULT_IMG_TAG_FALLBACK_CONFIG from './constants';\n\n/**\n * This component accepts an Array of objects representing `images` and other configuration parameters and renders a element with relevant tags and an tag\n * @param {Array} images Array of objects representing images e.g. [{ file: [FILEDATA], format: 'webp', resolution: '2x', 'size: { id: 'lg', value: 'large', minVw: '900px' }}]\n * @param {String} altText String to use as image alt text (optional)\n * @param {Object} imgTagFallbackConfig Overrides the DEFAULT_IMG_TAG_FALLBACK_CONFIG which selects the image to use as the fallback img src (optional)\n * @param {String} className Classname to apply to `` (optional)\n * @param {Boolean} isLazy Indicates if image loading attribute should be set to 'lazy' or 'eager' (optional, defaults to false => 'eager')\n * @param {String} dataCy Cypress test id to be applied to `` (optional)\n */\n\nexport const Picture = ({\n images,\n altText,\n imgTagFallbackConfig = DEFAULT_IMG_TAG_FALLBACK_CONFIG,\n className,\n isLazy,\n dataCy\n}) => {\n const [fallbackImgSrc, setFallbackImgSrc] = useState(null);\n\n useEffect(() => {\n if (!fallbackImgSrc) {\n const defaultImage = images.find(\n (image) =>\n image.resolution === imgTagFallbackConfig.resolution &&\n image.format === imgTagFallbackConfig.format &&\n image.size.id === imgTagFallbackConfig.size\n );\n\n if (defaultImage?.file) {\n setFallbackImgSrc(defaultImage.file);\n }\n }\n }, [images, imgTagFallbackConfig, fallbackImgSrc]);\n\n if (!images.length) {\n return false;\n }\n\n return (\n \n \n \n \n );\n};\n\nPicture.defaultProps = {\n imgTagFallbackConfig: DEFAULT_IMG_TAG_FALLBACK_CONFIG,\n altText: '',\n className: '',\n isLazy: false,\n dataCy: null\n};\n\nPicture.propTypes = {\n images: PropTypes.arrayOf(\n PropTypes.shape({\n file: PropTypes.string.isRequired,\n format: PropTypes.oneOf(['png', 'webp', 'jpg']).isRequired,\n resolution: PropTypes.oneOf(['1x', '2x']).isRequired,\n size: PropTypes.shape({\n id: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n value: PropTypes.string,\n minVw: PropTypes.string\n }).isRequired\n })\n ).isRequired,\n imgTagFallbackConfig: PropTypes.shape({\n size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n format: PropTypes.oneOf(['png', 'webp', 'jpg']),\n resolution: PropTypes.oneOf(['1x', '2x'])\n }),\n altText: PropTypes.string,\n className: PropTypes.string,\n isLazy: PropTypes.bool,\n dataCy: PropTypes.string\n};\n\nexport default Picture;\n","// extracted by mini-css-extract-plugin\nexport default {\"tabletImage\":\"TabletImage--tabletImage--2cLKT\"};","import React, { useEffect, useState } from 'react';\nimport clsx from '@strava/ui/clsx';\nimport {\n breakpoints,\n matchMaxMedia,\n matchMinMedia\n} from '@strava/ui/MediaQuery';\nimport { useStravaErrorLogging } from '@strava/container-context';\nimport { Picture } from '@strava/shared-ui';\nimport styles from './TabletImage.module.scss';\n\ninterface TabletImageProps {\n className?: string;\n}\n\ntype Image = {\n file: string;\n resolution: '1x' | '2x';\n format: 'webp' | 'png';\n size: { id: string; minVw: string };\n};\n\nexport const TabletImage = ({ className }: TabletImageProps) => {\n const { logError } = useStravaErrorLogging();\n const [tabletImages, setTabletImages] = useState([]);\n\n useEffect(() => {\n (async () => {\n const isTablet = matchMinMedia.screenSm() && matchMaxMedia.screenSmMax();\n\n if (isTablet) {\n // webpack comments ensure that the background images are included\n // with the current chunk, which prevents `active` from making a forbidden\n // request to cloudfront\n const importImage = async (filename: string) => {\n try {\n return (\n await import(\n /* webpackMode: \"eager\" */\n /* webpackExports: [\"default\", \"named\"] */\n `./assets/${filename}`\n )\n ).default;\n } catch (error) {\n logError(error);\n }\n };\n\n const resolutions = ['1x', '2x'] as const;\n const formats = ['png', 'webp'] as const;\n\n resolutions.forEach((resolution) => {\n formats.forEach(async (format) => {\n const file = await importImage(\n `Sign-Up-Page-Tablet@${resolution}.${format}`\n );\n\n if (file) {\n setTabletImages((prev) => [\n ...prev,\n {\n format,\n resolution,\n file,\n size: { id: 'sm', minVw: `${breakpoints.screenSm}px` }\n }\n ]);\n }\n });\n });\n }\n })();\n }, [logError]);\n\n return (\n
\n \n
\n );\n};\n\nexport default TabletImage;\n","// extracted by mini-css-extract-plugin\nexport default {\"noBackground\":\"src--noBackground--4HFP2\",\"desktopRegContainer\":\"src--desktopRegContainer--uG8L4\",\"mobileRegContainer\":\"src--mobileRegContainer--dqTUB\",\"mobileAndTabletContainer\":\"src--mobileAndTabletContainer--iCZmP\",\"mobileAndTabletOnly\":\"src--mobileAndTabletOnly--jp8h3\",\"tabletOnly\":\"src--tabletOnly--eVoI4\",\"desktopOnly\":\"src--desktopOnly--AzphY\"};","import React, { useCallback, useEffect } from 'react';\nimport FrontDoorsPageContainer, {\n getDefaultEventHandlers\n} from '@strava/front-doors-page-container-ui';\nimport { AlertProvider } from '@strava/ui/Alert';\nimport {\n AnalyticsFieldsTypes,\n EMAIL,\n EmailRegistrationFormProps\n} from '@strava/authentication-ui';\nimport {\n useStravaAnalytics,\n useStravaErrorLogging,\n useStravaBranch\n} from '@strava/container-context';\nimport { useApple } from '@strava/utils/src/externalSocialPartners/useApple';\nimport { setFullScreenBackgroundImage } from '@strava/utils/src/utils';\nimport DesktopRegistrationOptions from './components/DesktopRegistrationOptions';\nimport DesktopRegistrationMessage, {\n DesktopRegistrationMessageProps\n} from './components/DesktopRegistrationMessage';\nimport MobileRegistrationOptions from './components/MobileRegistrationOptions';\nimport MobileRegistrationMessage from './components/MobileRegistrationMessage';\nimport TabletImage from './components/TabletImage';\nimport { useExtAuthBtnClickHandler } from './helpers/useExtAuthBtnClickHandler.hook';\nimport { matchMinMedia } from '@strava/ui/MediaQuery';\nimport clsx from '@strava/ui/clsx';\nimport styles from './AccountRegistrationPage.module.scss';\n\nexport type AccountRegistrationPageProps = EmailRegistrationFormProps & {\n registrationMessage: DesktopRegistrationMessageProps;\n authorizationUrls: {\n email: string;\n facebook: string;\n google: string;\n };\n background: `background-${string}`; // where string is a number ('background-3')\n locale: string;\n denyNonessentialCookies: boolean;\n dataSharingOptedOut: boolean;\n userAgent: string;\n appleState: string;\n cohort?: string | undefined;\n flashMessage?: string | undefined;\n};\n\nconst AccountRegistrationPage = ({\n registrationMessage,\n background,\n locale,\n denyNonessentialCookies,\n dataSharingOptedOut,\n authorizationUrls,\n userAgent,\n appleState,\n ...regOptionsProps\n}: AccountRegistrationPageProps) => {\n const { track: _track } = useStravaAnalytics();\n const { logError } = useStravaErrorLogging();\n const { signin: appleSignin } = useApple(appleState, logError);\n\n useEffect(() => {\n (async () => {\n // only import background image on desktop\n if (matchMinMedia.screenMd()) {\n // webpack comments ensure that the background images are included\n // with the current chunk, which prevents `active` from making a forbidden\n // request to cloudfront\n const importImage = async () => {\n try {\n return (\n await import(\n /* webpackMode: \"eager\" */\n /* webpackExports: [\"default\", \"named\"] */\n `./assets/${background}.jpg`\n )\n ).default;\n } catch (error) {\n logError(error);\n }\n };\n\n const backgroundImage = await importImage();\n\n if (backgroundImage) {\n // apply background image directly to ``\n setFullScreenBackgroundImage(backgroundImage);\n }\n }\n })();\n }, [background, logError]);\n\n const track = useCallback(\n (fields: AnalyticsFieldsTypes) => {\n _track({\n category: 'onboarding',\n page: 'register',\n ...fields,\n properties: {\n background,\n copy_variant: registrationMessage.variant,\n ...fields.properties\n }\n });\n },\n [_track, background, registrationMessage.variant]\n );\n\n const { handleExtAuthBtnClick } = useExtAuthBtnClickHandler({\n appleSignin,\n authorizationUrls,\n track\n });\n\n const { isProcessing, appLink, createLink, cookiesAccepted } =\n useStravaBranch();\n\n // generate branch appLink (deeplink) when the sdk has successfully been\n // initialized.\n useEffect(() => {\n if (!isProcessing) {\n createLink({ feature: 'register' });\n }\n\n // only listen to cookiesAccepted and isProcessing\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cookiesAccepted, isProcessing]);\n\n return (\n \n \n \n
\n \n \n
\n
\n \n
\n \n\n
\n \n \n
\n \n
\n );\n};\n\nexport default AccountRegistrationPage;\n","import {\n MOBILE_OS,\n SUPPORTED_BROWSERS,\n APPLE_APP_LINK_PATHS\n} from '@strava/constants/src/appConstants';\nimport { isString } from 'lodash-es';\nimport camelCase from 'lodash-es/camelCase';\nimport snakeCase from 'lodash-es/snakeCase';\nimport isObject from 'lodash-es/isObject';\nimport { CamelCasedPropertiesDeep, SnakeCasedPropertiesDeep } from 'type-fest';\n\nexport const generateRandomId = () => Math.random().toString(36).substring(2);\n\n// Capitalizes all the words and replaces some characters in the string to create a nicer looking title.\n// eg. 'man from the boondocks' => 'Man From The Boondocks'\nexport const titleize = (sentence: string) => {\n return sentence\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nexport const displayName = (\n { firstName = '', lastName = '' },\n options = { forceAnonymize: false, maxLength: 100 }\n) => {\n const { maxLength, forceAnonymize } = options;\n const fullName = `${firstName} ${lastName}`;\n\n if (forceAnonymize || fullName.length > maxLength) {\n if (firstName.length > maxLength - 3) {\n return `${titleize(firstName.substring(0, maxLength - 4))}... ${lastName\n .charAt(0)\n .toUpperCase()}.`;\n }\n return `${titleize(firstName)} ${lastName.charAt(0).toUpperCase()}.`;\n }\n return fullName.trim();\n};\n\n/**\n * Checks to see if device is mobile\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {boolean} - true if the device is mobile\n */\nexport const isMobile = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n // ref - https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_tablet_or_desktop\n return userAgent.toLowerCase().includes('mobi');\n }\n return false;\n};\n\n/**\n * Determines the OS for mobile devices\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['android', 'ipad', 'iphone'] or null for unknown\n */\nexport const getMobileOS = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Android')) {\n return MOBILE_OS.android;\n }\n if (userAgent.includes('iPad')) {\n return MOBILE_OS.iPad;\n }\n if (userAgent.includes('iPhone')) {\n return MOBILE_OS.iPhone;\n }\n }\n return null;\n};\n\n/**\n * Determines, in a limited fashion, the browser according to the user agent.\n * NOTE: UAs are notoriously difficult to parse. This is meant as a bare-bones, noncomprehensive parser,\n * based on https://www.whatismybrowser.com/guides/the-latest-user-agent/.\n *\n * The order of conditionals is important, bc some Chrome & Firefox UAs include 'Safari', too.\n * Some Edge UAs may be recognized as Chrome for now, since they can include 'Chrome'. We don't\n * officially support Edge (yet?).\n *\n * @param {string} userAgent - user agent string for the current browser. For next-js apps (SSR),\n * this value can be retrieved from request.headers['user-agent']\n * @returns {(string|null)} - one of ['chrome', 'firefox', 'safari'] or null for unknown/unsupported browser\n */\nexport const getBrowser = (userAgent = window?.navigator?.userAgent) => {\n if (isString(userAgent)) {\n if (userAgent.includes('Chrome') || userAgent.includes('CriOS')) {\n return SUPPORTED_BROWSERS.chrome;\n }\n if (userAgent.includes('Firefox') || userAgent.includes('FxiOS'))\n return SUPPORTED_BROWSERS.firefox;\n if (userAgent.includes('Safari')) {\n return SUPPORTED_BROWSERS.safari;\n }\n }\n\n return null;\n};\n\n/**\n * Universal links are determined by the paths described in `apple-app-site-association` in active.\n * @param {string} pathname - window.location.pathname or nextjs equivalent\n * @returns {boolean} - whether the pathname string matches\n */\nexport const isUniversalLinkPage = (pathname: string) => {\n if (isString(pathname)) {\n return APPLE_APP_LINK_PATHS.some((path: string) => {\n const pathWithoutAsterisk = path.replace('/*', '');\n return pathname.startsWith(pathWithoutAsterisk);\n });\n }\n return false;\n};\n\n// eg. given,\n// \"urls\": {\n// \"100\": \"https://photo_url_1\",\n// \"1800\": \"https://photo_url_2\"\n// }\n// returns https://photo_url_2\nexport const getPhotoWithMaxDimension = (\n photoUrlHash: Record\n) => {\n if (!isObject(photoUrlHash)) {\n return '';\n }\n const key = Object.keys(photoUrlHash).reduce((a, b) => (a > b ? a : b));\n return photoUrlHash[key];\n};\n\n/**\n * Immutably merges a payload into an item in an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to update\n * @param {object} payload - the value to merge into the matched item\n * @param {object} options\n * @param {string} [options.idName=id] - the key of the unique identifier\n * @param {bool} [options.upsert=false] - if true, will insert the payload into the array as a new item if no matching item is found\n * @return {array} - A copy of the original array with the matching item updated\n */\nexport function arrayUpdateItemById(\n array: T[],\n id: string | number,\n payload: Partial,\n { idName, upsert }: { idName?: keyof T; upsert?: boolean } = {}\n): T[] {\n let itemFound = false;\n const property = idName || ('id' as keyof T);\n const mappedArray = array.map((item) => {\n itemFound = itemFound || item[property] === id;\n return item[property] === id ? { ...item, ...payload } : item;\n });\n\n return itemFound || !upsert ? mappedArray : ([...array, payload] as T[]);\n}\n\n/**\n * Immutably removes an item from an array by index\n * @param {array} array\n * @param {number} index - the index of the item to remove\n * @return {array} - A copy of the original array with the matching item removed\n */\nexport function arrayRemoveByIndex(array: T[], index: number): T[] {\n return index === -1\n ? array\n : [...array.slice(0, index), ...array.slice(index + 1)];\n}\n\n/**\n * Immutably removes an item from an array of objects\n * @param {array} array - An array of objects\n * @param {string|number} id - The unique id of the item in the array to remove\n * @param {string} [idName=id] - the key of the unique identifier\n * @return {array} - A copy of the original array with the matching item removed\n */\n\nexport function arrayRemoveItemById(\n array: T[],\n propertyValue: string | number,\n idName = 'id'\n): T[] {\n const index = array.findIndex(\n (item) => item[idName as keyof T] === propertyValue\n );\n return arrayRemoveByIndex(array, index);\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n `${string.charAt(0).toUpperCase()}${string.slice(1)}`;\n\n/**\n * @description Converts Object keys from string of any case to camelCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToCamel(object: T): CamelCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToCamel(item)\n ) as CamelCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = camelCase(k);\n const value = object[\n k as keyof typeof object\n ] as CamelCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToCamel(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToCamel(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as CamelCasedPropertiesDeep);\n }\n\n return object as CamelCasedPropertiesDeep;\n}\n\n/**\n * @description Converts Object keys from string of any case to snakeCase.\n * Handles nested objects and arrays.\n * */\nexport function convertKeysToSnake(object: T): SnakeCasedPropertiesDeep {\n if (Array.isArray(object)) {\n return (object as unknown[]).map((item) =>\n convertKeysToSnake(item)\n ) as SnakeCasedPropertiesDeep;\n }\n\n if (isObject(object)) {\n return Object.keys(object).reduce((o, k) => {\n const key = snakeCase(k);\n const value = object[\n k as keyof typeof object\n ] as SnakeCasedPropertiesDeep;\n\n if (isObject(value)) {\n return {\n ...o,\n [key]: convertKeysToSnake(value)\n };\n }\n\n if (Array.isArray(value)) {\n return {\n ...o,\n [key]: (value as unknown[]).map((item) => convertKeysToSnake(item))\n };\n }\n\n return {\n ...o,\n [key]: value\n };\n }, {} as SnakeCasedPropertiesDeep);\n }\n\n return object as SnakeCasedPropertiesDeep;\n}\n\n/**\n * Checks to see if localStorage is available\n *\n * @return {boolean} - true if localStorage can be used\n */\nexport const isLocalStorageAvailable = () => {\n const test = 'test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Appends querystring params to a URL\n *\n * @param {string} originalUrl - The original URL to append params to\n * @param {object} params - An object of key value parameters to append to URL\n * @return {string} - URL with params appended\n */\nexport const addParamsToURL = (originalUrl: string, params: object) => {\n const url = new URL(originalUrl);\n\n Object.entries(params).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n\n return url.toString();\n};\n\n/**\n * Some of our logged-out pages have a full-screen image background.\n * This util helps with setting the background image on the `` element, and\n * just requires passing in the image to be used.\n * @param {string} background\n */\nexport const setFullScreenBackgroundImage = (background: string) => {\n // apply background image directly to ``\n const body = document.querySelector('body');\n if (body) {\n body.style.setProperty('background-image', `url(${background})`);\n body.style.setProperty('background-size', 'cover');\n body.style.setProperty('background-position', 'center');\n }\n};\n\n/**\n * Uses the host to determine if a page is being loaded in staging or localhost.\n *\n * This util function is helpful for apps that run on nextJS which has node process\n * defined as production in both staging and production.\n *\n * @param host - host name\n * @returns {boolean} - true if app is running in staging or local\n */\nexport const isStagingOrLocal = (host: string) =>\n ['staging', 'localhost'].some((_host) => host.includes(_host));\n\n/**\n * Adds an id property to each object in an array. Uses the object's index as the value for the id\n * @param {array} objects - An array of objects\n * @return {array} - A copy of the original array with id property added to each object\n */\nexport const arrayAddIndexAsId = (objects: Array) =>\n objects.map((object, index) => ({ ...object, id: index }));\n","import {\n elemAttrForAnalytics,\n APPLE,\n FACEBOOK,\n GOOGLE,\n AnalyticsFieldsTypes\n} from '@strava/authentication-ui';\n\nexport const useExtAuthBtnClickHandler = ({\n appleSignin,\n authorizationUrls,\n track\n}: {\n appleSignin: () => void;\n authorizationUrls: {\n google: string;\n facebook: string;\n };\n track: (fields: AnalyticsFieldsTypes) => void;\n}) => {\n /**\n * Facebook, Google, & Apple signup buttons onClick handler\n * Apple sign in uses function provided by Apple web sdk to handle sign in, FB & Google\n * sign ins use url provided by server\n */\n const handleExtAuthBtnClick = (\n option: typeof FACEBOOK | typeof GOOGLE | typeof APPLE\n ) => {\n const element = elemAttrForAnalytics(option);\n track({\n action: 'click',\n element\n });\n track({\n action: 'redirect',\n element,\n properties: {\n // no redirect url for Apple, so send `null` instead\n redirect_url: option === APPLE ? null : authorizationUrls[option],\n path_type: 'external_partner'\n }\n });\n\n if (option === APPLE) {\n appleSignin();\n } else {\n window.location.assign(authorizationUrls[option]);\n }\n };\n\n return { handleExtAuthBtnClick };\n};\n","\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}"],"names":["module","exports","utils","require","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","responseType","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","instance","prototype","extend","axios","create","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","validator","validators","interceptors","arguments","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","push","chain","Array","apply","concat","length","shift","newConfig","onFulfilled","onRejected","error","getUri","replace","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","Error","transformData","throwIfCancellationRequested","call","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","axiosKeys","otherKeys","Object","keys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","i","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","callback","arr","pkg","type","thing","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","desc","opts","console","warn","schema","allowUnknown","result","getPrototypeOf","isFunction","obj","l","hasOwnProperty","constructor","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","a","b","str","stripBOM","content","charCodeAt","modules","__webpack_require__","configurable","enumerable","get","getter","ReactIs","__webpack_exports__","toHyphenLower","hyphenateStyleName","uppercasePattern","msPattern","cache","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_defineProperty","defineProperty","writable","__WEBPACK_IMPORTED_MODULE_0_prop_types__","__WEBPACK_IMPORTED_MODULE_0_prop_types___default","n","stringOrNumber","oneOfType","string","matchers","orientation","oneOf","scan","aspectRatio","deviceAspectRatio","height","deviceHeight","width","deviceWidth","color","bool","colorIndex","monochrome","resolution","features","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","maxHeight","minDeviceHeight","maxDeviceHeight","minWidth","maxWidth","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","types","grid","aural","braille","handheld","print","projection","screen","tty","tv","embossed","_extends","assign","_typeof","Symbol","iterator","_classCallCheck","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_possibleConstructorReturn","self","_assertThisInitialized","_getPrototypeOf","o","setPrototypeOf","__proto__","ReferenceError","_inherits","subClass","superClass","_setPrototypeOf","p","d","MediaQueryContextConsumer","MediaQuery","Context","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_prop_types__","__WEBPACK_IMPORTED_MODULE_1_prop_types___default","__WEBPACK_IMPORTED_MODULE_2_matchmediaquery__","__WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default","__WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_4__mediaQuery__","__WEBPACK_IMPORTED_MODULE_5__toQuery__","defaultTypes","component","node","query","values","shape","children","func","onChange","excludedQueryKeys","omit","object","newObject","getValues","_ref","reduce","getQuery","_React$Component","_getPrototypeOf2","_this","_len","_key","matches","mq","state","addListener","updateMatches","prevProps","prevState","cleanupMediaQuery","_unmounted","removeListener","dispose","setState","Component","createContext","useContext","displayName","isValidElementType","typeOf","isAsyncMode","hasWarnedAboutDeprecatedIsAsyncMode","lowPriorityWarning$1","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","lowPriorityWarning","printWarning","_key2","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","emptyFunctionThatReturnsNull","ReactPropTypesSecret","checkPropTypes","has","x","componentName","propFullName","secret","err","manualPropTypeCallCache","manualPropTypeWarningCount","isRequired","validate","chainedCheckType","getPropType","expectedType","getPreciseType","getClassName","propValue","String","createChainableTypeChecker","propType","arrayOfTypeCheckers","getPostfixForTypeWarning","shapeTypes","isNode","isSymbol","ANONYMOUS","FAUX_ITERATOR_SYMBOL","ReactPropTypes","array","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","exact","PropTypeError","toObject","propIsEnumerable","test1","test2","test3","from","symbols","to","s","typeSpecs","typeSpecName","loggedTypeFailures","resetWarningCache","Mql","mql","matchMedia","staticMatch","dynamicMatch","matchQuery","mediaQuery","typeMatch","modifier","expValue","parseQuery","expressions","feature","toDecimal","ratio","decimal","numbers","toDpi","toPx","RE_MEDIA_QUERY","RE_MQ_EXPRESSION","RE_MQ_FEATURE","RE_LENGTH_UNIT","RE_RESOLUTION_UNIT","keyVal","k","realKey","negate","conds","cond","rules","__WEBPACK_IMPORTED_MODULE_1__mediaQuery__","useWindowScrollTop","windowScrollTop","setWindowScrollTop","useState","onScroll","useCallback","scrollY","useEffect","removeEventListener","freeze","man","woman","preferNotSay","nonBinary","LOCALE","deDE","enUS","enGB","esES","es419","frFR","itIT","jaJP","koKR","nlNL","ptBR","ptPT","ruRU","zhCN","zhTW","EXPERIMENT_COHORTS","de","es","fr","it","ja","ko","nl","pt","ru","zh","control","variantA","variantB","MOBILE_OS","android","iPhone","iPad","chrome","firefox","safari","optedOut","toVal","mix","y","_args","tmp","FrontDoorsPageContainerContext","useFrontDoorsPageContainerContext","FrontDoorsPageContainerContextProvider","React","Provider","className","alt","fill","style","role","viewBox","clsx","xmlns","display","fillRule","clipRule","ref","variant","styles","btn","forwardRef","otherProps","IconButton","onClick","ariaLabel","Button","defaultProps","propTypes","PropTypes","DesktopNav","t","onDesktopHeaderLoginBtnClick","onDesktopHeaderSignupBtnClick","onDesktopHeaderLogoClick","cohort","menuConfig","showLoginOptionOnly","handleLogoClick","StravaLogo","handleLoginBtnClick","handleSignupBtnClick","signupBtnCopy","global","freeSelf","freeGlobal","Function","root","objectProto","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","getRawTag","objectToString","isObjectLike","baseGetTag","getMobileOS","includes","CallToAction","label","dataCy","appLink","isProcessing","useStravaBranch","LinkButton","disabled","MenuDrawer","isOpen","top","onClose","onMobileHeaderMenuSignupBtnClick","onMobileHeaderMenuLoginBtnClick","setLocation","generateLinkProps","_ref2","destination","active","Drawer","direction","zIndex","size","menuDrawer","customIdSuffix","lockBackgroundScroll","primaryOptions","map","_ref3","secondaryOptions","_ref4","menuList","menuDrawerBtn","drawerCallToAction","MenuIcon","MobileNav","isMenuOpen","toggleMenu","mobileAppDownloadBannerRef","useRef","onMobileHeaderLogoClick","onMobileHeaderMenuOpen","onMobileHeaderMenuClose","onMobileHeaderSignupBtnClick","page","category","showSmartBanner","branch","forceSmartBanner","setForceSmartbanner","queryParams","searchParams","SmartBanner","mobileOS","handleMenuToggle","current","getBoundingClientRect","_","isScrolling","DEFAULT_LOCALIZED_IMAGES_SIZES","minVw","DEFAULT_LOCALIZED_IMAGES_FORMATS","DEFAULT_LOCALIZED_IMAGES_RESOLUTIONS","DEFAULT_LOCALIZED_IMAGES_DIRECTORY","DEFAULT_LOCALIZED_IMAGES_SIZES_ORDER","DEFAULT_LOCALIZED_IMAGES_FORMATS_ORDER","sortImagesBySizeAndFormat","sizeOrder","formatOrder","image1","image2","image1Size","format","image1Format","image2Size","image2Format","getImageLocaleDirectory","locale","defaultDirectory","getImageLocale","useLocalizedImages","sizes","formats","resolutions","imageImportCallback","logError","images","setImages","initialState","mountedRef","useSafeState","async","file","imageData","importImage","imageLocaleDirectory","imageKey","imageSize","imageFormat","imageResolution","imageLocale","prevImages","initImages","sort","Badge","badge","imgTagFallbackConfig","sources","setSources","fallbackImgSrc","setFallbackImgSrc","sourceData","getSourceData","imgWebp1x","find","image","imgWebp2x","imgPng1x","imgPng2x","webp","png","defaultImage","entries","srcSet","src","loading","APP_STORE_BADGE_SIZES","APP_STORES","google","apple","unknown","mobileOsToAppStore","onBadgeClick","getLanguage","useStravaTranslations","useStravaErrorLogging","importBadgeImage","default","appleBadgeImages","googleBadgeImages","appStore","SocialLink","altText","rel","Footer","onFooterAppStoreBadgeClick","dataSharingOptedOut","cpraI18nPrefix","socialLinks","useMemo","socialTwitterImage","socialYouTubeImage","socialInstagramImage","socialLinkedInImage","socialFacebookImage","socialLink","CPRAComplianceCTA","i18nPrefix","signUpLinkCopy","AppStoreBadges","UPDATE_WINDOW_SCROLL_TOP","reducer","action","FrontDoorsPageContainer","header","footer","onScreenEnter","track","_track","useStravaAnalytics","_t","noop","showHeader","showFooter","setTags","setContext","headerRef","fields","properties","dispatch","useReducer","providerState","Header","getDefaultEventHandlers","additionalTrackProperties","onHeaderLogoClickTrackEvent","signup_copy","cta_copy","SvgActionsCancelCircleHighlightedMedium","title","titleId","SvgActionsCheckCircleOnMedium","SvgNavigationWarningHighlightedMedium","SvgNavigationInformationNormalMedium","SvgActionsCancelNormalSmall","useInterval","delay","savedCallback","setInterval","clearInterval","clip","clipPath","overflow","position","whiteSpace","AlertStatus","ERROR","SUCCESS","WARNING","INFO","ALERT_DELAY","fadeStyles","enter","exit","alertType","autoDismiss","autoDismissDelay","contentPosition","hideCloseButton","hideIcon","iconSize","indicatorIcon","messageType","alertStyle","buttonStyle","ErrorIcon","SuccessIcon","WarningIcon","InfoIcon","getAlertDetails","fadeStyle","setFadeStyle","handleOnClose","alert","fadeIn","fadeOut","alertInner","alertContent","alignLeft","alignCenter","alignRight","VisuallyHidden","closeButtonContainer","button","CancelIcon","autoDismissBar","useQueue","initialValues","_temp","queue","enqueue","items","dequeue","updateQueue","clearQueue","peek","AlertContext","useAlertContext","AlertProvider","showAlert","alertConfig","Math","random","substring","containerId","alerts","some","hideAlert","clearAlerts","defaultTranslateAlertInfoText","totalAlertsShown","totalAlerts","AlertContainer","limit","shouldShowAlertInfoText","translateAlertInfoText","filterLimit","index","filterContainer","containerIdProp","rest","Alert","APPLE","EMAIL","FACEBOOK","GOOGLE","iteratee","symbolProto","symbolToString","baseToString","arrayMap","appendScriptToBody","script","querySelector","appendChild","injectAppleScript","AppleID","formattedLocale","useApple","signin","stravaInit","init","clientId","scope","redirectURI","signIn","_excluded","ReCAPTCHA","handleExpired","handleErrored","handleChange","handleRecaptchaRef","_proto","getCaptchaFunction","fnName","grecaptcha","enterprise","getValue","getResponse","_widgetId","getWidgetId","execute","_executeRequested","executeAsync","_this2","executionResolve","executionReject","reset","resetter","forceReset","onExpired","onErrored","explicitRender","render","wrapper","sitekey","theme","tabindex","stoken","hl","isolated","captcha","componentDidMount","componentDidUpdate","elem","_this$props","childProps","excluded","sourceKeys","_objectWithoutPropertiesLoose","callbackName","getOptions","recaptchaOptions","makeAsyncScriptLoader","dynamicOptions","useRecaptchaNet","globalName","attributes","nonce","elemAttrForAnalytics","option","SvgActionsVisibleDisabledNormalSmall","SvgActionsVisibleNormalSmall","showPasswordText","hidePasswordText","passwordIsVisible","setPasswordIsVisible","Input","prev","ActionsVisibleNormalSmall","ActionsVisibleDisabledNormalSmall","inputMessage","errorMessage","errorMessageTestId","input","htmlFor","PasswordInput","textInput","stagingBaseUrlFromWindow","baseUrlFromWindow","useStagingApi","env","USE_STAGING_API","currentLanguage","optionalHeaders","moreOptions","csrfToken","metaCsrfTag","head","getCsrfToken","EMAIL_REGISTRATION_FORM_ALERT_ID","authorizationUrl","reCaptchaSiteKey","honeyPot","isPremium","clubId","plan","challengeId","autoJoinChallenge","formAuthToken","idPrefix","isInView","formInput","setFormInput","email","passwordErrorMsg","setPasswordErrMsg","emailValidationState","setEmailValidationState","setIsProcessing","emailInput","passwordInput","recaptchaRef","useRecaptcha","emailRegFormAlert","handleEmailFormSubmit","recaptchaToken","getRecaptchaToken","formData","append","isNil","apiClient","post","catch","submitFormData","pathType","load","path_type","redirect_url","validateEmail","isValidEmail","isExistingEmail","EmailValidator","isUniqueEmail","isAlreadyRegisteredEmail","validatePassword","isValidPassword","passwordValidationMsg","handleInputChange","event","onSubmit","preventDefault","validateForm","is_valid_email","is_valid_password","is_existing_email","focus","noValidate","RegistrationInput","placeholder","onBlur","autoComplete","Spinner","AppleLogo","FacebookLogo","GoogleLogo","EmailLogo","fallback","_ref$attributes","_ref$children","_ref$selfClose","selfClose","Tag","_node","Filter","address","invalid","audio","br","void","body","TYPE_FLOW","TYPE_PHRASING","caption","parent","col","colgroup","details","dd","dl","dt","figcaption","hr","img","li","main","ol","picture","rb","rp","rt","rtc","ruby","summary","table","tbody","td","tfoot","th","thead","tr","ul","video","wbr","createConfigBuilder","tagConfigs","_extends2","TYPE_PALPABLE","cite","class","colspan","controls","datetime","dir","kind","lang","loop","media","muted","poster","span","start","srclang","srcset","rowspan","StyleFilter","_Filter","INVALID_STYLES","createHTMLDocument","Parser","filters","keyIndex","container","allowed","allowList","ALLOWED_TAG_LIST","Set","BANNED_TAG_LIST","_proto3","nextNode","parentConfig","tagName","matchedString","valid","_parts","isVoid","partProps","tokenName","elementIndex","tokenizedString","elements","_match","childConfig","Boolean","noHtml","disableLineBreaks","nextMarkup","createContainer","createDocument","INVALID_ROOTS","el","newName","ATTRIBUTES","newValue","Number","count","letter","parseNode","parentNode","transform","transformOnlyAllowList","mergedText","_this3","transformed","elementProps","_open","_match2","text","startIndex","_elements$tokenName","matcher","endIndex","nodes","containerTagName","emptyContent","parsedContent","mainContent","markup","legalTerms","terms_path","legalPrivacy","privacy_path","Markup","noWrap","orDivider","or","breakpoints","matchMaxMedia","screenXs","screenXsMax","screenSm","screenSmMax","screenMd","screenMdMax","screenLg","screenLgMax","screenXl","matchMinMedia","emailAuthorizationUrl","handleExtAuthBtnClick","flashMessage","emailRegFormProps","externalSignups","AccountAuthButton","emailSignup","EmailRegistrationForm","DisclaimerText","OrDivider","SvgNavigationProfileHighlightedMedium","SvgBadgesMulticolorSuperuserSmall","SvgBadgesMulticolorSummitSmall","SvgBadgesMulticolorProSmall","SvgBadgesMulticolorVerifiedSmall","Img","setChildren","Image","onload","classNames","avatar","ProBadge","EmployeeBadge","SubscriberBadge","VerifiedBadge","getBadge","imgWrapper","AvatarFallback","getTitleAndSubtitle","textKey","getTextKey","translatedSubtitle","subtitle","avatarType","Avatar","__data__","other","eq","splice","assocIndexOf","pop","ListCache","clear","entry","set","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","uid","maskSrcKey","exec","coreJsData","IE_PROTO","funcToString","reIsHostCtor","funcProto","reIsNative","isMasked","toSource","baseIsNative","getNative","nativeCreate","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","Map","isKeyable","getMapData","MapCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","pairs","LARGE_ARRAY_SIZE","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","SetCache","add","setCacheAdd","setCacheHas","predicate","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","arraySome","othIndex","cacheHas","Uint8Array","symbolValueOf","valueOf","byteLength","byteOffset","convert","mapToArray","setToArray","stacked","equalArrays","offset","keysFunc","symbolsFunc","arrayPush","resIndex","propertyIsEnumerable","nativeGetSymbols","arrayFilter","stubArray","isArguments","baseIsArguments","freeExports","nodeType","freeModule","Buffer","stubFalse","reIsUint","typedArrayTags","isLength","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","baseUnary","baseIsTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","isIndex","Ctor","arg","overArg","isPrototype","nativeKeys","isArrayLike","arrayLikeKeys","baseKeys","baseGetAllKeys","getSymbols","objProps","getAllKeys","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","DataView","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","WeakMap","getTag","ctorString","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsEqual","baseIsEqualDeep","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isStrictComparable","getMatchData","matchesStrictComparable","baseIsMatch","reIsDeepProp","reIsPlainProp","memoize","resolver","memoized","Cache","rePropName","reEscapeChar","stringToPath","memoizeCapped","quote","subString","isKey","castPath","toKey","defaultValue","baseGet","hasFunc","hasPath","baseHasIn","hasIn","baseProperty","basePropertyDeep","identity","baseMatchesProperty","baseMatches","property","fromRight","iterable","createBaseFor","eachFunc","collection","createBaseEach","baseFor","baseEach","baseMap","baseIteratee","fromIndex","strictIndexOf","baseFindIndex","baseIsNaN","baseIndexOf","comparator","arrayIncludes","isCommon","arrayIncludesWith","createSet","outer","computed","seenIndex","baseUniq","getUniqueSizesFromImages","uniqBy","getUniqueFormatsFromImages","getUniqueResolutionsFromImages","getImagesBySize","getImagesByFormat","getImagesByResolution","SourceTags","imagesForSize","imagesForSizeAndFormat","imageBySizeAndFormatAndResolution","ImgTag","DEFAULT_IMG_TAG_FALLBACK_CONFIG","Picture","tabletImages","setTabletImages","filename","registrationMessage","background","denyNonessentialCookies","authorizationUrls","appleState","regOptionsProps","appleSignin","backgroundImage","setProperty","setFullScreenBackgroundImage","copy_variant","useExtAuthBtnClickHandler","createLink","cookiesAccepted","MobileRegistrationMessage","MobileRegistrationOptions","TabletImage","DesktopRegistrationMessage","DesktopRegistrationOptions","tester","part","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","SCRIPT_MAP","idCount","makeAsyncScript","getScriptURL","WrappedComponent","wrappedComponentName","AsyncScriptLoader","_Component","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","loaded","obsKey","observers","scriptURL","_options","scriptId","errored","attribute","callObserverFuncAndRemoveObserver","observersMap","observer","componentWillUnmount","removeOnUnmount","allScripts","getElementsByTagName","removeChild","forwardedRef","ForwardedComponent"],"sourceRoot":""}