local l_CoreGui_0 = game:GetService("CoreGui");
local l_HttpService_0 = game:GetService("HttpService");
local l_AppStorageService_0 = game:GetService("AppStorageService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.RoactRodux);
local l_default_0 = require(l_CorePackages_0.Workspace.Packages.WebViewProtocol).default;
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_AppBrowserService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppBrowserService;
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local l_AppGame_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGame;
local v12 = require(l_Modules_0.LuaApp.Services.AppWebView);
local l_AppLinking_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppLinking;
local v14 = require(l_Modules_0.Common.RoactUtilities.ExternalEventConnection);
local v15 = require(l_Modules_0.LuaApp.Enum.NotificationType);
local v16 = require(l_Modules_0.LuaApp.Enum.LocalStorageKey);
local l_LaunchGame_0 = require(l_CorePackages_0.Workspace.Packages.GameLaunch).LaunchGame;
local v18 = require(l_Modules_0.LuaApp.Http.UrlBuilder);
local v19 = require(l_Modules_0.LuaApp.Http.UrlBase);
local v20 = require(l_Modules_0.LuaApp.AppPage);
local l_ChatEntryPointNames_0 = require(l_CorePackages_0.Workspace.Packages.SocialCommon).Enums.ChatEntryPointNames;
local l_EnteredChatFromEntryPoint_0 = require(l_CorePackages_0.Workspace.Packages.AppChat).Actions.EnteredChatFromEntryPoint;
local v23 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v24 = require(l_Modules_0.LuaApp.Thunks.NavigateBack);
local v25 = require(l_Modules_0.LuaApp.Thunks.NavigateFromWebView);
local v26 = game:DefineFastFlag("HybridEventReceiverFixBaseUrl", false);
local v27 = game:DefineFastFlag("GenericNavigationDeepLinkEnabled", false);
local v28 = game:DefineFastFlag("PushPermissionTriggerEnabled", false);
local v29 = v5.Component:extend("UniversalAppRobloxHybridEventReceiver");
v29.init = function(v30)
    v30.onJavascriptCallback = function(v31)
        local v32 = l_HttpService_0:JSONDecode(v31);
        if not (v32.moduleID == "Navigation" and v32.functionName == "startWebChatConversation") or not v32.params.userId then
            if not (v32.moduleID == "Navigation" and v32.functionName == "openUserProfile") or not v32.params.userId then
                if not (v32.moduleID == "Navigation" and v32.functionName == "navigateToFeature") or not v32.params.params.urlPath then
                    if not ((v27 and v32.moduleID == "Navigation") and v32.functionName == "navigateToFeature") or not v32.params.params.deepLinkUrlPath then
                        if not (v32.moduleID == "Game" and v32.functionName == "launchGame") or not v32.params.request.placeId then
                            if (v32.moduleID == "Game" and v32.functionName == "launchGame") and v32.params.request.requestType == "RequestFollowUser" then
                                if not l_default_0.isEnabled() then
                                    v30.props.browserService:CloseBrowserWindow();
                                else
                                    v30.props.navigateBack();
                                    v30.props.webView:closeWindow();
                                end;
                                l_LaunchGame_0(nil, "FollowUserJSHybridEvent", {
                                    userId = v32.params.request.userId,
                                    joinAttemptId = v32.params.request.joinAttemptId,
                                    joinAttemptOrigin = v32.params.request.joinAttemptOrigin
                                }, v30.props.game, v32.params.request.joinAttemptOrigin, nil);
                                return ;
                            elseif v32.moduleID == "Localization" and v32.functionName == "languageChangeTrigger" then
                                if not l_default_0.isEnabled() then
                                    v30.props.browserService:CloseBrowserWindow();
                                else
                                    v30.props.navigateBack();
                                    v30.props.webView:closeWindow();
                                end;
                                local l_newRobloxLanguageValue_0 = v32.params.newRobloxLanguageValue;
                                if typeof(l_newRobloxLanguageValue_0) == "table" then
                                    l_newRobloxLanguageValue_0 = l_newRobloxLanguageValue_0.locale;
                                end;
                                l_AppStorageService_0:SetItem(v16.RobloxLocaleId, (string.gsub(l_newRobloxLanguageValue_0, "_", "-")));
                                v30.props.guiService:BroadcastNotification("", v15.RESTART_LUA_APP);
                                return ;
                            else
                                if (v28 and v32.moduleID == "Push") and v32.functionName == "pushPermissionTrigger" then
                                    v30.props.guiService:BroadcastNotification(v32.moduleID, v15.APP_READY);
                                end;
                                return ;
                            end;
                        else
                            if not l_default_0.isEnabled() then
                                v30.props.browserService:CloseBrowserWindow();
                            else
                                v30.props.navigateBack();
                                v30.props.webView:closeWindow();
                            end;
                            l_LaunchGame_0(v32.params.request.placeId, "GameDetailPageJSHybridEvent", {
                                accessCode = v32.params.request.accessCode,
                                gameInstanceId = v32.params.request.instanceId,
                                linkCode = v32.params.request.linkCode,
                                joinAttemptId = v32.params.request.joinAttemptId,
                                joinAttemptOrigin = v32.params.request.joinAttemptOrigin
                            }, v30.props.game, v32.params.request.joinAttemptOrigin, nil);
                            return ;
                        end;
                    else
                        v30.props.linking:detectURL(v32.params.params.deepLinkUrlPath);
                        return ;
                    end;
                elseif not l_default_0.isEnabled() then
                    if not v26 then
                        v30.props.browserService:CloseBrowserWindow();
                        v30.props.navigateDown({
                            name = v20.GenericWebPage,
                            detail = v19.WWW .. v32.params.params.urlPath,
                            extraProps = {
                                title = v32.params.params.feature or ""
                            }
                        });
                        return ;
                    else
                        local v34 = v18.fromString("www:" .. v32.params.params.urlPath);
                        v30.props.browserService:CloseBrowserWindow();
                        v30.props.navigateDown({
                            name = v20.GenericWebPage,
                            detail = v34(),
                            extraProps = {
                                title = v32.params.params.feature or ""
                            }
                        });
                        return ;
                    end;
                elseif not v26 then
                    v30.props.navigateFromWebView({
                        name = v20.GenericWebPage,
                        detail = v19.WWW .. v32.params.params.urlPath,
                        extraProps = {
                            title = v32.params.params.feature or ""
                        }
                    });
                    return ;
                else
                    v30.props.navigateFromWebView({
                        name = v20.GenericWebPage,
                        detail = v18.fromString("www:" .. v32.params.params.urlPath)(),
                        extraProps = {
                            title = v32.params.params.feature or ""
                        }
                    });
                    return ;
                end;
            elseif not l_default_0.isEnabled() then
                v30.props.browserService:CloseBrowserWindow();
                v30.props.navigateDown({
                    name = v20.ViewUserProfile,
                    detail = v32.params.userId
                });
                return ;
            else
                v30.props.navigateFromWebView({
                    name = v20.ViewUserProfile,
                    detail = v32.params.userId
                });
                return ;
            end;
        else
            if not l_default_0.isEnabled() then
                v30.props.browserService:CloseBrowserWindow();
            end;
            v30.props.enteredChatFromEntryPoint(l_ChatEntryPointNames_0.AppShellWebView);
            v30.props.guiService:BroadcastNotification(tostring(v32.params.userId), v15.LAUNCH_CONVERSATION);
            return ;
        end;
    end;
end;
v29.render = function(v35)
    return v5.createElement(v14, {
        event = v35.props.browserService.JavaScriptCallback,
        callback = v35.onJavascriptCallback
    });
end;
return (l_RoactServices_0.connect({
    browserService = l_AppBrowserService_0,
    guiService = l_AppGuiService_0,
    game = l_AppGame_0,
    linking = l_AppLinking_0,
    webView = not not l_default_0.isEnabled() and v12 or nil
})((v6.connect(nil, function(v36)
    return {
        navigateDown = function(v37)
            return v36(v23(v37));
        end,
        navigateBack = not not l_default_0.isEnabled() and function()
            return v36(v24());
        end or nil,
        navigateFromWebView = not not l_default_0.isEnabled() and function(v38)
            return v36(v25(v38));
        end or nil,
        enteredChatFromEntryPoint = function(v39)
            return v36(l_EnteredChatFromEntryPoint_0(v39));
        end
    };
end)(v29))));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RunService_0 = game:GetService("RunService");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Roact);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v5 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
local v6 = v3.Component:extend("EventStreamUpdateComponent");
v6.render = function(_)
    return nil;
end;
v6.didMount = function(v8)
    local l_analytics_0 = v8.props.analytics;
    local l_releasePeriod_0 = v8.props.releasePeriod;
    local function _()
        l_analytics_0.EventStream:releaseRBXEventStream();
    end;
    v8.releaseEvents = true;
    spawn(function()
        wait(l_releasePeriod_0);
        while v8.releaseEvents do
            l_analytics_0.EventStream:releaseRBXEventStream();
            wait(l_releasePeriod_0);
        end;
    end);
    if not l_RunService_0:IsStudio() then
        game:BindToClose(function()
            v8.releaseEvents = false;
            l_analytics_0.EventStream:releaseRBXEventStream();
        end);
    end;
end;
return l_RoactServices_0.connect({
    analytics = v5
})(v6);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_UserInputService_0 = game:GetService("UserInputService");
local v4 = require(l_Modules_0.LuaApp.withLocalization);
local v5 = require(l_Modules_0.LuaApp.Constants);
local v6 = require(l_Modules_0.LuaApp.Components.ScreenGuiWithBlurControl);
local v7 = require(l_CorePackages_0.Roact);
local v8 = require(l_CorePackages_0.UIBlox);
local _ = v8.App.ImageSet.Images;
local _ = v8.App.Constant.IconSize;
local l_withStyle_0 = v8.Style.withStyle;
local l_Toast_0 = v8.App.Dialog.Toast;
local v13 = "F11";
if l_UserInputService_0:GetPlatform() == Enum.Platform.OSX then
    v13 = "Ctrl + Command + F";
end;
return function(_)
    return v4({
        titleText = "CommonUI.Messages.Label.ToExitFullscreen"
    })(function(v15)
        return l_withStyle_0(function(v16)
            local l_Footer_0 = v16.Font.Footer;
            local _ = v16.Theme.TextEmphasis;
            local _ = l_Footer_0.RelativeSize * v16.Font.BaseSize;
            return v7.createElement(v7.Portal, {
                target = l_CoreGui_0
            }, {
                ExitFullscreenToastScreen = v7.createElement(v6, {
                    ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
                    DisplayOrder = v5.DisplayOrder.Toast
                }, {
                    Toast = v7.createElement(l_Toast_0, {
                        duration = 3,
                        toastContent = {
                            toastTitle = v13,
                            toastSubtitle = v15.titleText
                        }
                    })
                })
            });
        end);
    end);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v4 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags);
