gitextract_p813z3cw/ ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .mcignore ├── .nvmrc ├── .prettierrc ├── .sass-lint.yml ├── .taskcluster.yml ├── .travis.yml ├── AboutNewTabService.jsm ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── aboutlibrary/ │ ├── content/ │ │ └── aboutlibrary.xhtml │ ├── jar.mn │ └── moz.build ├── bin/ │ ├── bootstrap │ ├── download-firefox-artifact │ ├── prepare-mochitests-dev │ ├── render-activity-stream-html.js │ ├── try-runner.js │ └── vendor.js ├── common/ │ ├── Actions.jsm │ ├── Dedupe.jsm │ ├── PerfService.jsm │ └── Reducers.jsm ├── components.conf ├── content-src/ │ ├── .eslintrc.js │ ├── aboutlibrary/ │ │ ├── aboutlibrary.jsx │ │ └── aboutlibrary.scss │ ├── activity-stream.jsx │ ├── asrouter/ │ │ ├── README.md │ │ ├── asrouter-content.jsx │ │ ├── components/ │ │ │ ├── Button/ │ │ │ │ ├── Button.jsx │ │ │ │ └── _Button.scss │ │ │ ├── ConditionalWrapper/ │ │ │ │ └── ConditionalWrapper.jsx │ │ │ ├── FxASignupForm/ │ │ │ │ ├── FxASignupForm.jsx │ │ │ │ └── _FxASignupForm.scss │ │ │ ├── ImpressionsWrapper/ │ │ │ │ └── ImpressionsWrapper.jsx │ │ │ ├── ModalOverlay/ │ │ │ │ ├── ModalOverlay.jsx │ │ │ │ └── _ModalOverlay.scss │ │ │ ├── RichText/ │ │ │ │ └── RichText.jsx │ │ │ └── SnippetBase/ │ │ │ ├── SnippetBase.jsx │ │ │ └── _SnippetBase.scss │ │ ├── docs/ │ │ │ ├── debugging-docs.md │ │ │ ├── experiment-guide.md │ │ │ ├── targeting-attributes.md │ │ │ ├── targeting-guide.md │ │ │ └── user-actions.md │ │ ├── rich-text-strings.js │ │ ├── schemas/ │ │ │ ├── message-format.md │ │ │ ├── panel/ │ │ │ │ └── cfr-fxa-bookmark.schema.json │ │ │ └── provider-response.schema.json │ │ ├── template-utils.js │ │ └── templates/ │ │ ├── CFR/ │ │ │ └── templates/ │ │ │ └── ExtensionDoorhanger.schema.json │ │ ├── EOYSnippet/ │ │ │ ├── EOYSnippet.jsx │ │ │ ├── EOYSnippet.schema.json │ │ │ └── _EOYSnippet.scss │ │ ├── FXASignupSnippet/ │ │ │ ├── FXASignupSnippet.jsx │ │ │ └── FXASignupSnippet.schema.json │ │ ├── FirstRun/ │ │ │ ├── FirstRun.jsx │ │ │ ├── Interrupt.jsx │ │ │ ├── Triplets.jsx │ │ │ └── addUtmParams.js │ │ ├── FullPageInterrupt/ │ │ │ ├── FullPageInterrupt.jsx │ │ │ └── _FullPageInterrupt.scss │ │ ├── NewsletterSnippet/ │ │ │ ├── NewsletterSnippet.jsx │ │ │ └── NewsletterSnippet.schema.json │ │ ├── OnboardingMessage/ │ │ │ ├── OnboardingMessage.jsx │ │ │ ├── OnboardingMessage.schema.json │ │ │ ├── ToolbarBadgeMessage.schema.json │ │ │ ├── UpdateAction.schema.json │ │ │ ├── WhatsNewMessage.schema.json │ │ │ └── _OnboardingMessage.scss │ │ ├── ReturnToAMO/ │ │ │ ├── ReturnToAMO.jsx │ │ │ └── _ReturnToAMO.scss │ │ ├── SendToDeviceSnippet/ │ │ │ ├── SendToDeviceSnippet.jsx │ │ │ ├── SendToDeviceSnippet.schema.json │ │ │ └── isEmailOrPhoneNumber.js │ │ ├── SimpleBelowSearchSnippet/ │ │ │ ├── SimpleBelowSearchSnippet.jsx │ │ │ ├── SimpleBelowSearchSnippet.schema.json │ │ │ └── _SimpleBelowSearchSnippet.scss │ │ ├── SimpleSnippet/ │ │ │ ├── SimpleSnippet.jsx │ │ │ ├── SimpleSnippet.schema.json │ │ │ └── _SimpleSnippet.scss │ │ ├── SubmitFormSnippet/ │ │ │ ├── SubmitFormSnippet.jsx │ │ │ ├── SubmitFormSnippet.schema.json │ │ │ └── _SubmitFormSnippet.scss │ │ ├── Trailhead/ │ │ │ ├── Trailhead.jsx │ │ │ └── _Trailhead.scss │ │ └── template-manifest.jsx │ ├── components/ │ │ ├── A11yLinkButton/ │ │ │ ├── A11yLinkButton.jsx │ │ │ └── _A11yLinkButton.scss │ │ ├── ASRouterAdmin/ │ │ │ ├── ASRouterAdmin.jsx │ │ │ ├── ASRouterAdmin.scss │ │ │ └── SimpleHashRouter.jsx │ │ ├── Base/ │ │ │ ├── Base.jsx │ │ │ └── _Base.scss │ │ ├── Card/ │ │ │ ├── Card.jsx │ │ │ ├── _Card.scss │ │ │ └── types.js │ │ ├── CollapsibleSection/ │ │ │ ├── CollapsibleSection.jsx │ │ │ └── _CollapsibleSection.scss │ │ ├── ComponentPerfTimer/ │ │ │ └── ComponentPerfTimer.jsx │ │ ├── ConfirmDialog/ │ │ │ ├── ConfirmDialog.jsx │ │ │ └── _ConfirmDialog.scss │ │ ├── ContextMenu/ │ │ │ ├── ContextMenu.jsx │ │ │ ├── ContextMenuButton.jsx │ │ │ └── _ContextMenu.scss │ │ ├── DiscoveryStreamBase/ │ │ │ ├── DiscoveryStreamBase.jsx │ │ │ └── _DiscoveryStreamBase.scss │ │ ├── DiscoveryStreamComponents/ │ │ │ ├── CardGrid/ │ │ │ │ ├── CardGrid.jsx │ │ │ │ └── _CardGrid.scss │ │ │ ├── DSCard/ │ │ │ │ ├── DSCard.jsx │ │ │ │ └── _DSCard.scss │ │ │ ├── DSContextFooter/ │ │ │ │ ├── DSContextFooter.jsx │ │ │ │ └── _DSContextFooter.scss │ │ │ ├── DSDismiss/ │ │ │ │ ├── DSDismiss.jsx │ │ │ │ └── _DSDismiss.scss │ │ │ ├── DSEmptyState/ │ │ │ │ ├── DSEmptyState.jsx │ │ │ │ └── _DSEmptyState.scss │ │ │ ├── DSImage/ │ │ │ │ ├── DSImage.jsx │ │ │ │ └── _DSImage.scss │ │ │ ├── DSLinkMenu/ │ │ │ │ ├── DSLinkMenu.jsx │ │ │ │ └── _DSLinkMenu.scss │ │ │ ├── DSMessage/ │ │ │ │ ├── DSMessage.jsx │ │ │ │ └── _DSMessage.scss │ │ │ ├── DSPrivacyModal/ │ │ │ │ ├── DSPrivacyModal.jsx │ │ │ │ └── _DSPrivacyModal.scss │ │ │ ├── DSTextPromo/ │ │ │ │ ├── DSTextPromo.jsx │ │ │ │ └── _DSTextPromo.scss │ │ │ ├── Hero/ │ │ │ │ ├── Hero.jsx │ │ │ │ └── _Hero.scss │ │ │ ├── Highlights/ │ │ │ │ ├── Highlights.jsx │ │ │ │ └── _Highlights.scss │ │ │ ├── HorizontalRule/ │ │ │ │ ├── HorizontalRule.jsx │ │ │ │ └── _HorizontalRule.scss │ │ │ ├── List/ │ │ │ │ ├── List.jsx │ │ │ │ └── _List.scss │ │ │ ├── Navigation/ │ │ │ │ ├── Navigation.jsx │ │ │ │ └── _Navigation.scss │ │ │ ├── SafeAnchor/ │ │ │ │ └── SafeAnchor.jsx │ │ │ ├── SectionTitle/ │ │ │ │ ├── SectionTitle.jsx │ │ │ │ └── _SectionTitle.scss │ │ │ └── TopSites/ │ │ │ ├── TopSites.jsx │ │ │ └── _TopSites.scss │ │ ├── DiscoveryStreamImpressionStats/ │ │ │ ├── ImpressionStats.jsx │ │ │ └── _ImpressionStats.scss │ │ ├── ErrorBoundary/ │ │ │ ├── ErrorBoundary.jsx │ │ │ └── _ErrorBoundary.scss │ │ ├── FluentOrText/ │ │ │ └── FluentOrText.jsx │ │ ├── LinkMenu/ │ │ │ └── LinkMenu.jsx │ │ ├── MoreRecommendations/ │ │ │ ├── MoreRecommendations.jsx │ │ │ └── _MoreRecommendations.scss │ │ ├── PocketLoggedInCta/ │ │ │ ├── PocketLoggedInCta.jsx │ │ │ └── _PocketLoggedInCta.scss │ │ ├── Search/ │ │ │ ├── Search.jsx │ │ │ └── _Search.scss │ │ ├── SectionMenu/ │ │ │ └── SectionMenu.jsx │ │ ├── Sections/ │ │ │ ├── Sections.jsx │ │ │ └── _Sections.scss │ │ ├── TopSites/ │ │ │ ├── SearchShortcutsForm.jsx │ │ │ ├── TopSite.jsx │ │ │ ├── TopSiteForm.jsx │ │ │ ├── TopSiteFormInput.jsx │ │ │ ├── TopSites.jsx │ │ │ ├── TopSitesConstants.js │ │ │ └── _TopSites.scss │ │ └── Topics/ │ │ ├── Topics.jsx │ │ └── _Topics.scss │ ├── lib/ │ │ ├── constants.js │ │ ├── detect-user-session-start.js │ │ ├── init-store.js │ │ ├── link-menu-options.js │ │ ├── screenshot-utils.js │ │ ├── section-menu-options.js │ │ └── selectLayoutRender.js │ └── styles/ │ ├── _activity-stream.scss │ ├── _icons.scss │ ├── _mixins.scss │ ├── _normalize.scss │ ├── _theme.scss │ ├── _variables.scss │ ├── activity-stream-linux.scss │ ├── activity-stream-mac.scss │ └── activity-stream-windows.scss ├── contributing.md ├── data/ │ └── content/ │ └── tippytop/ │ └── top_sites.json ├── docs/ │ ├── ISSUE_TEMPLATE.md │ ├── index.rst │ └── v2-system-addon/ │ ├── 1.GETTING_STARTED.md │ ├── data_dictionary.md │ ├── data_events.md │ ├── geo_locale.md │ ├── mochitests.md │ ├── preferences.md │ ├── remote_cfr.md │ ├── sections.md │ ├── telemetry.md │ ├── test-merges.md │ ├── tippytop.md │ └── unit_testing_guide.md ├── hooks/ │ ├── post-commit │ └── pre-commit ├── jar.mn ├── karma.mc.config.js ├── lib/ │ ├── ASRouter.jsm │ ├── ASRouterFeed.jsm │ ├── ASRouterPreferences.jsm │ ├── ASRouterTargeting.jsm │ ├── ASRouterTriggerListeners.jsm │ ├── AboutPreferences.jsm │ ├── ActivityStream.jsm │ ├── ActivityStreamMessageChannel.jsm │ ├── ActivityStreamPrefs.jsm │ ├── ActivityStreamStorage.jsm │ ├── BookmarkPanelHub.jsm │ ├── CFRMessageProvider.jsm │ ├── CFRPageActions.jsm │ ├── DiscoveryStreamFeed.jsm │ ├── DownloadsManager.jsm │ ├── FaviconFeed.jsm │ ├── FilterAdult.jsm │ ├── HighlightsFeed.jsm │ ├── LinksCache.jsm │ ├── NaiveBayesTextTagger.jsm │ ├── NewTabInit.jsm │ ├── NmfTextTagger.jsm │ ├── OnboardingMessageProvider.jsm │ ├── PanelTestProvider.jsm │ ├── PersistentCache.jsm │ ├── PersonalityProvider.jsm │ ├── PlacesFeed.jsm │ ├── PrefsFeed.jsm │ ├── RecipeExecutor.jsm │ ├── RemoteL10n.jsm │ ├── Screenshots.jsm │ ├── SearchShortcuts.jsm │ ├── SectionsManager.jsm │ ├── ShortURL.jsm │ ├── SiteClassifier.jsm │ ├── SnippetsTestMessageProvider.jsm │ ├── Store.jsm │ ├── SystemTickFeed.jsm │ ├── TelemetryFeed.jsm │ ├── TippyTopProvider.jsm │ ├── Tokenize.jsm │ ├── ToolbarBadgeHub.jsm │ ├── ToolbarPanelHub.jsm │ ├── TopSitesFeed.jsm │ ├── TopStoriesFeed.jsm │ ├── UTEventReporting.jsm │ └── UserDomainAffinityProvider.jsm ├── loaders/ │ └── inject-loader.js ├── mochitest.sh ├── moz.build ├── nsIAboutNewTabService.idl ├── package.json ├── ping-centre/ │ └── PingCentre.jsm ├── test/ │ ├── .eslintrc.js │ ├── browser/ │ │ ├── blue_page.html │ │ ├── browser.ini │ │ ├── browser_aboutwelcome.js │ │ ├── browser_as_load_location.js │ │ ├── browser_as_render.js │ │ ├── browser_asrouter_bookmarkpanel.js │ │ ├── browser_asrouter_cfr.js │ │ ├── browser_asrouter_snippets.js │ │ ├── browser_asrouter_targeting.js │ │ ├── browser_asrouter_toolbarbadge.js │ │ ├── browser_asrouter_trigger_listeners.js │ │ ├── browser_asrouter_whatsnewpanel.js │ │ ├── browser_discovery_render.js │ │ ├── browser_discovery_styles.js │ │ ├── browser_enabled_newtabpage.js │ │ ├── browser_getScreenshots.js │ │ ├── browser_highlights_section.js │ │ ├── browser_newtab_overrides.js │ │ ├── browser_onboarding_rtamo.js │ │ ├── browser_topsites_contextMenu_options.js │ │ ├── browser_topsites_section.js │ │ ├── head.js │ │ └── red_page.html │ ├── schemas/ │ │ └── pings.js │ ├── unit/ │ │ ├── asrouter/ │ │ │ ├── ASRouter.test.js │ │ │ ├── ASRouterFeed.test.js │ │ │ ├── ASRouterPreferences.test.js │ │ │ ├── ASRouterTargeting.test.js │ │ │ ├── ASRouterTriggerListeners.test.js │ │ │ ├── CFRMessageProvider.test.js │ │ │ ├── CFRPageActions.test.js │ │ │ ├── MessageLoaderUtils.test.js │ │ │ ├── ModalOverlay.test.jsx │ │ │ ├── PanelTestProvider.test.js │ │ │ ├── RemoteL10n.test.js │ │ │ ├── RichText.test.jsx │ │ │ ├── SnippetsTestMessageProvider.test.js │ │ │ ├── TargetingDocs.test.js │ │ │ ├── asrouter-content.test.jsx │ │ │ ├── compatibility-reference/ │ │ │ │ ├── fx57-compat.test.js │ │ │ │ └── snippets-fx57.js │ │ │ ├── constants.js │ │ │ ├── schemas/ │ │ │ │ └── panel/ │ │ │ │ └── cfr-fxa-bookmark.schema.test.js │ │ │ ├── template-utils.test.js │ │ │ └── templates/ │ │ │ ├── EOYSnippet.test.jsx │ │ │ ├── ExtensionDoorhanger.test.jsx │ │ │ ├── FXASignupSnippet.test.jsx │ │ │ ├── FirstRun.test.jsx │ │ │ ├── FullPageInterrupt.test.jsx │ │ │ ├── FxASignupForm.test.jsx │ │ │ ├── Interrupt.test.jsx │ │ │ ├── NewsletterSnippet.test.jsx │ │ │ ├── OnboardingMessage.test.jsx │ │ │ ├── SendToDeviceSnippet.test.jsx │ │ │ ├── SimpleBelowSearchSnippet.test.jsx │ │ │ ├── SimpleSnippet.test.jsx │ │ │ ├── SubmitFormSnippet.test.jsx │ │ │ ├── Trailhead.test.jsx │ │ │ ├── Triplets.test.jsx │ │ │ └── isEmailOrPhoneNumber.test.js │ │ ├── common/ │ │ │ ├── Actions.test.js │ │ │ ├── Dedupe.test.js │ │ │ ├── PerfService.test.js │ │ │ └── Reducers.test.js │ │ ├── content-src/ │ │ │ ├── components/ │ │ │ │ ├── ASRouterAdmin.test.jsx │ │ │ │ ├── Base.test.jsx │ │ │ │ ├── Card.test.jsx │ │ │ │ ├── CollapsibleSection.test.jsx │ │ │ │ ├── ComponentPerfTimer.test.jsx │ │ │ │ ├── ConfirmDialog.test.jsx │ │ │ │ ├── ContextMenu.test.jsx │ │ │ │ ├── DiscoveryStreamBase.test.jsx │ │ │ │ ├── DiscoveryStreamComponents/ │ │ │ │ │ ├── CardGrid.test.jsx │ │ │ │ │ ├── DSCard.test.jsx │ │ │ │ │ ├── DSContextFooter.test.jsx │ │ │ │ │ ├── DSDismiss.test.jsx │ │ │ │ │ ├── DSEmptyState.test.jsx │ │ │ │ │ ├── DSImage.test.jsx │ │ │ │ │ ├── DSLinkMenu.test.jsx │ │ │ │ │ ├── DSMessage.test.jsx │ │ │ │ │ ├── DSPrivacyModal.test.jsx │ │ │ │ │ ├── DSTextPromo.test.jsx │ │ │ │ │ ├── Hero.test.jsx │ │ │ │ │ ├── Highlights.test.jsx │ │ │ │ │ ├── HorizontalRule.test.jsx │ │ │ │ │ ├── ImpressionStats.test.jsx │ │ │ │ │ ├── List.test.jsx │ │ │ │ │ ├── Navigation.test.jsx │ │ │ │ │ ├── SafeAnchor.test.jsx │ │ │ │ │ ├── SectionTitle.test.jsx │ │ │ │ │ └── TopSites.test.jsx │ │ │ │ ├── ErrorBoundary.test.jsx │ │ │ │ ├── FluentOrText.test.jsx │ │ │ │ ├── LinkMenu.test.jsx │ │ │ │ ├── MoreRecommendations.test.jsx │ │ │ │ ├── PocketLoggedInCta.test.jsx │ │ │ │ ├── ReturnToAMO.test.jsx │ │ │ │ ├── Search.test.jsx │ │ │ │ ├── SectionMenu.test.jsx │ │ │ │ ├── Sections.test.jsx │ │ │ │ ├── TopSites/ │ │ │ │ │ └── SearchShortcutsForm.test.jsx │ │ │ │ ├── TopSites.test.jsx │ │ │ │ ├── Topics.test.jsx │ │ │ │ └── addUtmParams.test.js │ │ │ └── lib/ │ │ │ ├── detect-user-session-start.test.js │ │ │ ├── init-store.test.js │ │ │ ├── screenshot-utils.test.js │ │ │ └── selectLayoutRender.test.js │ │ ├── lib/ │ │ │ ├── AboutPreferences.test.js │ │ │ ├── ActivityStream.test.js │ │ │ ├── ActivityStreamMessageChannel.test.js │ │ │ ├── ActivityStreamPrefs.test.js │ │ │ ├── ActivityStreamStorage.test.js │ │ │ ├── BookmarkPanelHub.test.js │ │ │ ├── DiscoveryStreamFeed.test.js │ │ │ ├── DownloadsManager.test.js │ │ │ ├── FaviconFeed.test.js │ │ │ ├── FilterAdult.test.js │ │ │ ├── HighlightsFeed.test.js │ │ │ ├── LinksCache.test.js │ │ │ ├── NaiveBayesTextTagger.test.js │ │ │ ├── NewTabInit.test.js │ │ │ ├── NmfTextTagger.test.js │ │ │ ├── PersistentCache.test.js │ │ │ ├── PersonalityProvider.test.js │ │ │ ├── PlacesFeed.test.js │ │ │ ├── PrefsFeed.test.js │ │ │ ├── RecipeExecutor.test.js │ │ │ ├── Screenshots.test.js │ │ │ ├── SectionsManager.test.js │ │ │ ├── ShortUrl.test.js │ │ │ ├── SiteClassifier.test.js │ │ │ ├── Store.test.js │ │ │ ├── SystemTickFeed.test.js │ │ │ ├── TelemetryFeed.test.js │ │ │ ├── TippyTopProvider.test.js │ │ │ ├── Tokenize.test.js │ │ │ ├── ToolbarBadgeHub.test.js │ │ │ ├── ToolbarPanelHub.test.js │ │ │ ├── TopSitesFeed.test.js │ │ │ ├── TopStoriesFeed.test.js │ │ │ ├── UTEventReporting.test.js │ │ │ └── UserDomainAffinityProvider.test.js │ │ ├── ping-centre/ │ │ │ └── PingCentre.test.js │ │ ├── unit-entry.js │ │ └── utils.js │ └── xpcshell/ │ ├── test_ASRouterTargeting_attribution.js │ ├── test_AboutNewTabService.js │ └── xpcshell.ini ├── vendor/ │ ├── PROP_TYPES_LICENSE │ ├── REACT_AND_REACT_DOM_LICENSE │ ├── REACT_REDUX_LICENSE │ ├── REACT_TRANSITION_GROUP_LICENSE │ ├── REDUX_LICENSE │ ├── Redux.jsm │ ├── prop-types.js │ ├── react-dev.js │ ├── react-dom-dev.js │ ├── react-dom.js │ ├── react-redux.js │ ├── react-transition-group.js │ ├── react.js │ └── redux.js ├── webpack.aboutlibrary.config.js ├── webpack.system-addon.config.js └── yamscripts.yml