local l_RoactNetworking_0 = v4.RoactNetworking;
local l_RoactAnalyticsCommonGameEvents_0 = v4.RoactAnalyticsCommonGameEvents;
local l_AppEventIngestService_0 = v4.AppEventIngestService;
local v8 = require(l_CorePackages_0.Packages.t);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v10 = require(l_CorePackages_0.Packages.Dash);
local l_withNavigation_0 = require(l_CorePackages_0.RoactNavigation).withNavigation;
local v12 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums);
local l_AppPage_0 = v12.AppPage;
local l_UiMode_0 = v12.UiMode;
local l_useUiModeInfo_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useUiModeInfo;
local l_AppGameTile_0 = require(l_CorePackages_0.Workspace.Packages.GameTile).AppGameTile;
local v17 = require(l_CorePackages_0.Cryo);
local l_gamePlayIntent_0 = require(l_CorePackages_0.Workspace.Packages.ExperienceAnalytics).Events.gamePlayIntent;
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local l_OpenGameDetails_0 = require(l_CorePackages_0.Workspace.Packages.GameDetail).OpenGameDetails;
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v22 = require(l_Modules_0.LuaApp.Common.wrapComponent);
local v23 = require(script.Parent.Parent.RecommendedGridRowSettings);
local v24 = require(l_Modules_0.LuaApp.Thunks.Games.RecommendedGames);
local v25 = require(l_Modules_0.LuaApp.Constants);
local v26 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppUpdateGameSortGridRowHeight10ft);
local l_GetUIBloxEnableFontNameMapping_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).UIBlox.GetUIBloxEnableFontNameMapping;
local l_FFlagLuaAppRefactorOpenGameDetail_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagLuaAppRefactorOpenGameDetail;
local l_DEFAULT_RECOMMENDED_GAMES_FETCH_COUNT_0 = v25.DEFAULT_RECOMMENDED_GAMES_FETCH_COUNT;
local l_HomeGames_0 = v25.GameSortGroups.HomeGames;
local v31 = UDim.new(1, 82);
return {
    connect = function(v32, v33)
        return function(v34)
            local v35 = v1.PureComponent:extend("RecommendedExperienceConnector(" .. tostring(v34) .. ")");
            v35.validateProps = v8.strictInterface({
                componentProps = v8.table,
                universeId = v8.string,
                recommendEntries = v8.optional(v8.table),
                sortPageId = v8.optional(v8.string),
                dispatchGetRecommendedExperiences = v8.callback,
                openGameDetails = if not l_FFlagLuaAppRefactorOpenGameDetail_0 then nil else v8.callback,
                navigation = if not l_FFlagLuaAppRefactorOpenGameDetail_0 then nil else v8.any,
                networking = v8.callback,
                eventIngest = v8.table,
                gameAnalytics = v8.table,
                gridCarouselHoverTilesEnabled = v8.boolean,
                relativeHeightWithFooter = if not v26() then nil else v8.UDim
            });
            v35.init = function(v36)
                v36.fetchRecommendedExperiences = function()
                    return v36.props.dispatchGetRecommendedExperiences(v36.props.networking, v36.props.universeId);
                end;
                if l_FFlagLuaAppRefactorOpenGameDetail_0 then
                    v36.navigateToGameDetails = function(v37, v38)
                        v36.props.openGameDetails(v37, v38, v36.props.navigation);
                    end;
                end;
                v36.getItem = function(v39, v40, v41)
                    if not (v40 <= v41.columns) or not v39[v40] then
                        return ;
                    else
                        return v10.assign({
                            index = v40,
                            count = #v39
                        }, v39[v40]);
                    end;
                end;
                v36.renderItem = function(v42, v43)
                    return v1.createElement(l_AppGameTile_0, {
                        entry = v42,
                        reportGameDetailOpened = function()
                            v36.props.gameAnalytics.reportOpenGameDetailWithId(v42.placeId, nil, nil, 0, v42.index, v42.count, v42.isSponsored, v42.universeId, l_AppPage_0.ExperienceDetail);
                        end,
                        showFriendActivity = false,
                        friendFooterEnabled = true,
                        hideGameStats = false,
                        useHoverTile = v36.props.gridCarouselHoverTilesEnabled,
                        impressionsTag = v43,
                        index = v42.index,
                        reportExperienceLaunched = function()
                            l_gamePlayIntent_0(v36.props.eventIngest, v25.AnalyticsContext.ExperienceTile, {
                                placeId = v42.placeId,
                                rootPlaceId = tonumber(v42.placeId),
                                sortIndex = tostring(0),
                                sortEntryIndex = tostring(v42.index)
                            });
                        end,
                        launchExperienceEventContext = v25.AnalyticsContext.ExperienceTile,
                        navigateToGameDetails = if not l_FFlagLuaAppRefactorOpenGameDetail_0 then nil else v36.navigateToGameDetails
                    });
                end;
            end;
            v35.render = function(v44)
                return l_withLocalization_0({
                    headerTitleText = "Feature.GameDetails.Heading.Recommended"
                })(function(v45)
                    local l_componentProps_0 = v44.props.componentProps;
                    return v1.createElement(v34, v10.assign({}, l_componentProps_0, v33({
                        gridInfo = {
                            headerText = v45.headerTitleText,
                            kind = v23.Kind.Experiences,
                            relativeHeight = if not v26() then v31 else v44.props.relativeHeightWithFooter,
                            data = v44.props.recommendEntries or {},
                            getItem = v44.getItem,
                            renderItem = v44.renderItem
                        }
                    }, l_componentProps_0)));
                end);
            end;
            v35.didMount = function(v47)
                if not (v47.props.recommendEntries ~= nil) or next(v47.props.recommendEntries) == nil then
                    v47.fetchRecommendedExperiences();
                end;
            end;
            v35.didUpdate = function(v48, v49, _)
                if v49.universeId ~= v48.props.universeId and (not (v48.props.recommendEntries ~= nil) or next(v48.props.recommendEntries) == nil) then
                    v48.fetchRecommendedExperiences();
                end;
            end;
            v35 = l_RoactAppPolicy_0.connect(function(v51, _)
                return {
                    gridCarouselHoverTilesEnabled = v51.useGridPageLayout()
                };
            end)((v2.connect(function(v53, v54)
                local l_universeId_0 = v54.universeId;
                return {
                    universeId = l_universeId_0,
                    recommendEntries = v53.RecommendedGameEntries[l_universeId_0],
                    sortPageId = v53.GameSortGroups[l_HomeGames_0].pageId
                };
            end, function(v56)
                return {
                    dispatchGetRecommendedExperiences = function(v57, v58)
                        return v56(v24.Fetch(v57, v58, false, {
                            maxRows = l_DEFAULT_RECOMMENDED_GAMES_FETCH_COUNT_0
                        }));
                    end,
                    openGameDetails = if not l_FFlagLuaAppRefactorOpenGameDetail_0 then nil else function(v59, v60, v61)
                        v56(l_OpenGameDetails_0(v59, v61, v60));
                    end
                };
            end)(v35)));
            if l_FFlagLuaAppRefactorOpenGameDetail_0 then
                v35 = l_withNavigation_0(v35);
            end;
            if v26() then
                local l_v35_0 = v35;
                v35 = function(v63)
                    return v1.createElement(l_v35_0, (v17.Dictionary.join(v63, {
                        relativeHeightWithFooter = if not (l_useUiModeInfo_0().uiMode == l_UiMode_0.TenFoot) then v31 else UDim.new(1, not l_GetUIBloxEnableFontNameMapping_0() and 96 or 98)
                    })));
                end;
            end;
            return v22(function(v64, v65)
                return v1.createElement(v64, {
                    componentProps = v65,
                    universeId = v32(v65).universeId
                });
            end)((l_RoactServices_0.connect({
                networking = l_RoactNetworking_0,
                eventIngest = l_AppEventIngestService_0,
                gameAnalytics = l_RoactAnalyticsCommonGameEvents_0
            })(v35)));
        end;
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_CorePackages_0.UIBlox);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local l_useDesignTokens_0 = require(l_CorePackages_0.Workspace.Packages.Style).useDesignTokens;
local l_LoadingStateContainer_0 = v3.App.Container.LoadingStateContainer;
local l_RetrievalStatus_0 = v3.App.Loading.Enum.RetrievalStatus;
local l_withStyle_0 = v3.Core.Style.withStyle;
local l_StyledTextLabel_0 = v3.App.Text.StyledTextLabel;
local l_useStyle_0 = v3.Core.Style.useStyle;
local l_useLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).Hooks.useLocalization;
local l_GetTextSize_0 = require(l_CorePackages_0.Workspace.Packages.Style).GetTextSize;
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v14 = require(l_Modules_0.LuaApp.Components.ExperienceDetails.ExperienceDetailsPanel);
local v15 = require(l_Modules_0.LuaApp.Hooks.useAppPolicy);
local v16 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppExperienceDescriptionPanel);
local v17 = require(script.Parent.Flags.FFlagExperienceDetailsTextUseTokens);
if not v16() then
    local v18 = v1.PureComponent:extend("ExperienceDescription");
    v18.validateProps = v2.strictInterface({
        dataStatus = l_RetrievalStatus_0.isEnumValue,
        descriptionText = v2.optional(v2.string),
        onFocusChanged = v2.optional(v2.callback)
    });
    v18.renderContent = function(v19)
        if not (v19.props.descriptionText ~= nil) or v19.props.descriptionText == "" then
            return nil;
        else
            return l_withLocalization_0({
                DescriptionTitle = "Feature.ExperienceDetails.Body.DescriptionTitle"
            })(function(v20)
                return l_withStyle_0(function(v21)
                    return v1.createElement("Frame", {
                        Size = UDim2.fromScale(1, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        BackgroundTransparency = 1
                    }, {
                        UIListLayout = v1.createElement("UIListLayout", {
                            SortOrder = Enum.SortOrder.LayoutOrder,
                            FillDirection = Enum.FillDirection.Vertical,
                            Padding = UDim.new(0, 24)
                        }),
                        Title = v1.createElement(l_StyledTextLabel_0, {
                            text = v20.DescriptionTitle,
                            size = UDim2.fromScale(1, 0),
                            fontStyle = v21.Font.Header1,
                            colorStyle = v21.Theme.TextEmphasis,
                            automaticSize = Enum.AutomaticSize.Y,
                            richText = false,
                            fluidSizing = false
                        }),
                        Description = v1.createElement(l_StyledTextLabel_0, {
                            text = v19.props.descriptionText,
                            size = UDim2.fromScale(1, 0),
                            fontStyle = v21.Font.Body,
                            colorStyle = v21.Theme.TextDefault,
                            automaticSize = Enum.AutomaticSize.Y,
                            richText = false,
                            fluidSizing = false
                        })
                    });
                end);
            end);
        end;
    end;
    v18.render = function(v22)
        return v1.createElement(l_LoadingStateContainer_0, {
            dataStatus = v22.props.dataStatus,
            renderOnFailed = function()
                return nil;
            end,
            renderOnLoaded = function()
                return v22:renderContent();
            end
        });
    end;
    return v18;
else
    return function(v23)
        local v24 = l_useStyle_0();
        local v25 = l_useLocalization_0({
            DescriptionTitle = "Feature.ExperienceDetails.Body.DescriptionTitle"
        });
        local v27 = v15(function(v26)
            return v26.enableExperienceDetailsPanel();
        end);
        local v29 = l_useDesignTokens_0(function(v28)
            if not v28 then
                return 1;
            else
                return v28.LuaApps.ExperienceDetails.PanelWidthScale;
            end;
        end);
        local v31 = l_useDesignTokens_0(function(v30)
            if not v30 then
                return 0;
            else
                return v30.LuaApps.ExperienceDetails.PanelInnerPadding;
            end;
        end);
        local v32 = v23.dataStatus == l_RetrievalStatus_0.Done;
        local v33 = v23.descriptionText and #v23.descriptionText > 0;
        local v35 = l_useDesignTokens_0(function(v34)
            return v34.Semantic.Typography.Body;
        end);
        local v37 = l_useDesignTokens_0(function(v36)
            return v36.Semantic.Typography.Header;
        end);
        local v38 = nil;
        local v39 = nil;
        local l_LineHeight_0 = v35.LineHeight;
        if not v17 then
            v38 = v24.Font.BaseSize * v24.Font.Body.RelativeSize;
            v39 = v24.Font.Body.Font;
        else
            v38 = v35.FontSize;
            v39 = v35.Font;
        end;
        local v41, v42 = v1.useState(0);
        local v43 = v41 * v29;
        local v44 = v1.useMemo(function()
            if not v33 or not v27 then
                return 0;
            else
                return l_GetTextSize_0(v23.descriptionText, v38, v39, Vector2.new(v43, math.huge)).Y * l_LineHeight_0;
            end;
        end, {
            v23.descriptionText,
            v38,
            v39,
            v43,
            v27,
            l_LineHeight_0
        });
        local v45 = v1.useRef(nil);
        v1.useEffect(function()
            if v45.current then
                v42(v45.current.AbsoluteSize.X);
            end;
        end);
        if not v32 or not v33 then
            return nil;
        else
            local v47 = v1.createElement("Frame", {
                ref = v45,
                [v1.Change.AbsoluteSize] = function(v46)
                    v42(v46.AbsoluteSize.X);
                end,
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1
            }, {
                Padding = if not v27 then nil else v1.createElement("UIPadding", {
                    PaddingLeft = UDim.new(0, v31),
                    PaddingTop = UDim.new(0, v31),
                    PaddingRight = UDim.new(0, v31),
                    PaddingBottom = UDim.new(0, v31)
                }),
                UIListLayout = v1.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Vertical,
                    Padding = UDim.new(0, 24)
                }),
                Title = if not v27 then v1.createElement(l_StyledTextLabel_0, {
                    text = v25.DescriptionTitle,
                    size = UDim2.fromScale(1, 0),
                    fontStyle = if not v17 then v24.Font.Header1 else v37,
                    colorStyle = v24.Theme.TextEmphasis,
                    automaticSize = Enum.AutomaticSize.Y,
                    richText = false,
                    fluidSizing = false
                }) else nil,
                Description = v1.createElement(l_StyledTextLabel_0, {
                    text = v23.descriptionText,
                    size = UDim2.new(v29, 0, 0, v44),
                    textYAlignment = Enum.TextYAlignment.Top,
                    fontStyle = if not v17 then v24.Font.Body else v35,
                    colorStyle = v24.Theme.TextDefault,
                    automaticSize = if not v27 then Enum.AutomaticSize.Y else nil,
                    lineHeight = l_LineHeight_0,
                    richText = false,
                    fluidSizing = false
                })
            });
            if not v27 then
                return v47;
            else
                return v1.createElement(v14, {
                    title = v25.DescriptionTitle,
                    onFocusChanged = v23.onFocusChanged
                }, v47);
            end;
        end;
    end;
end;


local l_GuiService_0 = game:GetService("GuiService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local v4 = require(l_CorePackages_0.Packages.React);
local v5 = require(l_Modules_0.LuaApp.Hooks.useAppPolicy);
local v6 = require(l_Modules_0.LuaApp.Hooks.useRoactService);
local _ = require(l_CorePackages_0.Workspace.Packages.PlayabilityRodux);
local v8 = require(script.Parent.useExperienceDetailsState);
local v9 = require(script.Parent.useExperienceDetailsFetches);
local v10 = require(script.Parent.Hooks.useExperienceDetailsDesignTokens);
local v11 = require(script.Parent.useExperienceDetailsNavigation);
local v12 = require(script.Parent.useExperienceDetailsFocusNavigationBindings);
local v13 = require(script.Parent.useExperienceDetailsConfiguration);
local l_useUserExperiment_0 = require(l_CorePackages_0.Workspace.Packages.RoactAppExperiment).useUserExperiment;
local v15 = require(l_Modules_0.LuaApp.Experiment.AppUserLayers);
local l_AppLinking_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppLinking;
local v17 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v18 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local l_useDeviceType_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useDeviceType;
local l_useUiModeInfo_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useUiModeInfo;
local l_useDispatch_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useDispatch;
local l_getSafeAreaSize_0 = require(l_CorePackages_0.Workspace.Packages.InputUi).getSafeAreaSize;
local v23 = require(l_Modules_0.LuaApp.Components.ExperienceDetails.ExperienceDetailsPage);
local v24 = require(l_Modules_0.LuaApp.Common.Experience.Connectors.LaunchExperienceConnector);
local v25 = require(l_Modules_0.LuaApp.Thunks.SendGameFollow);
local l_Follow_0 = require(l_Modules_0.LuaApp.Analytics.Events.Games.GameDetailsEvents).Follow;
local l_getFirstFocusableDescendant_0 = require(l_CorePackages_0.Workspace.Packages.FocusNavigationUtils).getFirstFocusableDescendant;
local v28 = require(l_Modules_0.LuaApp.Flags.GetFFlagRemoveVerifiedBadgeReducer);
local v29 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppLaunchConnectorFix);
local v30 = require(l_Modules_0.LuaApp.Flags.GetFFlagEnableBigGameIconInDetailsPage);
local v31 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppFixNotificationsEnabledLimitReached);
local v32 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppAddNotificationsEnabledAgeGate);
local l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagAddExperienceGuidelinesToActionBar10ft;
local l_GetFFlagEnableDetailsPageCommunityLinks_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableDetailsPageCommunityLinks;
local v35 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppShowPillContainsStrongLanguage);
local v36 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppShowPillContainsStrongLanguageIXP);
local v37 = require(l_Modules_0.LuaApp.Flags.GetFStringLuaAppShowPillContainsStrongLanguageLayer);
local l_GetNotificationsExperienceDetailsVariant_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetNotificationsExperienceDetailsVariant;
local v39 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppFixSendFollowEventParams);
return (v24.connect(function(v40)
    return {
        universeId = v40.universeId,
        launchSource = "ExperienceDetailsPage",
        referralSource = v40.referralSource
    };
end, function(v41, _)
    return {
        playabilityStatus = v41.playabilityStatus,
        playButtonState = v41.playButtonState,
        onPlayButtonActivated = v41.onPlayButtonActivated
    };
end)(function(v43)
    local v45 = v5(function(v44)
        return {
            roundedCorners = v44.getUseRoundedCorners()
        };
    end);
    local v46 = v6(v17);
    local v47 = v6(l_AppLinking_0);
    local v48 = if not l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then nil else v6(v18);
    local v50 = l_useSelector_0(function(v49)
        return {
            screenSize = v49.ScreenSize,
            globalGuiInset = v49.GlobalGuiInset
        };
    end);
    local v51 = v8(v43);
    local v52 = v11();
    local v53 = v9();
    local v54 = nil;
    local v55 = if not l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then nil else l_useDispatch_0();
    local v56 = l_useDeviceType_0();
    local v57 = nil;
    if not v30() or not v29() then
        v57 = v4.useCallback(function()
            return v53.fetchGameDetailsPageData(v46, v43.universeId);
        end, {
            v46,
            v43.universeId
        });
    else
        local v58 = l_useUiModeInfo_0();
        local l_v58_0 = v58 --[[ copy: 13 -> 30 ]];
        v57 = v4.useCallback(function()
            return v53.fetchGameDetailsPageData(v46, v43.universeId, l_v58_0);
        end, {
            v46,
            v43.universeId,
            v58
        });
    end;
    local v61 = if not v36() then nil else l_useUserExperiment_0({
        v37()
    }, function(v60)
        return (v60[v37()] or {}).IsShowContainsStrongLanguageWarningEnabled;
    end);
    local v63 = if not l_GetFFlagEnableDetailsPageCommunityLinks_0() then {} else l_useUserExperiment_0({
        v15.EDPCommunityLinksLayer
    }, function(v62)
        return (v62[v15.EDPCommunityLinksLayer] or {}).communityLinkDisplayConfig or {};
    end, false);
    local v65 = if not l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then nil else l_useUserExperiment_0({
        v15.ExperienceDetailsPageLayer
    }, function(v64)
        return ((v64[v15.ExperienceDetailsPageLayer] or {})[l_GetNotificationsExperienceDetailsVariant_0.getNotificationsVariantFieldName] or -1) == 2;
    end, true);
    v4.useEffect(function()
        v57();
    end, {
        v43.universeId
    });
    local v69 = v4.useCallback(function(v66, v67)
        if l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then
            local v68 = v51.gameInfo and v51.gameInfo.placeId;
            if v39() and (not (v68 ~= nil) or v66 == nil) then
                return ;
            else
                v55(v25(v46, v66, v67, v65, if not v31() then nil else v51.notificationsEnabled and v51.notificationsEnabled.count or 0, if not v31() then nil else v51.notificationsEnabled and v51.notificationsEnabled.limit or 0));
                l_Follow_0(v48, "ExperienceDetailsActionBar", v68, not v67);
            end;
        end;
    end, {
        v55,
        v46,
        v48,
        v43.universeId,
        v51
    });
    local l_screenSize_0 = v50.screenSize;
    local l_l_GuiService_0_SafeZoneOffsets_0 = l_GuiService_0:GetSafeZoneOffsets();
    local l_Offset_0 = l_getSafeAreaSize_0(l_screenSize_0, l_l_GuiService_0_SafeZoneOffsets_0).Y.Offset;
    local v73 = UDim2.new(1, 0, 1, 0);
    if v45.roundedCorners then
        v73 = UDim2.new(1, 0, 1, 0);
    end;
    local v74 = v51.gameDetail and v51.gameDetail.creator;
    local v75 = if not v28() then v51.creatorVerified else v74 and v74.hasVerifiedBadge;
    local v76 = v13();
    v54 = v10();
    local v77 = v4.useRef(nil);
    local v79, v80 = v12(v4.useCallback(function(_)
        v43.onPlayButtonActivated();
    end, {
        v43.onPlayButtonActivated
    }), (v4.useCallback(function()
        if v77.current then
            l_GuiService_0.SelectedCoreObject = l_getFirstFocusableDescendant_0(v77.current);
        end;
    end, {})));
    return v4.createElement("Frame", {
        ref = v79,
        AnchorPoint = Vector2.new(0, 0),
        Position = UDim2.new(0, 0, 0, l_l_GuiService_0_SafeZoneOffsets_0.top),
        Size = v73,
        BackgroundTransparency = 1,
        ClipsDescendants = true
    }, {
        ExperienceDetailsPage = v4.createElement(v43.ExperienceDetailsPage or v23, {
            universeId = v43.universeId,
            referralSource = v43.referralSource,
            onClose = v52.navigateBack,
            statsAndInfoRef = v77,
            thumbnail = v51.thumbnail,
            bannerImageId = v51.bannerImageId,
            gameInfo = v51.gameInfo,
            gameDetail = v51.gameDetail,
            creatorVerified = v75,
            gameDetailsPageDataStatus = v51.gameDetailsPageDataStatus,
            gameProductInfo = v51.gameProductInfo,
            socialLinks = v51.socialLinks,
            ageRecommendations = v51.ageRecommendations,
            isShowContainsStrongLanguageWarningEnabled = if not v36() then nil else v61,
            containsStrongLanguage = if not v35() then nil else v51.assetTextFilterSettings,
            communityLink = if not l_GetFFlagEnableDetailsPageCommunityLinks_0() then nil else v51.communityLink,
            communityLinksEnabled = v63.inTreatment,
            communityLinkVariant = v63.linkVariant,
            gameFollowings = if not l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then nil else v51.gameFollowings,
            enableNotificationsDiscoverability = v65,
            isLocalUserUnder13 = if not v32() then nil else v51.isLocalUserUnder13,
            fetchGameDetailsPageData = v57,
            openLeaveRobloxAlertUIBlox = v52.openLeaveRobloxAlertUIBlox,
            openVerifiedBadgeModal = v52.openVerifiedBadgeModal,
            closeAlert = v52.closeAlert,
            openMoreContextualMenu = v52.openMoreContextualMenu,
            openShareContextualMenu = v52.openShareContextualMenu,
            openCreatorPage = v52.openCreatorPage,
            openExperienceGuidelinesExplained = if not l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0() then nil else v52.openExperienceGuidelinesExplained,
            setControllerBarNavigation = v80,
            playabilityStatus = v43.playabilityStatus,
            playButtonState = v43.playButtonState,
            onPlayButtonActivated = v43.onPlayButtonActivated,
            toggleFollowExperience = if not v65 then nil else v69,
            linking = v47,
            deviceType = v56,
            viewHeight = l_Offset_0,
            detailsPageConfiguration = v76,
            tokens = v54
        })
    });
end));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.ReactFocusNavigation);
local v3 = require(l_CorePackages_0.Packages.InputHandlers);
local l_FocusNavigationEventNameEnum_0 = require(l_CorePackages_0.Workspace.Packages.FocusNavigationUtils).FocusNavigationEventNameEnum;
local v5 = {};
local function v8(v6)
    return v2.useEventHandler(l_FocusNavigationEventNameEnum_0.NavigateBack, (v1.useCallback(v3.onRelease(function(v7)
        v7:cancel();
        v6();
    end), {
        v6
    })));
end;
v5.useOnNavigateBack = v8;
v5.OnNavigateBackWrapper = function(v9)
    return v1.createElement("Frame", {
        ref = v8(v9.onNavigateBack),
        Size = UDim2.new(1, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        BackgroundTransparency = 1
    }, v9.children);
end;
return v5;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.UIBlox);
local l_LoadingSpinner_0 = v2.App.Loading.LoadingSpinner;
local l_useStyle_0 = v2.Core.Style.useStyle;
return function()
    local v5 = l_useStyle_0();
    return v1.createElement("Frame", {
        Size = UDim2.fromScale(1, 1),
        BackgroundColor3 = v5.Theme.BackgroundDefault.Color,
        BackgroundTransparency = v5.Theme.BackgroundDefault.Transparency,
        BorderSizePixel = 0
    }, {
        LoadingSpinner = v1.createElement(l_LoadingSpinner_0, {
            size = UDim2.fromOffset(42, 42),
            position = UDim2.fromScale(0.5, 0.5),
            anchorPoint = Vector2.new(0.5, 0.5)
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_useDesignTokens_0 = require(l_CorePackages_0.Workspace.Packages.Style).useDesignTokens;
local v3 = require(l_CorePackages_0.UIBlox);
local l_useStyle_0 = v3.Core.Style.useStyle;
local l_StyledTextLabel_0 = v3.App.Text.StyledTextLabel;
local l_ScrollBarType_0 = v3.App.Container.Enum.ScrollBarType;
local l_VerticalScrollView_0 = v3.App.Container.VerticalScrollView;
local l_useCursor_0 = v3.App.SelectionCursor.useCursor;
local v9 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Components.FocusFrame);
local v10 = require(script.Parent.Flags.FFlagExperienceDetailsTextUseTokens);
local v11 = require(script.Parent.Flags.FFlagEDPDescriptionFocusHideControllerBar10ft);
local function v19(v12)
    local v13 = l_useStyle_0();
    local l_PanelRadius_0 = l_useDesignTokens_0().LuaApps.ExperienceDetails.PanelRadius;
    local v15 = v1.useRef(nil);
    local v16 = v1.useRef(nil);
    v1.useEffect(function()
        if v15.current then
            for _, v18 in v15.current:GetDescendants() do
                if v18:IsA("GuiObject") then
                    if not (v18 == v16.current) or not v12.selectable then
                        v18.Selectable = false;
                    else
                        v18.Selectable = true;
                    end;
                end;
            end;
        end;
    end);
    return v1.createElement(not v12.useCanvasGroup and "Frame" or "CanvasGroup", {
        ref = v15,
        Position = UDim2.new(),
        Size = UDim2.fromScale(1, 1),
        BackgroundColor3 = v13.Theme.BackgroundUIContrast.Color,
        BackgroundTransparency = v13.Theme.BackgroundUIContrast.Transparency,
        SelectionGroup = true,
        SelectionBehaviorDown = Enum.SelectionBehavior.Stop,
        SelectionBehaviorLeft = Enum.SelectionBehavior.Stop,
        SelectionBehaviorRight = Enum.SelectionBehavior.Stop,
        SelectionBehaviorUp = Enum.SelectionBehavior.Stop
    }, {
        Corner = v1.createElement("UICorner", {
            CornerRadius = UDim.new(0, l_PanelRadius_0)
        }),
        ScrollView = v1.createElement(l_VerticalScrollView_0, {
            ref = v16,
            canvasSizeY = UDim.new(),
            useAutomaticCanvasSize = true,
            isGamepadFocusable = true,
            scrollingEnabled = v12.scrollingEnabled,
            scrollBarType = if not v12.scrollingEnabled then nil else l_ScrollBarType_0.Gamepad
        }, v12.children)
    });
end;
return v1.forwardRef(function(v20, v21)
    local v22 = l_useStyle_0();
    local v23 = l_useDesignTokens_0();
    local v24 = v23.LuaApps.ExperienceDetails.SafeAreaSize or Vector2.zero;
    local v25 = v23.LuaApps.ExperienceDetails.PanelHeaderMargin or 0;
    return v1.createElement(v9, {
        ref = v21,
        layoutOrder = v20.layoutOrder,
        safeAreaSize = UDim2.new(1, -2 * v24.X, 1, -2 * v24.Y),
        limitInlineHeight = true,
        renderHeader = v1.useCallback(function(_)
            return {
                v1.createElement(l_StyledTextLabel_0, {
                    text = v20.title,
                    colorStyle = v22.Theme.TextEmphasis,
                    fontStyle = if not v10 then v22.Font.Header1 else v23.Semantic.Typography.Header
                }),
                v1.createElement("UIPadding", {
                    PaddingBottom = UDim.new(0, v25)
                })
            };
        end, {
            v20.title,
            v22
        }),
        renderContents = v1.useCallback(function(_)
            return v1.createElement("Frame", {
                Position = UDim2.new(),
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1
            }, v20.children);
        end, {
            v20.children
        }),
        renderContentWrapper = v1.useCallback(function(v28, v29, v30)
            if not (not v11 or not v20.onFocusChanged) then
                v20.onFocusChanged(v29);
            end;
            return v1.createElement(v19, {
                scrollingEnabled = v28,
                selectable = v29,
                useCanvasGroup = v20.roundContentCorners or false
            }, v30);
        end, if not v11 then {
            v20.roundContentCorners
        } else {
            v20.roundContentCorners,
            v20.onFocusChanged
        }),
        selectionCursor = l_useCursor_0(UDim.new(0, v23.LuaApps.ExperienceDetails.PanelRadius))
    });
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v5.Core.Style.withStyle;
local l_TextButton_0 = v5.App.Button.TextButton;
local v8 = require(l_Modules_0.LuaApp.Thunks.OpenExperienceGuidelinesExplained);
local v9 = v2.PureComponent:extend("ExperienceGuidelinesLabel");
v9.validateProps = v4.strictInterface({
    universeId = v4.string,
    guidelinesText = v4.string,
    openExperienceGuidelinesExplained = v4.optional(v4.callback),
    layoutOrder = v4.optional(v4.integer)
});
v9.init = function(v10)
    v10.onActivated = function()
        v10.props.openExperienceGuidelinesExplained(v10.props.universeId);
    end;
end;
v9.render = function(v11)
    return l_withStyle_0(function(_)
        return v2.createElement("Frame", {
            Position = UDim2.new(0, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1,
            LayoutOrder = v11.props.layoutOrder or 0
        }, {
            ExperienceGuidelinesFrame = v2.createElement("Frame", {
                Position = UDim2.new(0, -8, 0, 0),
                AutomaticSize = Enum.AutomaticSize.XY,
                BackgroundTransparency = 1
            }, {
                AgeGuidelinesLabel = v2.createElement(l_TextButton_0, {
                    text = v11.props.guidelinesText,
                    colorStyleDefault = "TextDefault",
                    hoverBackgroundEnabled = false,
                    richText = false,
                    onActivated = v11.onActivated
                })
            })
        });
    end);
end;
return (v3.connect(function(_, _)
    return nil;
end, function(v15)
    return {
        openExperienceGuidelinesExplained = function(v16)
            v15(v8(v16));
        end
    };
end)(v9));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_CorePackages_0.UIBlox);
local v4 = require(l_CorePackages_0.Packages.t);
local l_GameDetailsSubpage_0 = require(l_Modules_0.LuaApp.Analytics.Events.Games.GameDetailsEvents).GameDetailsSubpage;
local v6 = require(l_Modules_0.LuaApp.AppPage);
local l_withStyle_0 = v3.Core.Style.withStyle;
local l_Cell_0 = v3.App.Table.Cell;
local l_CellHeadDetail_0 = v3.App.Table.CellHeadDetail;
local l_CellTailDescription_0 = v3.App.Table.CellTailDescription;
local v11 = require(l_Modules_0.LuaApp.Enum.TransitionAnimation);
local l_GuildedLogoWhiteAsset_0 = require(l_CorePackages_0.Workspace.Packages.CommunityLinks).Constants.GuildedLogoWhiteAsset;
local l_GetFFlagUseVoiceExitBetaLanguage_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagUseVoiceExitBetaLanguage;
local v14 = require(script.Parent.Flags.FFlagExperienceDetailsTextUseTokens);
local l_GetFFlagEnableDetailsPageCommunityLinks_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableDetailsPageCommunityLinks;
local l_GetFFlagEnableCommunityLinksClickLogging_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableCommunityLinksClickLogging;
local v17 = game:DefineFastFlag("LuaAppToggleEITSelectable", false);
local v18 = v2.PureComponent:extend("ExperienceInfoTableRow");
v18.validateProps = v4.strictInterface({
    infoName = v4.string,
    infoData = v4.string,
    infoIcon = v4.optional(v4.string),
    renderTextOverride = v4.optional(v4.callback),
    linkProps = v4.optional(v4.strictInterface({
        linkPage = v4.optional(v4.string),
        analyticsSubPage = v4.string,
        rootPlaceId = v4.string,
        eventIngest = v4.table,
        navigate = v4.callback,
        navigateProps = v4.optional(v4.any)
    })),
    externalLinkProps = v4.optional(v4.strictInterface({
        linkUrl = v4.string,
        openLeaveRobloxAlert = v4.callback,
        closeAlert = v4.callback,
        linking = v4.table,
        clickCallback = if not l_GetFFlagEnableCommunityLinksClickLogging_0() then nil else v4.optional(v4.callback)
    }))
});
v18.init = function(v19)
    v19.onActivated = function()
        local l_externalLinkProps_0 = v19.props.externalLinkProps;
        if not l_externalLinkProps_0 then
            local l_linkProps_0 = v19.props.linkProps;
            if l_linkProps_0 then
                local l_infoName_0 = v19.props.infoName;
                local l_linkPage_0 = l_linkProps_0.linkPage;
                local l_rootPlaceId_0 = l_linkProps_0.rootPlaceId;
                local l_analyticsSubPage_0 = l_linkProps_0.analyticsSubPage;
                local l_eventIngest_0 = l_linkProps_0.eventIngest;
                local l_navigate_0 = l_linkProps_0.navigate;
                local v28 = if not l_linkProps_0.navigateProps then {
                    name = v6.GenericWebPage,
                    detail = l_linkPage_0,
                    extraProps = {
                        title = l_infoName_0,
                        transitionAnimation = v11.SlideInFromRight
                    }
                } else l_linkProps_0.navigateProps;
                l_GameDetailsSubpage_0(l_eventIngest_0, "GameInfoRow", l_rootPlaceId_0, l_analyticsSubPage_0);
                l_navigate_0(v28);
                return ;
            else
                return ;
            end;
        else
            l_externalLinkProps_0.openLeaveRobloxAlert(function()
                l_externalLinkProps_0.linking:openURL(l_externalLinkProps_0.linkUrl);
                l_externalLinkProps_0.closeAlert();
                if l_GetFFlagEnableCommunityLinksClickLogging_0() then
                    local l_clickCallback_0 = l_externalLinkProps_0.clickCallback;
                    if l_clickCallback_0 then
                        l_clickCallback_0();
                    end;
                end;
            end);
            return ;
        end;
    end;
end;
v18.render = function(v30)
    local l_infoName_1 = v30.props.infoName;
    local l_infoData_0 = v30.props.infoData;
    local v33 = nil;
    if not l_GetFFlagUseVoiceExitBetaLanguage_0() then
        if l_GetFFlagEnableDetailsPageCommunityLinks_0() and v30.props.infoIcon == l_GuildedLogoWhiteAsset_0 then
            v33 = v30.props.infoIcon;
        end;
    else
        v33 = v30.props.infoIcon;
    end;
    local v34 = (v30.props.linkProps or v30.props.externalLinkProps) and true or false;
    local l_renderTextOverride_0 = v30.props.renderTextOverride;
    return l_withStyle_0(function(v36)
        return v2.createElement(l_Cell_0, {
            size = UDim2.new(1, 0, 0, 56),
            selectable = if not v17 then nil else v34,
            userInteractionEnabled = v34,
            onActivated = not not v34 and v30.onActivated or nil,
            head = v2.createElement(l_CellHeadDetail_0, {
                labelText = l_infoName_1,
                labelTextColor = v36.Theme.TextDefault,
                labelTextFont = if not v14 then v36.Font.Body else v36.Tokens.Semantic.Typography.Body
            }),
            tail = v2.createElement(l_CellTailDescription_0, {
                text = l_infoData_0,
                textColor = v36.Theme.TextEmphasis,
                textFont = if not v14 then v36.Font.Body else v36.Tokens.Semantic.Typography.Subheader,
                renderTextOverride = l_renderTextOverride_0,
                showArrow = v34,
                infoIcon = v33
            })
        });
    end);
end;
return v18;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.t);
local v4 = require(l_Modules_0.LuaApp.Enum.SocialMediaType);
local v5 = require(script.Parent.LogoTray);
local v6 = {
    [v4.Twitter] = "rbxasset://textures/ui/LuaApp/ExternalSite/twitter.png",
    [v4.Facebook] = "rbxasset://textures/ui/LuaApp/ExternalSite/facebook.png",
    [v4.Discord] = "rbxasset://textures/ui/LuaApp/ExternalSite/discord.png",
    [v4.RobloxGroup] = "LuaApp/icons/GameDetails/social/RobloxGroup",
    [v4.YouTube] = "rbxasset://textures/ui/LuaApp/ExternalSite/youtube.png",
    [v4.Twitch] = "rbxasset://textures/ui/LuaApp/ExternalSite/twitch.png",
    [v4.Amazon] = "rbxasset://textures/ui/LuaApp/ExternalSite/amazon.png",
    [v4.Guilded] = "rbxasset://textures/ui/LuaApp/ExternalSite/guilded.png"
};
local function v7()
end;
local v8 = v2.PureComponent:extend("ExperienceLogoTray");
v8.validateProps = v3.strictInterface({
    layoutOrder = v3.optional(v3.integer),
    socialLinks = v3.table,
    linking = v3.table,
    openLeaveRobloxAlertUIBlox = v3.callback,
    closeAlert = v3.callback
});
v8.defaultProps = {
    openLeaveRobloxAlertUIBlox = v7,
    closeAlert = v7
};
v8.init = function(v9)
    v9.createItems = function(v10)
        local v11 = {};
        local v12 = {};
        for _, v14 in ipairs(v10) do
            local l_type_0 = v14.type;
            if v6[l_type_0] ~= nil then
                table.insert(v11, {
                    key = l_type_0,
                    logo = v6[l_type_0]
                });
                v12[l_type_0] = v14.url;
            end;
        end;
        return v11, v12;
    end;
    local function _(v16, v17)
        return function()
            local l_v17_0 = v17;
            if v16 == v4.Twitter then
                local v19 = v17:match("twitter.com/+([a-zA-Z0-9_]+)/*");
                if v19 ~= nil then
                    l_v17_0 = "twitter://user?screen_name=" .. v19;
                end;
            end;
            local l_linking_0 = v9.props.linking;
            l_linking_0:openURL(l_v17_0):andThen(function(v21)
                if v21 == false then
                    l_linking_0:openURL(v17);
                end;
            end);
            v9.props.closeAlert();
        end;
    end;
    v9.getItemClickCallback = function(v23)
        return function(v24)
            local v25 = v23[v24];
            v9.props.openLeaveRobloxAlertUIBlox(function()
                local l_v25_0 = v25;
                if v24 == v4.Twitter then
                    local v27 = v25:match("twitter.com/+([a-zA-Z0-9_]+)/*");
                    if v27 ~= nil then
                        l_v25_0 = "twitter://user?screen_name=" .. v27;
                    end;
                end;
                local l_linking_1 = v9.props.linking;
                l_linking_1:openURL(l_v25_0):andThen(function(v29)
                    if v29 == false then
                        l_linking_1:openURL(v25);
                    end;
                end);
                v9.props.closeAlert();
            end);
        end;
    end;
end;
v8.render = function(v30)
    local v31, v32 = v30.createItems(v30.props.socialLinks);
    return v2.createElement(v5, {
        layoutOrder = 1,
        itemList = v31,
        handleItemClick = v30.getItemClickCallback(v32)
    });
end;
return v8;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.Common.RoactRodux);
local v4 = require(l_CorePackages_0.UIBlox);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_Modules_0.Common.memoize);
local l_Url_0 = require(l_CorePackages_0.Workspace.Packages.Http).Url;
local v8 = require(l_CorePackages_0.Cryo);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local v12 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local v13 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums);
local l_DeviceType_0 = v13.DeviceType;
local l_UiMode_0 = v13.UiMode;
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local v17 = require(l_Modules_0.LuaApp.Thunks.Games.ApiFetchGameMedia);
local v18 = require(l_Modules_0.LuaApp.Thunks.OpenYouTubeVideo);
local v19 = require(l_Modules_0.LuaApp.Analytics.Events.openYouTubeVideo);
local v20 = require(l_Modules_0.LuaApp.Thunks.OpenCentralOverlayForLeaveRobloxAlert);
local v21 = require(script.Parent.ExperienceDetailsFullscreenNavigationBindings);
local v22 = require(l_Modules_0.LuaApp.Constants);
local v23 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local l_CursorKind_0 = v4.App.SelectionImage.CursorKind;
local l_withStyle_0 = v4.Core.Style.withStyle;
local l_MediaGalleryPreview_0 = v4.App.Container.MediaGalleryPreview;
local l_MediaGalleryHorizontal_0 = v4.App.Container.MediaGalleryHorizontal;
local l_MediaGalleryFullScreen_0 = v4.App.Container.MediaGalleryFullScreen;
local l_CrossFadeAnimatedView_0 = v4.App.Container.CrossFadeAnimatedView;
local l_MediaGalleryExpandableView_0 = v4.App.Container.MediaGalleryExpandableView;
local l_GetFFlagEnableMediaGalleryDesignTokens_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableMediaGalleryDesignTokens;
local v32 = require(script.Parent.Flags.FFlagExperienceDetailsTextUseTokens);
local v33 = require(script.Parent.Flags.FFlagEDPMediaAddLocalization10ft);
local l_FFlagLogYouTubeInteractionInApp_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagLogYouTubeInteractionInApp;
local l_GetFFlagEDPContextRedesign_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEDPContextRedesign;
local v36 = {
    view = "view",
    play = "play"
};
local v37 = v2.PureComponent:extend("ExperienceMediaGallery");
v37.validateProps = v5.interface({
    universeId = v5.string,
    isFullscreen = v5.optional(v5.boolean),
    fullscreenShowIndex = v5.optional(v5.integer),
    onPreviewActivated = v5.optional(v5.callback),
    deviceType = v5.optional(v5.string),
    tokens = if not l_GetFFlagEnableMediaGalleryDesignTokens_0() then nil else v5.optional(v5.table),
    uiMode = v5.optional(v5.string),
    isFullscreenState = v5.optional(v5.boolean),
    onSelectionGained = v5.optional(v5.callback),
    mediaGalleryGainFocused = v5.optional(v5.callback),
    expandableAreaHeightOffset = v5.optional(v5.number),
    nextIndex = v5.optional(v5.number),
    isCrossFade = v5.optional(v5.boolean),
    currentIndex = v5.optional(v5.number),
    setCurrentIndex = v5.optional(v5.callback),
    setCrossFade = v5.optional(v5.callback),
    exitFullscreen = v5.optional(v5.callback)
});
v37.defaultProps = {
    isFullscreen = false,
    fullscreenShowIndex = 1,
    isFullscreenState = false,
    expandableAreaHeightOffset = 592,
    nextIndex = 1
};
v37.init = function(v38)
    local v39, v40 = v2.createBinding(0);
    v38.containerHeight = v39;
    v38.updateContainerHeight = v40;
    v38.containerSize = v38.containerHeight:map(function(v41)
        return UDim2.new(1, 0, 0, v41);
    end);
    v38.onResize = function(v42)
        local l_Offset_0 = l_MediaGalleryPreview_0:calcSizesFromWidth(v42.AbsoluteSize.X, 5).contentSize.Y.Offset;
        if l_Offset_0 ~= v38.containerHeight:getValue() then
            v38.updateContainerHeight(l_Offset_0);
        end;
    end;
    v38.processMediaEntry = function(v44, v45)
        local l_assetTypeId_0 = v44.assetTypeId;
        local v47 = nil;
        if l_assetTypeId_0 == v22.GameMediaImageType.YouTubeVideo then
            if v45 then
                v47 = string.format("https://img.youtube.com/vi/%s/hqdefault.jpg", v44.videoHash);
            else
                return nil;
            end;
        else
            v47 = "http://www.roblox.com/asset/?id=" .. tostring(v44.imageId);
        end;
        return {
            mediaType = v44.assetTypeId,
            imageId = v47,
            videoTitle = v44.videoTitle,
            videoHash = v44.videoHash
        };
    end;
    v38.generateDefaultEntry = function(v48)
        return {
            mediaType = v22.GameMediaImageType.Image,
            imageId = l_Url_0:getPlaceDefaultThumbnailUrl(v48, 640, 360)
        };
    end;
    v38.selectGameMediaEntries = v6(function(v49, v50, v51, v52, v53)
        if v49 then
            local v54 = {
                unpack(v49, 1, v50)
            };
            local v55 = {};
            for _, v57 in ipairs(v54) do
                local v58 = v38.processMediaEntry(v57, v53);
                if v58 then
                    if v58.mediaType == v22.GameMediaImageType.YouTubeVideo then
                        table.insert(v55, 1, v58);
                    else
                        table.insert(v55, v58);
                    end;
                end;
            end;
            return v55;
        elseif v52 == v23.Done then
            return {
                [1] = v38.generateDefaultEntry(v51)
            };
        else
            return {};
        end;
    end);
    v38.getEntries = function()
        return v38.selectGameMediaEntries(v38.props.gameMediaEntries, 10, v38.props.placeId, v38.props.gameMediaFetchingStatus, v38.props.showVideoThumbnails);
    end;
    v38.getItemsFromEntries = v6(function(v59)
        return v8.List.map(v59, function(v60)
            return {
                imageId = v60.imageId,
                isVideo = v60.mediaType == v22.GameMediaImageType.YouTubeVideo
            };
        end);
    end);
    v38.performOpenYouTubeVideo = function(v61, v62)
        local l_guiService_0 = v38.props.guiService;
        local l_openYouTubeVideo_0 = v38.props.openYouTubeVideo;
        local l_eventIngest_0 = v38.props.eventIngest;
        local l_universeId_0 = v38.props.universeId;
        local l_videoHash_0 = v61.videoHash;
        local l_videoTitle_0 = v61.videoTitle;
        if not (not (l_videoHash_0 and #l_videoHash_0 > 0) or not l_videoTitle_0) and #l_videoTitle_0 > 0 then
            if not l_FFlagLogYouTubeInteractionInApp_0 then
                l_openYouTubeVideo_0(l_guiService_0, l_videoHash_0, l_videoTitle_0, v62, l_eventIngest_0);
            else
                l_openYouTubeVideo_0(l_guiService_0, l_videoHash_0, l_videoTitle_0, v62, l_eventIngest_0, l_universeId_0, v36.play);
                return ;
            end;
        end;
    end;
    v38.openVideoItem = function(v69)
        local l_openLeaveRobloxAlertUIBlox_0 = v38.props.openLeaveRobloxAlertUIBlox;
        local l_showYouTubeAgeAlert_0 = v38.props.showYouTubeAgeAlert;
        local v72 = v38.getEntries()[v69];
        local function v73()
            v38.performOpenYouTubeVideo(v72, "gameDetailsAccordianImage");
        end;
        if not l_showYouTubeAgeAlert_0 then
            v38.performOpenYouTubeVideo(v72, "gameDetailsAccordianImage");
            return ;
        else
            l_openLeaveRobloxAlertUIBlox_0(v73);
            return ;
        end;
    end;
    if v38.props.uiMode == l_UiMode_0.TenFoot then
        v38.getConsoleItemsFromEntries = v6(function(v74)
            return v8.List.filter(v74, function(v75)
                return v75.mediaType ~= v22.GameMediaImageType.YouTubeVideo;
            end);
        end);
    end;
    if l_FFlagLogYouTubeInteractionInApp_0 then
        v38.logMediaItemsContainVideo = function(v76)
            local l_eventIngest_1 = v38.props.eventIngest;
            local l_universeId_1 = v38.props.universeId;
            local v80 = v8.List.filter(if not (v38.props.uiMode == l_UiMode_0.TenFoot) then v38.getEntries() else {}, function(v79)
                return v79.mediaType == v22.GameMediaImageType.YouTubeVideo;
            end)[1];
            if v80 then
                v19(l_eventIngest_1, v76, v80.videoTitle, v80.videoHash, l_universeId_1, v36.view);
            end;
        end;
    end;
    if not (not l_FFlagLogYouTubeInteractionInApp_0 or v38.props.isFullscreen) and v38.props.gameMediaFetchingStatus == v23.Done then
        v38.logMediaItemsContainVideo("gameDetailsAccordianImage");
    end;
end;
if l_FFlagLogYouTubeInteractionInApp_0 then
    v37.didUpdate = function(v81, v82, _)
        if (not v81.props.isFullscreen and v82.gameMediaFetchingStatus ~= v23.Done) and v81.props.gameMediaFetchingStatus == v23.Done then
            v81.logMediaItemsContainVideo("gameDetailsAccordianImage");
        end;
    end;
end;
v37.renderWithLocalization = function(v84, v85)
    local v86 = v84.getEntries();
    local v87 = if v84.props.uiMode == l_UiMode_0.TenFoot then v84.getConsoleItemsFromEntries(v86) else v84.getItemsFromEntries(v86);
    if #v87 <= 0 then
        return nil;
    else
        return not not v84.props.isFullscreen and v84:renderFullscreen(v87) or v84:renderPreview(v87, v85);
    end;
end;
v37.render = function(v88)
    if not v33 then
        return v88:renderWithLocalization();
    else
        return l_withLocalization_0({
            titleText = "Feature.GameDetails.Heading.Media"
        })(function(v89)
            return v88:renderWithLocalization(v89);
        end);
    end;
end;
v37.renderPreview = function(v90, v91, v92)
    if v90.props.deviceType == l_DeviceType_0.Tablet then
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 100),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            [v2.Change.AbsoluteSize] = v90.onResize
        }, {
            MediaGalleryHorizontal = v2.createElement(l_MediaGalleryHorizontal_0, {
                layoutMode = "Carousel",
                items = v91,
                onPreviewActivated = v90.props.onPreviewActivated,
                onVideoPlayActivated = v90.openVideoItem
            })
        });
    elseif l_GetFFlagEDPContextRedesign_0() and v90.props.deviceType == l_DeviceType_0.Phone then
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            [v2.Change.AbsoluteSize] = v90.onResize
        }, {
            MediaGalleryHorizontal = v2.createElement(l_MediaGalleryHorizontal_0, {
                layoutMode = "Gallery",
                items = v91,
                onPreviewActivated = v90.props.onPreviewActivated,
                onVideoPlayActivated = v90.openVideoItem,
                borderRadius = UDim.new(0, 0),
                itemPadding = 0
            })
        });
    elseif v90.props.uiMode == l_UiMode_0.TenFoot then
        local v93 = nil;
        v93 = if not v90.props.isFullscreenState then l_CursorKind_0.RoundedRect else l_CursorKind_0.Invisible;
        return l_withStyle_0(function(v94)
            return v2.createElement(v21.OnNavigateBackWrapper, {
                onNavigateBack = v90.props.exitFullscreen
            }, v2.createElement(l_MediaGalleryExpandableView_0, {
                items = v91,
                titleText = if not not v33 and v92 then v92.titleText else nil,
                showCursor = not v90.props.isFullscreenState,
                selectionCursor = v93,
                styleProps = if not v32 then nil else {
                    titleFont = v94.Tokens.Semantic.Typography.Header
                },
                exitFullscreen = not v90.props.isFullscreenState and function()
                end or v90.props.exitFullscreen,
                onActivated = v90.props.onPreviewActivated,
                onSelectionGained = function(v95)
                    local v96 = "";
                    if v91[v95] then
                        v96 = string.split(v91[v95].imageId, "=")[2];
                    end;
                    v90.props.onSelectionGained(v95, v96);
                end,
                mediaGalleryGainFocused = v90.props.mediaGalleryGainFocused,
                groupTransparency = 0,
                expandableAreaHeightOffset = v90.props.expandableAreaHeightOffset,
                animationConfig = if not not l_GetFFlagEnableMediaGalleryDesignTokens_0() and v90.props.tokens then v90.props.tokens.animationConfig else nil
            }));
        end);
    else
        return v2.createElement("Frame", {
            Size = v90.containerSize,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            [v2.Change.AbsoluteSize] = v90.onResize
        }, {
            MediaGalleryPreview = v2.createElement(l_MediaGalleryPreview_0, {
                items = v91,
                numberOfThumbnails = 5,
                onPreviewActivated = v90.props.onPreviewActivated,
                onVideoPlayActivated = v90.openVideoItem
            })
        });
    end;
end;
v37.renderFullscreen = function(v97, v98)
    return l_withStyle_0(function(v99)
        if v97.props.uiMode == l_UiMode_0.TenFoot then
            return v2.createElement(l_CrossFadeAnimatedView_0, {
                items = v98,
                crossAnim = {
                    currentIndex = v97.props.currentIndex,
                    nextIndex = v97.props.nextIndex,
                    setCurrentIndex = v97.props.setCurrentIndex,
                    isCrossFade = v97.props.isCrossFade,
                    setCrossFade = v97.props.setCrossFade
                },
                overlayTransparency = 1
            });
        else
            local l_Theme_0 = v99.Theme;
            return v2.createElement("Frame", {
                Size = UDim2.fromScale(1, 1),
                BackgroundColor3 = l_Theme_0.BackgroundMuted.Color,
                BackgroundTransparency = l_Theme_0.BackgroundMuted.Transparency,
                BorderSizePixel = 0
            }, {
                Fullscreen = v2.createElement(l_MediaGalleryFullScreen_0, {
                    items = v98,
                    showIndex = v97.props.fullscreenShowIndex,
                    onVideoPlayActivated = v97.openVideoItem
                })
            });
        end;
    end);
end;
return (l_RoactAppPolicy_0.connect(function(v101, _)
    return {
        showYouTubeAgeAlert = v101.getShowYouTubeAgeAlert(),
        showVideoThumbnails = v101.getShowVideoThumbnails()
    };
end)((l_RoactServices_0.connect({
    guiService = l_AppGuiService_0,
    eventIngest = v12
})((v3.connect(function(v103, v104)
    local l_showVideoThumbnails_0 = v104.showVideoThumbnails;
    local v106 = v17.GetFetchingStatus(v103, v104.universeId);
    local v107 = v103.GameDetails[v104.universeId];
    local v108 = v103.Games[v104.universeId];
    return {
        showVideoThumbnails = l_showVideoThumbnails_0,
        gameMediaFetchingStatus = v106,
        gameMediaEntries = v103.GameMedia[v104.universeId],
        placeId = not not v107 and v107.rootPlaceId or v108 and v108.placeId
    };
end, function(v109)
    return {
        openLeaveRobloxAlertUIBlox = function(v110)
            v109(v20(v110));
        end,
        openYouTubeVideo = function(v111, v112, v113, v114, v115, v116, v117)
            if not l_FFlagLogYouTubeInteractionInApp_0 then
                return v109(v18(v111, v112, v113, v114, v115));
            else
                return v109(v18(v111, v112, v113, v114, v115, v116, v117));
            end;
        end
    };
end)(v37))))));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_CorePackages_0.UIBlox);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v8 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v9 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v11 = require(l_Modules_0.Common.memoize);
local l_Localization_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppLocales).Localization;
local l_abbreviateCount_0 = require(l_CorePackages_0.Workspace.Packages.Localization).abbreviateCount;
local l_UiMode_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).UiMode;
local l_useLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).Hooks.useLocalization;
local l_useDesignTokens_0 = require(l_CorePackages_0.Workspace.Packages.Style).useDesignTokens;
local l_StyledTextLabel_0 = v6.App.Text.StyledTextLabel;
local v18 = require(l_CorePackages_0.Workspace.Packages.GameVotesRodux);
local l_FetchGameVotes_0 = v18.GameVotes.FetchGameVotes;
local l_FetchUserGameVotes_0 = v18.UserGameVotes.FetchUserGameVotes;
local l_PatchUserVotes_0 = v18.UserGameVotes.PatchUserVotes;
local l_ReasonForNotVoteable_0 = v18.Enums.ReasonForNotVoteable;
local l_VoteStatus_0 = v18.Enums.VoteStatus;
local v24 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local v25 = require(l_Modules_0.LuaApp.Enum.ToastType);
local l_VoteStates_0 = v6.App.Indicator.Enum.VoteStates;
local v27 = require(l_Modules_0.LuaApp.Actions.SetCurrentToastMessage);
local l_Vote_0 = require(l_Modules_0.LuaApp.Analytics.Events.Games.GameDetailsEvents).Vote;
local l_RateCount_0 = v6.App.Indicator.RateCount;
local v30 = require(script.Parent.Flags.FFlagEDPAddRatingTitle10ft);
local v31 = v3.PureComponent:extend("ExperienceRatings");
v31.validateProps = v5.interface({
    universeId = v5.string,
    uiMode = if not v30 then nil else v5.optional(v5.string)
});
local v32 = {
    [l_VoteStatus_0.NotVoted] = l_VoteStates_0.notVoted,
    [l_VoteStatus_0.VotedDown] = l_VoteStates_0.votedDown,
    [l_VoteStatus_0.VotedUp] = l_VoteStates_0.votedUp
};
v31.init = function(v33)
    v33.isMounted = false;
    local v34 = l_Localization_0.new(l_LocalizationService_0.RobloxLocaleId);
    v33.getVoteTexts = v11(function(v35, v36, v37)
        local v38 = nil;
        if not (not v35 or not v36) then
            v38 = v35 + v36;
        end;
        return {
            votePercentageText = (not not v38 and v38 > 0) and tostring((math.floor((v35 / v38) * 100))) .. "%" or "--",
            totalVotesText = if not v37 then string.upper(v34:Format("Feature.GameDetails.Label.VotesNoTotal")) else string.upper(v34:Format("Feature.GameDetails.Label.Votes", {
                votes = not not v38 and l_abbreviateCount_0(v38, v34:GetLocale()) or "--"
            }))
        };
    end);
    local v39 = {
        [l_ReasonForNotVoteable_0.PlayGame] = "Feature.Toast.VoteError.PlayGame",
        [l_ReasonForNotVoteable_0.FloodCheckThresholdMet] = "Feature.Toast.VoteError.FloodCheckThresholdMet",
        [l_ReasonForNotVoteable_0.AssetNotVoteable] = "Feature.Toast.VoteError.AssetNotVoteable",
        Default = "Feature.Toast.VoteError.Default"
    };
    v33.onVoteButtonActivated = function(v40)
        local l_universeId_0 = v33.props.universeId;
        local l_networking_0 = v33.props.networking;
        local l_rootPlaceId_0 = v33.props.rootPlaceId;
        if not v33.props.voteDataIsLoading then
            if v33.isMounted and l_rootPlaceId_0 then
                if v33.props.voteDataLoadSucceed then
                    local l_userGameVotes_0 = v33.props.userGameVotes;
                    local l_reasonForNotVoteable_0 = l_userGameVotes_0.reasonForNotVoteable;
                    if not l_userGameVotes_0.canVote then
                        v33.props.setCurrentToastMessage({
                            toastType = v25.NetworkingError,
                            toastMessage = v39[l_reasonForNotVoteable_0] or v39.Default
                        });
                        return ;
                    else
                        local l_eventIngest_0 = v33.props.eventIngest;
                        local l_userVote_0 = l_userGameVotes_0.userVote;
                        if l_userVote_0 == v40 then
                            v40 = l_VoteStatus_0.NotVoted;
                        end;
                        v33.props.patchUserVotes(l_networking_0, l_universeId_0, v40, l_userVote_0);
                        l_Vote_0(l_eventIngest_0, "GameRatings", l_rootPlaceId_0, v40, l_userVote_0);
                        return ;
                    end;
                elseif v33.props.gameVotesFetchingStatus == v24.Failed then
                    v33.props.dispatchFetchGameVotes(l_networking_0, l_universeId_0);
                    return ;
                else
                    local l_eventIngest_1 = v33.props.eventIngest;
                    v33.props.patchUserVotes(l_networking_0, l_universeId_0, v40, l_VoteStatus_0.NotVoted);
                    l_Vote_0(l_eventIngest_1, "GameRatings", l_rootPlaceId_0, v40, l_VoteStatus_0.NotVoted);
                    return ;
                end;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
    v33.onVoteUpActivated = function()
        v33.onVoteButtonActivated(l_VoteStatus_0.VotedUp);
    end;
    v33.onVoteDownActivated = function()
        v33.onVoteButtonActivated(l_VoteStatus_0.VotedDown);
    end;
end;
v31.render = function(v49)
    local l_gameVotes_0 = v49.props.gameVotes;
    local l_userGameVotes_1 = v49.props.userGameVotes;
    local l_gameVotesFetchingStatus_0 = v49.props.gameVotesFetchingStatus;
    local l_voteDataLoadSucceed_0 = v49.props.voteDataLoadSucceed;
    local v54 = l_gameVotes_0 and l_gameVotes_0.upVotes;
    local v55 = l_gameVotes_0 and l_gameVotes_0.downVotes;
    if l_gameVotesFetchingStatus_0 == v24.Done then
        v54 = v54 or 0;
        v55 = v55 or 0;
    end;
    local v56 = (l_voteDataLoadSucceed_0 and l_userGameVotes_1) and l_userGameVotes_1.userVote or l_VoteStatus_0.NotVoted;
    local v57 = v49.getVoteTexts(v54, v55, v49.props.showGlobalCounters);
    return v3.createElement(l_RateCount_0, {
        rateText = v57.votePercentageText,
        rateLabel = v57.totalVotesText,
        voteState = v32[v56],
        onVoteDownActivated = v49.onVoteDownActivated,
        onVoteUpActivated = v49.onVoteUpActivated
    });
end;
v31.didMount = function(v58)
    v58.isMounted = true;
end;
v31.willUnmount = function(v59)
    v59.isMounted = false;
end;
v31 = l_RoactAppPolicy_0.connect(function(v60)
    return {
        showGlobalCounters = v60.getShowGlobalCounters()
    };
end)((l_RoactServices_0.connect({
    networking = v8,
    eventIngest = v9
})((v4.connect(function(v61, v62)
    local l_universeId_1 = v62.universeId;
    local v64 = l_FetchGameVotes_0.GetFetchingStatus(v61, l_universeId_1);
    local v65 = l_FetchUserGameVotes_0.GetFetchingStatus(v61, l_universeId_1);
    local v66 = l_PatchUserVotes_0.GetPatchingStatus(v61, l_universeId_1);
    local v67 = v61.GameVotes[v62.universeId];
    local v68 = v61.UserGameVotes[v62.universeId];
    local v69 = nil;
    v69 = if not not v61.GameDetails and v61.GameDetails[v62.universeId] then v61.GameDetails[v62.universeId].rootPlaceId else (v61.Games and v61.Games[v62.universeId]) and v61.Games[v62.universeId].placeId;
    local v70 = {
        gameVotesFetchingStatus = v64
    };
    local v71 = true;
    if v64 ~= v24.Fetching then
        v71 = true;
        if v65 ~= v24.Fetching then
            v71 = v66 == v24.Fetching;
        end;
    end;
    v70.voteDataIsLoading = v71;
    v70.voteDataLoadSucceed = v67 and v68;
    v70.gameVotes = v67;
    v70.userGameVotes = v68;
    v70.rootPlaceId = v69;
    return v70;
end, function(v72)
    return {
        dispatchFetchGameVotes = function(v73, v74)
            return v72(l_FetchGameVotes_0.Fetch(v73, v74));
        end,
        patchUserVotes = function(v75, v76, v77, v78)
            return v72(l_PatchUserVotes_0.Patch(v75, v76, v77, v78));
        end,
        setCurrentToastMessage = function(v79)
            return v72(v27(v79));
        end
    };
end)(v31)))));
local function v82(v80)
    if not (v80.uiMode == l_UiMode_0.TenFoot) then
        return v3.createElement(v31, v80);
    else
        local v81 = l_useDesignTokens_0();
        return v3.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1
        }, {
            UIListLayout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                Padding = UDim.new(0, v81.LuaApps.ExperienceDetails.SectionListPadding)
            }),
            RatingsHeader = v3.createElement(l_StyledTextLabel_0, {
                text = l_useLocalization_0({
                    ratingTitle = "Feature.GameDetails.Label.Rating"
                }).ratingTitle,
                size = UDim2.fromScale(1, 0),
                fontStyle = v81.LuaApps.ExperienceDetails.TitleFontStyle,
                colorStyle = v81.LuaApps.ExperienceDetails.TitleColorStyle,
                automaticSize = Enum.AutomaticSize.Y,
                richText = false,
                fluidSizing = false,
                layoutOrder = 1
            }),
            RatingsContainer = v3.createElement("Frame", {
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1,
                LayoutOrder = 2
            }, {
                ExperienceRatings = v3.createElement(v31, v80)
            })
        });
    end;
end;
if not v30 then
    return v31;
else
    return v82;
end;


game:DefineFastFlag("EnableExperienceDetailsFuncComponent", false);
return function()
    return game:GetFastFlag("EnableExperienceDetailsFuncComponent");
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_CorePackages_0.Packages.Cryo);
local v4 = require(l_CorePackages_0.Packages.UIBlox);
local l_InteractableList_0 = v4.Core.Control.InteractableList;
local l_SelectionMode_0 = v4.Core.Control.Enum.SelectionMode;
local l_validateImage_0 = v4.Core.ImageSet.Validator.validateImage;
local l_IconSize_0 = v4.App.ImageSet.Enum.IconSize;
local l_getIconSize_0 = v4.App.ImageSet.getIconSize;
local l_IconButton_0 = v4.App.Button.IconButton;
local l_Colors_0 = v4.App.Style.Colors;
local l_Large_0 = l_IconSize_0.Large;
local function v13()
end;
local v14 = v1.Component:extend("LogoTray");
v14.validateProps = v2.strictInterface({
    itemList = v2.array(v2.strictInterface({
        key = v2.string,
        logo = l_validateImage_0
    })),
    layoutOrder = v2.integer,
    padding = v2.optional(v2.UDim),
    handleItemClick = v2.optional(v2.callback)
});
v14.defaultProps = {
    padding = UDim.new(0, 12),
    handleItemClick = v13
};
v14.init = function(v15)
    v15.getInteractableItemTable = function()
        local v16 = {};
        v3.List.map(v15.props.itemList, function(v17)
            assert(v16[v17.key] == nil, "Duplicate logo key is not allowed.");
            v16[v17.key] = v17;
        end);
        return v16;
    end;
    v15.getMeasuredItemSize = function()
        local v18 = l_getIconSize_0(l_Large_0);
        return UDim2.fromOffset(v18, v18);
    end;
    v15.renderItem = function(v19)
        assert(v19.logo ~= nil, "Invalid icon: " .. v19.key);
        return v1.createElement(l_IconButton_0, {
            icon = v19.logo,
            size = v15.getMeasuredItemSize(),
            iconColor3 = l_Colors_0.White,
            iconSize = l_Large_0,
            onActivated = function()
                v15.props.handleItemClick(v19.key);
            end
        }), {
            LayoutOrder = v3.List.find(v15.props.itemList, v19)
        };
    end;
end;
v14.render = function(v20)
    local v21 = v20.getMeasuredItemSize();
    return v1.createElement(l_InteractableList_0, {
        fillDirection = Enum.FillDirection.Horizontal,
        horizontalAlignment = Enum.HorizontalAlignment.Left,
        sortOrder = Enum.SortOrder.LayoutOrder,
        padding = v20.props.padding,
        size = UDim2.new(1, 0, 0, v21.Y.Offset),
        itemList = v20.getInteractableItemTable(),
        itemSize = v21,
        layoutOrder = v20.props.layoutOrder,
        renderItem = v20.renderItem,
        selectionMode = l_SelectionMode_0.None
    });
end;
return v14;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.Packages.Dash);
local l_useDeviceType_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useDeviceType;
local l_DeviceType_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).DeviceType;
local v6 = require(l_Modules_0.LuaApp.Components.GameDetails.GameDetailsPeekView);
local v7 = require(l_Modules_0.LuaApp.Components.ExperienceDetails.ExperienceDetailsContainer);
local l_useNavigationProps_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppNavigation).useNavigationProps;
local function v10(v9)
    return v2.createElement(v6, v9);
end;
local function v12(v11)
    return v2.createElement(v7, v11);
end;
return function(v13)
    v13 = v3.join(v13, (l_useNavigationProps_0(function(v14, v15)
        if v14 ~= nil then
            return {
                universeId = v14,
                source = v15.source,
                index = v15.index,
                onClose = v15.onClose,
                mountAsFullView = v15.mountAsFullView,
                mountAnimation = v15.mountAnimation,
                referralSource = v15.referralSource,
                onPeekViewClosed = v15.onPeekViewClosed,
                showBackButton = v15.showBackButton
            };
        else
            return nil;
        end;
    end)));
    local v16 = if not v13.deviceType then l_useDeviceType_0() else v13.deviceType;
    if v16 == l_DeviceType_0.Phone then
        return v10(v13);
    else
        return v12((v3.join(v13, {
            deviceType = v16
        })));
    end;
end;


local v0 = {
    Experiences = "experiences",
    Friends = "friends"
};
return {
    Kind = v0,
    Config = {
        margin = 48,
        gutter = 48,
        columns = 4;
        {
            breakpoint = "xs",
            min = 0,
            max = 690,
            margin = 12,
            gutter = 12;
            {
                kind = v0.Experiences,
                columns = 3
            }
        },
        {
            breakpoint = "s",
            min = 690,
            max = 860,
            margin = 12,
            gutter = 12;
            {
                kind = v0.Experiences,
                columns = 4
            }
        },
        {
            breakpoint = "m",
            min = 860,
            max = 1050,
            margin = 14,
            gutter = 14;
            {
                kind = v0.Experiences,
                columns = 5
            }
        },
        {
            breakpoint = "mm",
            min = 1050,
            max = 1280,
            margin = 18,
            gutter = 18;
            {
                kind = v0.Experiences,
                columns = 6
            }
        },
        {
            breakpoint = "hd_ts",
            min = 1280,
            max = 1440,
            margin = 24,
            gutter = 24;
            {
                kind = v0.Experiences,
                columns = 7
            }
        },
        {
            breakpoint = "fhd",
            min = 1440,
            max = 1920,
            margin = 34,
            gutter = 34;
            {
                kind = v0.Experiences,
                columns = 8
            }
        },
        {
            breakpoint = "fhd_ts",
            min = 1920,
            max = 2260,
            margin = 38,
            gutter = 38;
            {
                kind = v0.Experiences,
                columns = 9
            }
        },
        {
            breakpoint = "2k",
            min = 2260,
            max = 2560;
            {
                kind = v0.Experiences,
                columns = 10
            }
        },
        {
            breakpoint = "2k_ts",
            min = 2560,
            max = 3240;
            {
                kind = v0.Experiences,
                columns = 11
            }
        },
        {
            breakpoint = "4k",
            min = 3240,
            max = 3840;
            {
                kind = v0.Experiences,
                columns = 12
            }
        },
        {
            breakpoint = "6k",
            min = 3840,
            max = math.huge,
            width = 3840;
            {
                kind = v0.Experiences,
                columns = 12
            }
        }
    }
};


local v0 = require(game:GetService("CorePackages").Workspace.Packages.JestConfigs);
return {
    displayName = "ExperienceDetails",
    testMatch = {
        "**/*.test"
    },
    snapshotFormat = {
        printInstanceDefaults = false
    },
    setupFilesAfterEnv = {
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_useUiModeInfo_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useUiModeInfo;
local l_IsVRAppBuild_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).IsVRAppBuild;
local l_UiMode_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).UiMode;
local l_GetFFlagEnableDetailsPageCommunityLinks_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableDetailsPageCommunityLinks;
return function()
    local v6 = l_useUiModeInfo_0().uiMode == l_UiMode_0.TenFoot;
    return (v1.useMemo(function()
        return {
            showLogoTraySection = not v6,
            showEventsList = not v6,
            showCommunityLink = if not l_GetFFlagEnableDetailsPageCommunityLinks_0() then nil else not v6 and not l_IsVRAppBuild_0(),
            showCornerGradientPropEnabled = v6
        };
    end, {
        v6
    }));
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_useDispatch_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useDispatch;
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Thunks.Games.FetchGameDetailsPageData);
return function()
    local v4 = l_useDispatch_0();
    return (v2.useMemo(function()
        return {
            fetchGameDetailsPageData = function(v5, v6, v7)
                return v4(v3(v5, v6, v7));
            end
        };
    end, {
        v4
    }));
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.ReactFocusNavigation);
local v3 = require(l_CorePackages_0.Packages.InputHandlers);
local l_FocusNavigationEventNameEnum_0 = require(l_CorePackages_0.Workspace.Packages.FocusNavigationUtils).FocusNavigationEventNameEnum;
local v5 = {
    [Enum.KeyCode.ButtonY] = l_FocusNavigationEventNameEnum_0.DisplayStatsAndInfo,
    [Enum.KeyCode.ButtonX] = l_FocusNavigationEventNameEnum_0.Play
};
return function(v6, v7)
    local v8 = v1.useMemo(function()
        return {
            [l_FocusNavigationEventNameEnum_0.Play] = {
                handler = v3.onRelease(v6)
            },
            [l_FocusNavigationEventNameEnum_0.DisplayStatsAndInfo] = {
                handler = v3.onRelease(v7)
            }
        };
    end, {
        v6,
        v7
    });
    local v9, v10 = v1.useState(true);
    return v2.useEventHandlerMap(if not v9 then {} else v8, (v2.useEventMap(if not v9 then {} else v5, (v1.useRef(nil))))), v10;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_useDispatch_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useDispatch;
local v2 = require(l_CorePackages_0.Packages.React);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v4 = require(l_Modules_0.LuaApp.Thunks.NavigateBack);
local v5 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v6 = require(l_Modules_0.LuaApp.Thunks.OpenVerifiedBadgeModal);
local v7 = require(l_Modules_0.LuaApp.Thunks.OpenCentralOverlayForLeaveRobloxAlert);
local v8 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v9 = require(l_Modules_0.LuaApp.Thunks.OpenCentralOverlayForGameDetailMore);
local v10 = require(l_Modules_0.LuaApp.Thunks.OpenCentralOverlayForGameDetailsPlayWithFriends);
local v11 = require(l_Modules_0.LuaApp.Thunks.OpenCentralOverlayForExperienceGuidelines);
local l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagAddExperienceGuidelinesToActionBar10ft;
return function()
    local v13 = l_useDispatch_0();
    return (v2.useMemo(function()
        return {
            navigateBack = function()
                return v13(v4());
            end,
            openLeaveRobloxAlertUIBlox = function(v14)
                v13(v7(v14));
            end,
            openMoreContextualMenu = function(v15, v16, v17)
                v13(v9(v15, nil, v16, 300, nil, v17));
            end,
            openShareContextualMenu = function(v18, v19)
                v13(v10(v18, nil, v19, 300));
            end,
            closeAlert = function()
                v13(v8());
            end,
            openVerifiedBadgeModal = function()
                v13(v6());
            end,
            openCreatorPage = function(v20)
                v13(v5(v20));
            end,
            openExperienceGuidelinesExplained = if not l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0() then nil else function(v21, v22)
                v13(v11(v21, v22));
            end
        };
    end, {
        v13
    }));
end;