local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local _ = l_Modules_0.LuaApp;
local v4 = require(l_CorePackages_0.Roact);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local v6 = require(l_Modules_0.LuaApp.Constants);
local l_VRConstants_0 = require(l_CorePackages_0.Workspace.Packages.VrCompatibility).VRConstants;
local v8 = require(l_Modules_0.LuaApp.Components.ContextualMenu);
local v9 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetLabel);
local v10 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetButton);
local l_IsVRAppBuild_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).IsVRAppBuild;
local l_GRAY1_0 = v6.Color.GRAY1;
local l_SourceSans_0 = Enum.Font.SourceSans;
local l_GRAY1_1 = v6.Color.GRAY1;
local l_SourceSans_1 = Enum.Font.SourceSans;
local v16 = {
    Image = "LuaApp/buttons/buttonFill",
    SliceCenter = Rect.new(8, 8, 9, 9)
};
local v17 = {
    Image = "LuaApp/buttons/buttonStroke",
    SliceCenter = Rect.new(8, 8, 9, 9)
};
local v18 = v4.Component:extend("DropDownList");
v18.defaultProps = {
    height = 38,
    itemHeight = 54,
    itemTextColor = l_GRAY1_1,
    itemFont = l_SourceSans_1,
    itemTextSize = 23,
    size = UDim2.new(1, 0, 0, 38),
    textColor = l_GRAY1_0,
    font = l_SourceSans_0,
    textSize = 18
};
v18.init = function(v19)
    v19.state = {
        isOpen = false
    };
    v19.onActivated = function(v20)
        local v21 = 0;
        local v22 = 0;
        local l_v20_FirstAncestorOfClass_0 = v20:FindFirstAncestorOfClass("ScreenGui");
        if l_v20_FirstAncestorOfClass_0 ~= nil then
            v21 = l_v20_FirstAncestorOfClass_0.AbsoluteSize.x;
            v22 = l_v20_FirstAncestorOfClass_0.AbsoluteSize.y;
        end;
        v19:setState({
            isOpen = true,
            screenShape = {
                x = v20.AbsolutePosition.x,
                y = v20.AbsolutePosition.y,
                width = v20.AbsoluteSize.x,
                height = v20.AbsoluteSize.y,
                parentWidth = if not l_IsVRAppBuild_0() then v21 else l_VRConstants_0.MainScreenResolution.x,
                parentHeight = if not l_IsVRAppBuild_0() then v22 else l_VRConstants_0.MainScreenResolution.y
            }
        });
    end;
    v19.callbackCancel = function()
        v19:setState({
            isOpen = false
        });
    end;
    v19.callbackSelect = function(v24, v25)
        v19:setState({
            isOpen = false
        });
        if not v19.props.onSelected then
            return ;
        else
            return v19.props.onSelected(v24, v25);
        end;
    end;
end;
v18.render = function(v26)
    local l_position_0 = v26.props.position;
    local l_anchorPoint_0 = v26.props.anchorPoint;
    local l_height_0 = v26.props.height;
    local l_items_0 = v26.props.items;
    local l_itemSelected_0 = v26.props.itemSelected;
    local l_layoutOrder_0 = v26.props.layoutOrder;
    local l_screenShape_0 = v26.state.screenShape;
    local l_size_0 = v26.props.size;
    local v35 = nil;
    if v26.state.isOpen then
        v35 = v4.createElement(v8, {
            menuItems = l_items_0,
            screenShape = l_screenShape_0,
            callbackCancel = v26.callbackCancel,
            callbackSelect = v26.callbackSelect
        });
    end;
    return l_withStyle_0(function(v36)
        return v4.createElement(v10, {
            Size = l_size_0,
            Position = l_position_0,
            AnchorPoint = l_anchorPoint_0,
            LayoutOrder = l_layoutOrder_0,
            AutoButtonColor = false,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            ClipsDescendants = false,
            Image = v16.Image,
            ImageColor3 = v36.Theme.BackgroundDefault.Color,
            ImageTransparency = v36.Theme.BackgroundDefault.Transparency,
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = v16.SliceCenter,
            [v4.Event.Activated] = v26.onActivated
        }, {
            Border = v4.createElement(v9, {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1,
                Image = v17.Image,
                ImageColor3 = v36.Theme.SecondaryDefault.Color,
                ImageTransparency = v36.Theme.SecondaryDefault.Transparency,
                LayoutOrder = l_layoutOrder_0,
                ScaleType = Enum.ScaleType.Slice,
                SliceCenter = v17.SliceCenter
            }),
            Text = v4.createElement("TextLabel", {
                BackgroundColor3 = v6.Color.WHITE,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Size = UDim2.new(1, -47, 0, l_height_0),
                Text = l_itemSelected_0.displayName,
                Font = v36.Font.Body.Font,
                TextSize = v36.Font.BaseSize * v36.Font.Body.RelativeSize,
                TextColor3 = v36.Theme.TextDefault.Color,
                TextTransparency = v36.Theme.TextDefault.Transparency,
                Position = UDim2.new(0, 10, 0, 0),
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center,
                ClipsDescendants = true,
                TextTruncate = Enum.TextTruncate.AtEnd
            }),
            Arrow = v4.createElement(v9, {
                AnchorPoint = Vector2.new(1, 0.5),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Image = "LuaApp/icons/dropdown_arrowDown",
                ImageColor3 = v36.Theme.IconDefault.Color,
                ImageTransparency = v36.Theme.IconDefault.Transparency,
                Position = UDim2.new(1, -7, 0.5, 0),
                Size = UDim2.new(0, 20, 0, 20)
            }),
            Items = v35
        });
    end);
end;
return v18;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v2.Style.withStyle;
local l_useSelectionCursor_0 = v2.App.SelectionImage.useSelectionCursor;
local l_CursorKind_0 = v2.App.SelectionImage.CursorKind;
local l_GetFFlagEndOfScrollCursor_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEndOfScrollCursor;
local v7 = require(l_Modules_0.Common.Roact);
local v8 = require(l_Modules_0.LuaApp.Components.LocalizedTextButton);
return function(v9)
    local l_backToTopCallback_0 = v9.backToTopCallback;
    local l_LayoutOrder_0 = v9.LayoutOrder;
    local v12 = if not l_GetFFlagEndOfScrollCursor_0() then nil else l_useSelectionCursor_0(l_CursorKind_0.RoundedRect);
    local v13 = v9.bottomPadding or 0;
    return l_withStyle_0(function(v14)
        return v7.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 70 + v13),
            LayoutOrder = l_LayoutOrder_0
        }, {
            BackToTopButton = v7.createElement(v8, {
                Size = UDim2.new(0.5, 0, 0, 30),
                Position = UDim2.new(0.25, 0, 0, 20),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Text = "Feature.GamePage.Action.BackToTop",
                Font = v14.Font.Body.Font,
                TextSize = v14.Font.BaseSize * v14.Font.Body.RelativeSize,
                TextColor3 = v14.Theme.TextEmphasis.Color,
                TextTransparency = v14.Theme.TextEmphasis.Transparency,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextYAlignment = Enum.TextYAlignment.Center,
                [v7.Event.Activated] = l_backToTopCallback_0,
                SelectionImageObject = if not l_GetFFlagEndOfScrollCursor_0() then nil else v12
            })
        });
    end);
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(game:GetService("CorePackages").Roact);
local _ = l_CoreGui_0.RobloxGui.Modules;
return function(v3)
    local l_receiverComponents_0 = v3.receiverComponents;
    local l_RobloxEventReceiver_0 = v3.RobloxEventReceiver;
    local v6 = {};
    for v7, v8 in l_receiverComponents_0, nil, nil do
        v6[v7] = v1.createElement(v8, {
            RobloxEventReceiver = l_RobloxEventReceiver_0
        });
    end;
    return v1.createElement("Folder", {}, v6);
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Common.RoactRodux);
local l_RoactServices_0 = require(game:GetService("CorePackages").Workspace.Packages.RoactServices).RoactServices;
local v4 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v5 = require(l_Modules_0.LuaApp.Thunks.ApiFetchUnreadNotificationCount);
local v6 = require(l_Modules_0.LuaApp.Actions.SetNotificationCount);
local v7 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppUpdateNotificationBadgeCountEnabled);
local v8 = v1.Component:extend("BadgeEventReceiver");
v8.init = function(v9)
    local l_setNotificationCount_0 = v9.props.setNotificationCount;
    local l_getNotificationCount_0 = v9.props.getNotificationCount;
    local l_RobloxEventReceiver_0 = v9.props.RobloxEventReceiver;
    local l_networking_0 = v9.props.networking;
    if v7() then
        v9.lastSeqNumOfNotificationStream = nil;
    end;
    v9.tokens = {
        l_RobloxEventReceiver_0:observeEvent("UpdateNotificationBadge", function(v14, v15)
            if v15 == "NotificationIcon" then
                l_setNotificationCount_0((tonumber(v14.badgeString)));
            end;
        end),
        l_RobloxEventReceiver_0:observeEvent("NotificationStream", function(v16, v17)
            if v17 == "NotificationsRead" then
                l_setNotificationCount_0(0);
            else
                l_getNotificationCount_0(l_networking_0);
            end;
            if not ((not v7() or not v16) or not v16.SequenceNumber) then
                v9.lastSeqNumOfNotificationStream = v16.SequenceNumber;
            end;
        end)
    };
    if v7() then
        table.insert(v9.tokens, l_RobloxEventReceiver_0:observeEvent("signalR", function(v18, _, v20)
            if not ((not (v18 == Enum.ConnectionState.Connected) or not v20) or not v20.NotificationStream) then
                if v9.lastSeqNumOfNotificationStream ~= v20.NotificationStream then
                    l_getNotificationCount_0(l_networking_0);
                end;
                v9.lastSeqNumOfNotificationStream = v20.NotificationStream;
            end;
        end));
    end;
end;
v8.render = function(_)
end;
v8.willUnmount = function(v22)
    for _, v24 in pairs(v22.tokens) do
        v24:disconnect();
    end;
end;
return (l_RoactServices_0.connect({
    networking = v4
})((v2.connect(nil, function(v25)
    return {
        getNotificationCount = function(v26)
            return v25(v5(v26));
        end,
        setNotificationCount = function(...)
            return v25(v6(...));
        end
    };
end)(v8))));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.t);
local l_MessageBus_0 = require(l_CorePackages_0.Workspace.Packages.MessageBus).MessageBus;
return {
    ON_GAME_LEAVE_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("Game", "onGameLeave"),
        validateParams = v1.table
    },
    ON_SURVEY_EVENT_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("Game", "openSurvey"),
        validateParams = v1.strictInterface({
            eventType = v1.string,
            userId = v1.optional(v1.string),
            customProps = v1.optional(v1.table)
        })
    },
    LOCAL_STORAGE_KEY_CSAT_SURVEY_COMPLETED_IDS = "CsatCompletedSurveyIds",
    LOCAL_STORAGE_CSAT_SURVEY_IDS_LIMIT = 10,
    LOCAL_STORAGE_KEY_EXPERIENCE_MENU_CSAT_QUALIFICATION = "ExperienceMenuCSATQualification",
    EXPERIENCE_MENU_CSAT_QUALIFICATION_THRESHOLD = 10000,
    EXPERIENCE_MENU_TEST_VERSION = "t3",
    LOCAL_STORAGE_KEY_EXPERIENCE_MENU_VERSION = "ExperienceMenuVersion",
    ANALYTICS_CONTEXT_APP = "app",
    ANALYTICS_EXPERIMENT_MENU_TEST = "experience_menu_test",
    ANALYTICS_EXPERIMENT_MENU_GET_COMPLETED_SURVEY_IDS_FIELD = "get_completed_survey_ids",
    ANALYTICS_EXPERIMENT_MENU_SET_COMPLETED_SURVEY_IDS_FIELD = "set_completed_survey_ids",
    ANALYTICS_SURVEY_EVENT = "survey_event",
    EVENT_TYPE_ENUM = {
        ON_LEAVE_BUTTON_CLICK = "leaveButtonClick"
    },
    WEBVIEW_NAME_KEY = "Feature.QualtricsSurveyPrompt.Heading.WebviewName",
    CHROME_SURVEY_NAME = "chromeSurvey"
};


local l_Players_0 = game:GetService("Players");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local l_AppStorageService_0 = game:GetService("AppStorageService");
local l_HttpService_0 = game:GetService("HttpService");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_AppSessionService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppSessionService;
local v8 = require(l_CorePackages_0.Roact);
local v9 = require(l_CorePackages_0.Packages.Cryo);
local v10 = require(l_CorePackages_0.RoactRodux);
local l_MessageBus_0 = require(l_CorePackages_0.Workspace.Packages.MessageBus).MessageBus;
local v12 = require(l_CorePackages_0.Packages.t);
local v13 = require(l_Modules_0.LuaApp.Thunks.OpenWebview);
local v14 = require(l_Modules_0.LuaApp.Services.RoactLocalization);
local v15 = require(l_Modules_0.LuaApp.Experiment.AppUserLayers);
local v16 = require(l_Modules_0.LuaApp.Experiment.RoactAppExperiment);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v18 = require(l_Modules_0.LuaApp.Http.UrlBuilder);
local v19 = require(l_Modules_0.LuaApp.Thunks.OpenCentralOverlayForSurveyPrompt);
local v20 = require(script.Parent.CsatSurveyConstants);
local v21 = require(script.Parent.CsatSurveyInterceptUtils);
local v22 = require(script.Parent.Parent.Parent.Flags.GetFFlagLuaAppEnableSurveySessions);
local v23 = require(script.Parent.Parent.Parent.Flags.GetFFlagLuaAppEnableSurveyTitleTranslation);
local l_GetFFlagChromeSurveySupport_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagChromeSurveySupport;
local v25 = game:DefineFastFlag("SurveyPlaceIdSupport", false);
local v26 = v8.PureComponent:extend("CsatSurveyInterceptEventReceiver");
v26.validateProps = v12.strictInterface({
    RobloxEventReceiver = v12.table,
    baseUrlFormat = v12.string,
    surveyId = v12.string,
    isQualified = v12.boolean,
    restrictTextInput = v12.boolean,
    openWebView = v12.callback,
    openSurveyPrompt = v12.callback,
    eventType = v12.string,
    showPrompt = v12.boolean,
    analyticsService = v12.optional(v12.union(v12.Instance, v12.table)),
    titleText = v12.string,
    bodyText = v12.string,
    cancelButtonText = v12.string,
    confirmButtonText = v12.string,
    sessionService = v12.optional(v12.union(v12.Instance, v12.table)),
    localization = v12.optional(v12.table),
    surveyName = v12.string,
    menuVersion = v12.string
});
v26.defaultProps = {
    baseUrlFormat = "",
    surveyId = "",
    isQualified = false,
    restrictTextInput = false,
    eventType = "",
    showPrompt = false,
    analyticsService = l_RbxAnalyticsService_0,
    titleText = "",
    bodyText = "",
    cancelButtonText = "",
    confirmButtonText = "",
    surveyName = "",
    menuVersion = ""
};
v26.getSurveyUrl = function(v27, v28, v29)
    assert(v12.string(v27.props.baseUrlFormat));
    assert(v12.string(v27.props.surveyId));
    assert(v12.boolean(v27.props.restrictTextInput));
    local v30 = v28 or tostring(l_Players_0.LocalPlayer.UserId);
    assert(v12.string(v30));
    local v31 = "";
    if not v25 or not game:GetEngineFeature("SessionServiceStringReflection") then
        if not (not v22() or not game:GetEngineFeature("SessionServiceStringReflection")) then
            v31 = v27.props.sessionService:generateSessionInfoString(false, false, false, false);
        end;
    else
        v31 = v27.props.sessionService:generateSessionInfoString(false, true, false, false);
    end;
    return (v18.fromString(v27.props.baseUrlFormat)({
        surveyId = v27.props.surveyId or "",
        userId = v30 or "0",
        restrictTextInput = tostring(v27.props.restrictTextInput) or "true",
        sessionIds = if not not v22() and game:GetEngineFeature("SessionServiceStringReflection") then v31 else "",
        menuVersion = (not not l_GetFFlagChromeSurveySupport_0() and v27.props.surveyName == v20.CHROME_SURVEY_NAME) and v27.props.menuVersion or "",
        chromeExposureCount = ((not not l_GetFFlagChromeSurveySupport_0() and v27.props.surveyName == v20.CHROME_SURVEY_NAME) and v29) and v29.chromeSeenCount or ""
    }));
end;
v26.getCompletedSurveyIds = function(v32)
    local l_status_0, l_result_0 = pcall(function()
        return l_AppStorageService_0:GetItem(v20.LOCAL_STORAGE_KEY_CSAT_SURVEY_COMPLETED_IDS);
    end);
    if l_status_0 and l_result_0 ~= "" then
        return l_HttpService_0:JSONDecode(l_result_0);
    else
        warn("Unable to fetch completed survey ids from app storage ", l_result_0);
        v32.props.analyticsService:SetRBXEventStream(v20.ANALYTICS_CONTEXT_APP, v20.ANALYTICS_SURVEY_EVENT, v20.ANALYTICS_EXPERIMENT_MENU_GET_COMPLETED_SURVEY_IDS_FIELD, {
            error = l_result_0
        });
        return {};
    end;
end;
v26.hasCompletedSurvey = function(v35)
    assert(v12.string(v35.props.surveyId));
    for _, v37 in ipairs(v35.completedSurveyIds) do
        if v37 == v35.props.surveyId then
            return true;
        end;
    end;
    return false;
end;
v26.trackSurveyIdLocally = function(v38)
    assert(v12.string(v38.props.surveyId));
    if not v38:hasCompletedSurvey() then
        if v20.LOCAL_STORAGE_CSAT_SURVEY_IDS_LIMIT <= #v38.completedSurveyIds then
            v38.completedSurveyIds = v9.List.getRange(v38.completedSurveyIds, 2, #v38.completedSurveyIds);
        end;
        table.insert(v38.completedSurveyIds, v38.props.surveyId);
        local l_status_1, l_result_1 = pcall(function()
            l_AppStorageService_0:SetItem(v20.LOCAL_STORAGE_KEY_CSAT_SURVEY_COMPLETED_IDS, l_HttpService_0:JSONEncode(v38.completedSurveyIds) or "{}");
            l_AppStorageService_0:Flush();
        end);
        if not l_status_1 then
            warn("Uncaught exception for setting completed CSAT survey ids on app storage", l_result_1);
            v38.props.analyticsService:SetRBXEventStream(v20.ANALYTICS_CONTEXT_APP, v20.ANALYTICS_SURVEY_EVENT, v20.ANALYTICS_EXPERIMENT_MENU_SET_COMPLETED_SURVEY_IDS_FIELD, {
                error = l_result_1
            });
        end;
        return ;
    else
        return ;
    end;
end;
v26.canShowSurvey = function(v41)
    assert(v12.string(v41.props.surveyId));
    if not (v41.props.surveyId ~= "") or v41.props.surveyId == nil then
        return false;
    elseif not v41:hasCompletedSurvey() then
        if l_GetFFlagChromeSurveySupport_0() and v41.props.surveyName == v20.CHROME_SURVEY_NAME then
            return v41.props.isQualified and v21.canShowChromeSurvey(v41.props.menuVersion);
        else
            return v41.props.isQualified;
        end;
    else
        return false;
    end;
end;
v26.openSurveyWebview = function(v42, v43, v44)
    if v42:canShowSurvey() then
        local v45 = v42:getSurveyUrl(v43, if not l_GetFFlagChromeSurveySupport_0() then nil else v44);
        local v46 = not v23() and "Survey" or v42.props.localization:Format(v20.WEBVIEW_NAME_KEY);
        if not v42.props.showPrompt then
            wait(0.2);
            v42.props.openWebView(v45, v46);
            v42:trackSurveyIdLocally();
        else
            v42.surveyPromptFunc = function()
                wait(0.2);
                v42.props.openWebView(v45, v46);
                v42:trackSurveyIdLocally();
            end;
            v42.surveyPromptClose = function()
                v42:trackSurveyIdLocally();
            end;
            v42.props.openSurveyPrompt(v42.surveyPromptFunc, v42.surveyPromptClose, v42.props.titleText, v42.props.bodyText, v42.props.cancelButtonText, v42.props.confirmButtonText);
            return ;
        end;
    end;
end;
v26.init = function(v47)
    v47.completedSurveyIds = v47:getCompletedSurveyIds();
    v47.subscriber = l_MessageBus_0.Subscriber.new();
    v47.subscriber:subscribe(v20.ON_SURVEY_EVENT_DESCRIPTOR, function(v48)
        if v47.props.eventType == v48.eventType and v48.eventType == v20.EVENT_TYPE_ENUM.ON_LEAVE_BUTTON_CLICK then
            v47.subscriber:unsubscribe(v20.ON_SURVEY_EVENT_DESCRIPTOR);
            v47:openSurveyWebview(v48.userId, if not l_GetFFlagChromeSurveySupport_0() then nil else v48.customProps);
        end;
    end);
end;
v26.render = function(_)
end;
v26 = l_RoactAppPolicy_0.connect(function(v50, _)
    return {
        restrictTextInput = v50.getCsatSurveyRestrictTextInput() or false
    };
end)((v16.connectUserLayer({
    v15.GameLeaveLayer,
    v15.ExperienceMenuLayer
}, function(v52, _)
    local v54 = v52[v15.GameLeaveLayer] or {};
    return {
        baseUrlFormat = v54.baseUrlFormat,
        surveyId = v54.surveyId,
        isQualified = v54.isQualified,
        eventType = v54.eventType,
        showPrompt = v54.showPrompt,
        titleText = v54.titleText or "",
        bodyText = v54.bodyText or "",
        cancelButtonText = v54.cancelButtonText or "",
        confirmButtonText = v54.confirmButtonText or "",
        surveyName = not not l_GetFFlagChromeSurveySupport_0() and v54.surveyName or "",
        menuVersion = not not l_GetFFlagChromeSurveySupport_0() and (v52[v15.ExperienceMenuLayer] or {}).menuVersion or ""
    };
end)((v10.connect(nil, function(v55)
    return {
        openWebView = function(v56, v57)
            return v55(v13(v56, v57));
        end,
        openSurveyPrompt = function(v58, v59, v60, v61, v62, v63)
            v55(v19(v58, v59, v60, v61, v62, v63));
        end
    };
end)(v26)))));
if not (not (v22() and game:GetEngineFeature("SessionServiceStringReflection")) and not v23()) then
    v26 = l_RoactServices_0.connect({
        sessionService = if not not v22() and game:GetEngineFeature("SessionServiceStringReflection") then l_AppSessionService_0 else nil,
        localization = if not v23() then nil else v14
    })(v26);
end;
return v26;


local l_AppStorageService_0 = game:GetService("AppStorageService");
local v1 = require(script.Parent.CsatSurveyConstants);
local v2 = "v1" .. "t9";
local v3 = {
    UNIBAR = "v7.1.1" .. "t9",
    FTUX = "v7.2.1" .. "t9"
};
canShowChromeSurvey = function(v4)
    if not (v4 ~= "") or v4 == nil then
        return false;
    else
        local v5 = getCurrentMenuVersion();
        local v6 = false;
        for _, v8 in v3, nil, nil do
            if v4 == v8 and v4 == v5 then
                v6 = true;
                break;
            end;
        end;
        local v9 = false;
        if v4 == v2 then
            v9 = v4 == v5;
        end;
        return v6;
    end;
end;
getCurrentMenuVersion = function()
    local l_status_0, l_result_0 = pcall(function()
        return l_AppStorageService_0:GetItem(v1.LOCAL_STORAGE_KEY_EXPERIENCE_MENU_VERSION);
    end);
    if l_status_0 and l_result_0 ~= "" then
        return l_result_0;
    else
        return "";
    end;
end;
return {
    canShowChromeSurvey = canShowChromeSurvey
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpService_0 = game:GetService("HttpService");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_AppBrowserService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppBrowserService;
local l_AppLinking_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppLinking;
local l_AppLogging_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppLogging;
local l_AppSessionService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppSessionService;
local v8 = require(l_CorePackages_0.Cryo);
local v9 = require(l_CorePackages_0.Roact);
local v10 = require(l_CorePackages_0.RoactRodux);
local _ = require(l_CorePackages_0.Packages.t);
local l_default_0 = require(l_CorePackages_0.Workspace.Packages.WebViewProtocol).default;
local v13 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v14 = require(l_Modules_0.LuaApp.Enum.LoginStatus);
local v15 = require(l_Modules_0.AvatarExperience.Common.Thunks.NavigateIntoAvatarExperience);
local l_NavigateIntoChat_0 = require(l_CorePackages_0.Workspace.Packages.AppChat).Conversations.Thunks.NavigateIntoChat;
local v17 = require(l_Modules_0.LuaApp.Promise);
local v18 = require(l_Modules_0.LuaApp.Thunks.ResetNavigationHistory);
local v19 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local v20 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
local v21 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v23 = require(l_Modules_0.LuaApp.Services.RoactAnalyticsShareLinks);
local v24 = require(l_Modules_0.LuaApp.Services.RoactAnalyticsSocialProfileShare);
local l_EnteredChatFromEntryPoint_0 = require(l_CorePackages_0.Workspace.Packages.AppChat).Actions.EnteredChatFromEntryPoint;
local v26 = require(l_Modules_0.LuaApp.AppPage);
local v27 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local v28 = require(l_Modules_0.LuaApp.DeepLinks.DeepLinkMap);
local v29 = require(l_Modules_0.LuaApp.DeepLinks.DeepLinkParser);
local v30 = require(script.Parent.EventNetworking);
local l_LaunchGame_0 = require(l_CorePackages_0.Workspace.Packages.GameLaunch).LaunchGame;
local v32 = require(l_Modules_0.LuaApp.DeepLinks.ShareLinks.ShareLinkTypes);
local v33 = game:DefineFastFlag("DeeplinkNavDurationLog", false);
local l_GetFFlagEnableUnifiedWebViews_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableUnifiedWebViews;
local v35 = game:DefineFastFlag("DeepLinkEventReceiverStampTracking", false);
local v36 = game:DefineFastFlag("DeepLinkEventReceiverAnalyticsEvent", false);
local l_simpleUrlDecode_0 = require(l_CorePackages_0.Workspace.Packages.SocialCommon).Utils.simpleUrlDecode;
local v38 = v29.new(v28);
local l_ParseQuery_0 = require(l_CorePackages_0.Packages.StringUtilities).ParseQuery;
local _ = function(v40)
    local _, v42 = unpack(string.split(l_simpleUrlDecode_0(v40), "?"));
    return (l_ParseQuery_0(v42));
end;
local function _(v44, v45)
    if not v44 or not v44[v45] then
        return nil;
    else
        return v44[v45][1];
    end;
end;
local function v51(v47)
    local v48 = string.lower(v47);
    for v49, v50 in pairs(v32) do
        if not v48:find("&type=" .. string.lower(v50)) then
            if v48:find((string.lower((string.gsub(l_HttpService_0:UrlEncode("&type=" .. v50), "%%", "%%%%"))))) then
                return v49;
            end;
        else
            return v49;
        end;
    end;
    return nil;
end;
local function v54(v52)
    local v53 = v52[#v52];
    return v53.name, (v8.Dictionary.join(v53.extraProps or {}, {
        detail = v53.detail
    }));
end;
local function _(v55)
    local v56 = false;
    if #v55 > 0 then
        v56 = v55[1].name == v27.AvatarExperienceLandingPage;
    end;
    return v56;
end;
local function _(v58, v59)
    local l_v58_0 = v58;
    if l_v58_0 then
        l_v58_0 = false;
        if #v58 > 0 then
            l_v58_0 = v59 and v58[1].name == v59;
        end;
    end;
    return l_v58_0;
end;
local v62 = v9.Component:extend("DeepLinkEventReceiver");
v62.UpdateConnection = function(v63)
    if not v63.props.userLoggedOut and v63.props.appLoadingStarted then
        v63.props.linking:getAndClearLastPendingURL():andThen(function(v64)
            if v64.hasPendingUrl then
                v63:logPendingLink(v64.url, v64.attributionUrl);
                return ;
            else
                return ;
            end;
        end);
        v63.props.linking:listenForLuaURLs(function(v65, v66)
            if v36 then
                v63:logProcessedLink(v65, v66);
            end;
            v63:navigate(v65);
            if v33 then
                v63.props.loggingProtocol:logEvent("deeplink_navigation_begin");
            end;
        end);
    else
        v63.props.linking:stopListeningForLuaURLs();
    end;
    if v63.props.userLoggedOut then
        local v67 = v63.props.linking:getLastLuaURL();
        if v67 then
            local v68 = {};
            for v69, v70 in v67:gmatch("([^&=?]-)=([^&=?]+)") do
                v68[v69] = v70:gsub("+", " "):gsub("%%(%x%x)", function(v71)
                    return (string.char((tonumber(v71, 16))));
                end);
            end;
            if v68.friendshipSourceType == "profileshare" then
                v63.props.socialProfileShareAnalytics.inviteePageLoad(v68.userId, "appSignIn");
            end;
        end;
    end;
end;
v62.navigate = function(v72, v73)
    return v17.resolve((v38:resolve(v73, {
        history = v72.props.currentHistory,
        network = v72.props.networking,
        analyticsImpls = {
            socialProfileShareAnalytics = v72.props.socialProfileShareAnalytics,
            shareLinksAnalytics = v72.props.shareLinksAnalytics
        },
        resolveLinkFromLinkId = v72.props.ResolveLinkFromLinkId,
        launchGame = l_LaunchGame_0,
        closeCentralOverlay = v72.props.CloseCentralOverlay
    }))):andThen(function(v74)
        if not (not (type(v74) == "table") or not next(v74)) then
            local v75 = v74[#v74];
            if not l_GetFFlagEnableUnifiedWebViews_0() and not l_default_0.isEnabled() then
                if v72.props.browserService then
                    v72.props.browserService:CloseBrowserWindow();
                end;
                local v76 = false;
                if #v75 > 0 then
                    v76 = v75[1].name == v27.AvatarExperienceLandingPage;
                end;
                if not v76 then
                    local l_Chat_0 = v26.Chat;
                    v76 = v75;
                    if v76 then
                        v76 = false;
                        if #v75 > 0 then
                            v76 = l_Chat_0 and v75[1].name == l_Chat_0;
                        end;
                    end;
                    if not v76 then
                        v72.props.ResetNavigationHistory(v74);
                    else
                        v72.navigateIntoChat(v54(v75));
                        return ;
                    end;
                else
                    v76 = v75[#v75];
                    v72.props.NavigateIntoAvatarExperience(v76.name, v8.Dictionary.join(v76.extraProps or {}, {
                        detail = v76.detail
                    }), true);
                    return ;
                end;
            else
                if not ((not l_GetFFlagEnableUnifiedWebViews_0() or l_default_0.isEnabled()) or not v72.props.browserService) then
                    v72.props.browserService:CloseBrowserWindow();
                end;
                local l_AvatarExperienceLandingPage_0 = v27.AvatarExperienceLandingPage;
                local l_v75_0 = v75;
                if l_v75_0 then
                    l_v75_0 = false;
                    if #v75 > 0 then
                        l_v75_0 = l_AvatarExperienceLandingPage_0 and v75[1].name == l_AvatarExperienceLandingPage_0;
                    end;
                end;
                if not l_v75_0 then
                    l_AvatarExperienceLandingPage_0 = v26.Chat;
                    l_v75_0 = v75;
                    if l_v75_0 then
                        l_v75_0 = false;
                        if #v75 > 0 then
                            l_v75_0 = l_AvatarExperienceLandingPage_0 and v75[1].name == l_AvatarExperienceLandingPage_0;
                        end;
                    end;
                    if not l_v75_0 then
                        v72.props.ResetNavigationHistory(v74);
                        return ;
                    else
                        v72.navigateIntoChat(v54(v75));
                        return ;
                    end;
                else
                    l_v75_0, l_AvatarExperienceLandingPage_0 = v54(v75);
                    v72.props.NavigateIntoAvatarExperience(l_v75_0, l_AvatarExperienceLandingPage_0, true);
                    return ;
                end;
            end;
        end;
    end);
end;
v62.logPendingLink = function(v80, v81, v82)
    local l_appAnalytics_0 = v80.props.appAnalytics;
    local _ = nil;
    local v85 = nil;
    if v35 then
        local v86, v87 = unpack(string.split(l_simpleUrlDecode_0(v81), "?"));
        v86 = l_ParseQuery_0(v87);
        v85 = if not not v86 and v86.stamp then v86.stamp[1] else nil;
    end;
    local v88 = v51(v81);
    l_appAnalytics_0.EventStream:setRBXEventStream("deepLinkEventReceiver", "PendingDeepLinkProcessed", {
        attributionUrl = v82,
        shareLinkType = v88,
        stamp = v85,
        url = v81,
        userDidLogIn = v80.loginTracking.userDidLogIn,
        userDidSignUp = v80.loginTracking.userDidSignUp
    });
    local v89 = "PendingLink";
    if not v80.loginTracking.userDidLogIn then
        if v80.loginTracking.userDidSignUp then
            v89 = "PendingLinkAfterSignUp";
        end;
    else
        v89 = "PendingLinkAfterLogin";
    end;
    l_appAnalytics_0.Diag:reportCounter(v89, 1);
    if v88 ~= nil then
        l_appAnalytics_0.Diag:reportCounter(v89 .. v88, 1);
    end;
end;
v62.logProcessedLink = function(v90, v91, v92)
    local l_appAnalytics_1 = v90.props.appAnalytics;
    local l_sessionService_0 = v90.props.sessionService;
    local _, v96 = unpack(string.split(l_simpleUrlDecode_0(v91), "?"));
    local v97 = l_ParseQuery_0(v96);
    l_appAnalytics_1.EventStream:setRBXEventStream("deepLinkEventReceiver", "DeepLinkProcessed", {
        attributionUrl = v92,
        sessionId = l_sessionService_0:GetRootSID(),
        shareLinkType = v51(v91),
        stamp = if not not v97 and v97.stamp then v97.stamp[1] else nil,
        url = v91,
        utm = if not not v97 and v97.utm then v97.utm[1] else nil,
        userDidLogIn = v90.loginTracking.userDidLogIn,
        userDidSignUp = v90.loginTracking.userDidSignUp
    });
end;
v62.init = function(v98)
    v98.loginTracking = {
        userDidLogIn = false,
        userDidSignUp = false,
        signUpUsername = nil
    };
    v98:UpdateConnection();
    v98.navigateIntoChat = function(_, v100)
        v98.props.EnteredChatFromEntryPoint(v100 and v100.entryPoint);
        v98.props.NavigateIntoChat({
            conversationId = v100 and v100.detail
        }, true);
    end;
end;
v62.render = function(_)
end;
v62.didUpdate = function(v102, v103)
    v102.loginTracking.signUpUsername = v102.props.signUpUsername or v102.loginTracking.signUpUsername;
    if v103.userLoggedOut ~= v102.props.userLoggedOut and not v102.props.userLoggedOut then
        local l_signUpUsername_0 = v102.loginTracking.signUpUsername;
        local v105 = false;
        if l_signUpUsername_0 ~= nil then
            v105 = l_signUpUsername_0 == v102.props.username;
        end;
        v102.loginTracking.userDidLogIn = not v105;
        v102.loginTracking.userDidSignUp = v105;
    end;
    v102:UpdateConnection();
end;
v62.willUnmount = function(v106)
    v106.props.linking:stopListeningForLuaURLs();
end;
return (l_RoactServices_0.connect({
    appAnalytics = v20,
    browserService = l_AppBrowserService_0,
    linking = l_AppLinking_0,
    loggingProtocol = l_AppLogging_0,
    networking = v21,
    sessionService = l_AppSessionService_0,
    shareLinksAnalytics = v23,
    socialProfileShareAnalytics = v24
})((v10.connect(function(v107, _)
    return {
        currentHistory = v107.Navigation.history,
        userLoggedOut = v107.AuthenticationStatus.status == v14.LOGGED_OUT,
        signUpUsername = v107.SignUpInfo.SignUpUsername,
        username = if not v107.Users[v107.LocalUserId] then nil else v107.Users[v107.LocalUserId].name,
        appLoadingStarted = v107.Startup.AppDataStatus ~= v19.NotStarted
    };
end, function(v109)
    return {
        CloseCentralOverlay = function()
            return v109(v13());
        end,
        EnteredChatFromEntryPoint = function(v110)
            return v109(l_EnteredChatFromEntryPoint_0(v110));
        end,
        NavigateIntoAvatarExperience = function(v111, v112, v113)
            return v109(v15(v111, v112, v113));
        end,
        NavigateIntoChat = function(v114, v115)
            return v109(l_NavigateIntoChat_0(v114, v115));
        end,
        ResetNavigationHistory = function(v116)
            return v109(v18(nil, v116));
        end,
        ResolveLinkFromLinkId = function(v117, v118)
            return v109(v30.NetworkingShareLinks.ResolveLinkFromLinkId.API({
                linkId = v117,
                linkType = v118
            }));
        end
    };
end)(v62))));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_AppStorageService_0 = game:GetService("AppStorageService");
local v2 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Enum.LocalStorageKey);
local v3 = require(script.Parent.EventNetworking);
local v4 = require(l_CorePackages_0.LuaSocialLibrariesDeps);
local v5 = v4.SocialLibraries.config({});
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.RoactRodux);
local l_llama_0 = v4.llama;
local l_ReceivedDisplayName_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Actions.ReceivedDisplayName;
local v10 = v6.Component:extend("DisplayNameEventReceiver");
local v11 = {};
v10.defaultProps = {
    appStorageService = l_AppStorageService_0
};
v10.init = function(v12)
    v12.tokens = {
        v12.props.RobloxEventReceiver:observeEvent("DisplayNameNotifications", function(v13)
            local l_UserId_0 = v13.UserId;
            local l_NewDisplayName_0 = v13.NewDisplayName;
            v12.props.appStorageService:SetItem(v2.DisplayName, l_NewDisplayName_0);
            v12.props.appStorageService:Flush();
            v12.props.receivedDisplayName(l_UserId_0, l_NewDisplayName_0);
            local v16 = v12.props.users[tostring(l_UserId_0)];
            if v16 then
                v12.props.userUpdated(l_llama_0.Dictionary.join(v16, {
                    displayName = l_NewDisplayName_0
                }));
            end;
        end)
    };
end;
v10.render = function(_)
    return nil;
end;
v10.willUnmount = function(v18)
    for _, v20 in pairs(v18.tokens) do
        v20:disconnect();
    end;
end;
return v7.connect(function(v21)
    return {
        localUserId = v21.LocalUserId,
        users = v5.Dictionary.getDeepValue(v21, "FriendsCarousel.Users.byUserId") or v11
    };
end, function(v22)
    return {
        receivedDisplayName = function(v23, v24)
            v22(l_ReceivedDisplayName_0(v23, v24));
        end,
        userUpdated = function(v25)
            return v22(v3.RoduxUsers.Actions.UserUpdated(v25));
        end
    };
end)(v10);


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local v3 = require(script.Parent.EventNetworking);
local function _(v4)
    return ({
        FriendshipRequested = true,
        FriendshipDeclined = true,
        FriendshipCreated = true
    })[v4];
end;
local v6 = v1.PureComponent:extend("FriendRequestsEventReceiver");
v6.init = function(v7)
    v7.tokens = {
        v7.props.RobloxEventReceiver:observeEvent("FriendshipNotifications", function(v8)
            if ({
                FriendshipRequested = true,
                FriendshipDeclined = true,
                FriendshipCreated = true
            })[v8.Type] and not v7.props.friendRequestCountStatus ~= v3.RoduxNetworking.Enum.NetworkStatus.Fetching then
                v7.props.dispatchFetchFriendRequestsCount(v7.props.localUserId);
            end;
        end)
    };
end;
v6.render = function(_)
    return nil;
end;
v6.willUnmount = function(v10)
    for _, v12 in pairs(v10.tokens) do
        v12:disconnect();
    end;
end;
return v2.connect(function(v13)
    return {
        localUserId = v13.LocalUserId,
        friendRequestCountStatus = v3.FriendsNetworking.GetFriendRequestsCount.getStatus(v13)
    };
end, function(v14, _)
    return {
        dispatchFetchFriendRequestsCount = function(v16)
            return v14(v3.FriendsNetworking.GetFriendRequestsCount.API(v16));
        end
    };
end)(v6);


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_Modules_0.Common.RoactRodux);
local v4 = require(l_Modules_0.Common.Roact);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v6 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v7 = require(l_Modules_0.LuaApp.Thunks.FriendshipCreated);
local v8 = require(l_Modules_0.LuaApp.Thunks.FriendshipDestroyed);
local v9 = require(script.Parent.EventNetworking);
local l_FriendsCarouselFriendshipUpdateSignal_0 = require(l_Modules_0.LuaApp.Components.FriendsCarousel.api).Signals.FriendsCarouselFriendshipUpdateSignal;
local l_FFlagFriendsCarouselFriendshipUpdatesEnabled_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagFriendsCarouselFriendshipUpdatesEnabled;
local v12 = v4.Component:extend("FriendshipEventReceiver");
v12.init = function(v13)
    local l_friendshipCreated_0 = v13.props.friendshipCreated;
    local l_friendshipDestroyed_0 = v13.props.friendshipDestroyed;
    local l_networking_0 = v13.props.networking;
    v13.tokens = {
        v13.props.RobloxEventReceiver:observeEvent("FriendshipNotifications", function(v17)
            local v18 = tostring(v13.props.localUserId);
            if v17.Type == "FriendshipDestroyed" then
                local v19 = v18 == tostring(v17.EventArgs.UserId1) and tostring(v17.EventArgs.UserId2) or tostring(v17.EventArgs.UserId1);
                l_friendshipDestroyed_0({
                    otherUser = v19,
                    localUserId = v18
                });
                if l_FFlagFriendsCarouselFriendshipUpdatesEnabled_0 then
                    l_FriendsCarouselFriendshipUpdateSignal_0:Fire({
                        removedUserId = v19
                    });
                    return ;
                end;
            elseif v17.Type == "FriendshipCreated" then
                local v20 = v18 == tostring(v17.EventArgs.UserId1) and tostring(v17.EventArgs.UserId2) or tostring(v17.EventArgs.UserId1);
                l_friendshipCreated_0(l_networking_0, v20);
                if l_FFlagFriendsCarouselFriendshipUpdatesEnabled_0 then
                    l_FriendsCarouselFriendshipUpdateSignal_0:Fire({
                        addedUserId = v20
                    });
                end;
            end;
        end)
    };
end;
v12.render = function(_)
end;
v12.willUnmount = function(v22)
    for _, v24 in pairs(v22.tokens) do
        v24:disconnect();
    end;
end;
return (l_RoactServices_0.connect({
    networking = v6
})((v3.connect(function(v25)
    return {
        localUserId = v25.LocalUserId
    };
end, function(v26)
    return {
        friendshipCreated = function(...)
            return v26(v7(...));
        end,
        friendshipDestroyed = function(v27)
            v26(v9.RoduxFriends.Actions.FriendshipDestroyed(v27.otherUser, v27.localUserId));
            return v26(v8(v27.otherUser));
        end
    };
end)(v12))));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v4 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
local l_AppUserGameSettings_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppUserGameSettings;
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v7 = require(l_Modules_0.Common.RoactUtilities.ExternalEventConnection);
local v8 = require(l_Modules_0.LuaApp.Components.ExitFullscreenToast);
local v9 = v2.PureComponent:extend("FullscreenEventReceiver");
v9.init = function(v10)
    v10:setState({
        fullscreenEnabled = v10.props.appUserGameSettings:InFullScreen()
    });
    v10.onFullscreenChanged = function(v11)
        v10:setState({
            fullscreenEnabled = v11
        });
    end;
end;
v9.sendAnalytics = function(v12)
    v12.props.analytics.EventStream:setRBXEventStream("LuaApp", "FullscreenMode", {
        enabled = v12.state.fullscreenEnabled
    });
end;
v9.render = function(v13)
    if not v13.props.policyExitFullscreenToast then
        return v2.createElement(v7, {
            event = v13.props.appUserGameSettings.FullscreenChanged,
            callback = v13.onFullscreenChanged
        });
    else
        return v2.createFragment({
            EventConnector = v2.createElement(v7, {
                event = v13.props.appUserGameSettings.FullscreenChanged,
                callback = v13.onFullscreenChanged
            }),
            ExitFullscreenToast = v13.state.fullscreenEnabled and v2.createElement(v8)
        });
    end;
end;
v9.didMount = function(v14)
    v14:sendAnalytics();
end;
v9.didUpdate = function(v15, _, v17)
    if v17.fullscreenEnabled ~= v15.state.fullscreenEnabled then
        v15:sendAnalytics();
    end;
end;
return (l_RoactAppPolicy_0.connect(function(v18, _)
    return {
        policyExitFullscreenToast = v18.getShowExitFullscreenToast()
    };
end)((l_RoactServices_0.connect({
    analytics = v4,
    appUserGameSettings = l_AppUserGameSettings_0
})(v9))));


local l_GuiService_0 = game:GetService("GuiService");
game:DefineFastFlag("UniversalAppCsat3", false);
return function()
    return (game:GetEngineFeature("UniversalAppCsatAppStorageKey") and game:GetFastFlag("UniversalAppCsat3")) and not l_GuiService_0:IsTenFootInterface();
end;


local l_GuiService_0 = game:GetService("GuiService");
game:DefineFastFlag("UniversalAppMenuCsat3", false);
game:DefineFastFlag("EnableV3MenuABTest3", false);
return function()
    return ((game:GetEngineFeature("UniversalAppMenuCsatAppStorageKey") and game:GetFastFlag("UniversalAppMenuCsat3")) and game:GetFastFlag("EnableV3MenuABTest3")) and not l_GuiService_0:IsTenFootInterface();
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_MarketplaceService_0 = game:GetService("MarketplaceService");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local v6 = require(l_Modules_0.Common.RoactUtilities.ExternalEventConnection);
local v7 = require(l_Modules_0.LuaApp.Thunks.NativePurchaseComplete);
local v8 = require(l_Modules_0.LuaApp.Thunks.NativePurchaseCompleteDEP);
local v9 = require(l_Modules_0.LuaApp.Enum.NativePurchaseStatus);
local v10 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v12 = v4.PureComponent:extend("MarketplaceServiceEventReciever");
v12.render = function(v13)
    if not game:GetEngineFeature("NativePurchaseWithLocalPlayer") then
        return v4.createElement(v6, {
            event = l_MarketplaceService_0.NativePurchaseFinished,
            callback = function(v14, v15, v16)
                v13.props.nativePurchaseFinishedWithNetwork(v13.props.networking, v14, v15, v16);
            end
        });
    else
        return v4.createFragment({
            v4.createElement(v6, {
                event = l_MarketplaceService_0.NativePurchaseFinishedWithLocalPlayer,
                callback = function(v17, v18)
                    v13.props.nativePurchaseFinishedWithLocalPlayer(v13.props.networking, v17, v18);
                end
            }),
            v4.createElement(v6, {
                event = l_MarketplaceService_0.NativePurchaseFinished,
                callback = function(v19, v20, v21)
                    v13.props.nativePurchaseFinishedWithNetwork(v13.props.networking, v19, v20, v21);
                end
            })
        });
    end;
end;
return v5.connect(nil, function(v22)
    return {
        nativePurchaseFinished = function(_, v24, v25)
            return v22(v8(v24, v25));
        end,
        nativePurchaseFinishedWithNetwork = function(v26, _, v28, v29)
            return v22(v7(v26, v28, if not v29 then v9.Failed else v9.Success));
        end,
        nativePurchaseFinishedWithLocalPlayer = function(v30, v31, v32)
            return v22(v7(v30, v31, if not v32 then v9.Failed else v9.Success));
        end
    };
end)((l_RoactServices_0.connect({
    networking = v10
})(v12)));


local l_Players_0 = game:GetService("Players");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local l_AppStorageService_0 = game:GetService("AppStorageService");
local l_HttpService_0 = game:GetService("HttpService");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.Packages.Cryo);
local v8 = require(l_CorePackages_0.RoactRodux);
local l_MessageBus_0 = require(l_CorePackages_0.Workspace.Packages.MessageBus).MessageBus;
local v10 = require(l_CorePackages_0.Packages.t);
local v11 = require(l_Modules_0.LuaApp.Thunks.OpenWebview);
local v12 = require(l_Modules_0.LuaApp.Experiment.AppUserLayers);
local v13 = require(l_Modules_0.LuaApp.Experiment.RoactAppExperiment);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v15 = require(l_Modules_0.LuaApp.Http.UrlBuilder);
local v16 = require(script.Parent.CsatSurveyConstants);
local v17 = v6.PureComponent:extend("MenuCsatInterceptEventReceiver");
v17.validateProps = v10.strictInterface({
    RobloxEventReceiver = v10.table,
    baseUrlFormat = v10.string,
    surveyId = v10.string,
    isQualified = v10.boolean,
    restrictTextInput = v10.boolean,
    openWebView = v10.callback,
    menuVersion = v10.string,
    analyticsService = v10.optional(v10.union(v10.Instance, v10.table))
});
v17.defaultProps = {
    baseUrlFormat = "",
    surveyId = "",
    isQualified = false,
    restrictTextInput = false,
    menuVersion = "",
    analyticsService = l_RbxAnalyticsService_0
};
v17.getSurveyUrl = function(v18)
    assert(v10.string(v18.props.baseUrlFormat));
    assert(v10.string(v18.props.surveyId));
    assert(v10.boolean(v18.props.restrictTextInput));
    assert(v10.string(v18.props.menuVersion));
    local v19 = tostring(l_Players_0.LocalPlayer.UserId);
    assert(v10.string(v19));
    return (v15.fromString(v18.props.baseUrlFormat)({
        surveyId = v18.props.surveyId or "",
        userId = v19 or "0",
        restrictTextInput = tostring(v18.props.restrictTextInput) or "true",
        menuVersion = v18.props.menuVersion or ""
    }));
end;
v17.getCompletedSurveyIds = function(v20)
    local l_status_0, l_result_0 = pcall(function()
        return l_AppStorageService_0:GetItem(v16.LOCAL_STORAGE_KEY_CSAT_SURVEY_COMPLETED_IDS);
    end);
    if l_status_0 and l_result_0 ~= "" then
        return l_HttpService_0:JSONDecode(l_result_0);
    else
        warn("Unable to fetch completed survey ids from app storage ", l_result_0);
        v20.props.analyticsService:SetRBXEventStream(v16.ANALYTICS_CONTEXT_APP, v16.ANALYTICS_EXPERIMENT_MENU_TEST, v16.ANALYTICS_EXPERIMENT_MENU_GET_COMPLETED_SURVEY_IDS_FIELD, {
            error = l_result_0
        });
        return {};
    end;
end;
v17.hasCompletedSurvey = function(v23)
    assert(v10.string(v23.props.surveyId));
    for _, v25 in ipairs(v23.completedSurveyIds) do
        if v25 == v23.props.surveyId then
            return true;
        end;
    end;
    return false;
end;
v17.trackSurveyIdLocally = function(v26)
    assert(v10.string(v26.props.surveyId));
    if not v26:hasCompletedSurvey() then
        if v16.LOCAL_STORAGE_CSAT_SURVEY_IDS_LIMIT <= #v26.completedSurveyIds then
            v26.completedSurveyIds = v7.List.getRange(v26.completedSurveyIds, 2, #v26.completedSurveyIds);
        end;
        table.insert(v26.completedSurveyIds, v26.props.surveyId);
        local l_status_1, l_result_1 = pcall(function()
            l_AppStorageService_0:SetItem(v16.LOCAL_STORAGE_KEY_CSAT_SURVEY_COMPLETED_IDS, l_HttpService_0:JSONEncode(v26.completedSurveyIds) or "{}");
            l_AppStorageService_0:Flush();
        end);
        if not l_status_1 then
            warn("Uncaught exception for setting completed CSAT survey ids on app storage", l_result_1);
            v26.props.analyticsService:SetRBXEventStream(v16.ANALYTICS_CONTEXT_APP, v16.ANALYTICS_EXPERIMENT_MENU_TEST, v16.ANALYTICS_EXPERIMENT_MENU_SET_COMPLETED_SURVEY_IDS_FIELD, {
                error = l_result_1
            });
        end;
        return ;
    else
        return ;
    end;
end;
parseCountData = function(v29)
    if not v29 or typeof(v29) ~= "string" then
        return nil, nil;
    else
        local v30 = v29:split(":");
        return v30[1], v30[2];
    end;
end;
v17.isQualified = function(_)
    local v32 = false;
    local l_status_2, l_result_2 = pcall(function()
        return l_AppStorageService_0:GetItem(v16.LOCAL_STORAGE_KEY_EXPERIENCE_MENU_CSAT_QUALIFICATION);
    end);
    local v35, v36 = parseCountData(l_result_2);
    if not (not (v36 == v16.EXPERIENCE_MENU_TEST_VERSION) or not tonumber(v35)) then
        v32 = v16.EXPERIENCE_MENU_CSAT_QUALIFICATION_THRESHOLD <= tonumber(v35);
    end;
    if not l_status_2 or not v32 then
        return false;
    else
        return true;
    end;
end;
v17.canShowSurvey = function(v37)
    assert(v10.string(v37.props.surveyId));
    if not (v37.props.surveyId ~= "") or v37.props.surveyId == nil then
        return false;
    elseif not (v37.props.menuVersion ~= "") or v37.props.menuVersion == nil then
        return false;
    elseif not v37:hasCompletedSurvey() then
        local v38 = v37:getCurrentMenuVersion();
        local v39 = false;
        if v37.props.menuVersion == "v3t3" then
            v39 = v37.props.menuVersion == v38;
        end;
        local v40 = false;
        if v37.props.menuVersion == "v1t3" then
            v40 = v37.props.menuVersion == v38;
        end;
        return not not v37:isQualified() and v39 or v40;
    else
        return false;
    end;
end;
v17.getCurrentMenuVersion = function(_)
    local l_status_3, l_result_3 = pcall(function()
        return l_AppStorageService_0:GetItem(v16.LOCAL_STORAGE_KEY_EXPERIENCE_MENU_VERSION);
    end);
    if l_status_3 and l_result_3 ~= "" then
        return l_result_3;
    else
        return nil;
    end;
end;
v17.init = function(v44)
    v44.completedSurveyIds = v44:getCompletedSurveyIds();
    v44.subscriber = l_MessageBus_0.Subscriber.new();
    v44.subscriber:subscribe(v16.ON_GAME_LEAVE_DESCRIPTOR, function(_)
        v44.subscriber:unsubscribe(v16.ON_GAME_LEAVE_DESCRIPTOR);
        if v44:canShowSurvey() then
            local v46 = v44:getSurveyUrl();
            wait(0.2);
            if v46 ~= nil then
                v44.props.openWebView(v46, "Survey");
                v44:trackSurveyIdLocally();
            end;
        end;
    end);
end;
v17.render = function(_)
end;
return (l_RoactAppPolicy_0.connect(function(v48, _)
    return {
        restrictTextInput = v48.getCsatSurveyRestrictTextInput() or false
    };
end)((v13.connectUserLayer({
    v12.GameLeaveLayer,
    v12.ExperienceMenuLayer
}, function(v50, _)
    local v52 = v50[v12.GameLeaveLayer] or {};
    return {
        baseUrlFormat = v52.baseUrlFormat,
        surveyId = v52.surveyId,
        isQualified = v52.isQualified,
        menuVersion = (v50[v12.ExperienceMenuLayer] or {}).menuVersion
    };
end)((v8.connect(nil, function(v53)
    return {
        openWebView = function(v54, v55)
            return v53(v11(v54, v55));
        end
    };
end)(v17))))));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v3 = require(l_CorePackages_0.Packages.React);
local v4 = require(l_CorePackages_0.Packages.ReactRoblox);
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.RoactRodux);
local v7 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v8 = require(l_CorePackages_0.Logging);
local v9 = require(l_CorePackages_0.Cryo);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local v11 = require(l_Modules_0.LuaApp.Components.Moderation.ModerationVerificationPrompt);
local v12 = require(l_Modules_0.LuaApp.Components.Moderation.ModerationPrompt);
local v13 = require(l_Modules_0.LuaApp.Components.Moderation.ModerationReactivationPrompt);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v15 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local v17 = require(l_Modules_0.LuaApp.Constants);
local v18 = require(l_Modules_0.LuaApp.mutedError);
local v19 = require(l_Modules_0.LuaApp.Components.Moderation.ModerationState);
local v20 = require(l_Modules_0.LuaApp.Components.Moderation.ModerationType);
local v21 = require(l_Modules_0.LuaApp.Http.UrlBuilder);
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local _ = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useDispatch;
local v24 = require(l_CorePackages_0.Workspace.Packages.FocusNavigationUtils);
local l_FocusNavigableSurfaceRegistry_0 = v24.FocusNavigableSurfaceRegistry;
local l_useRegisterFocusNavigableSurface_0 = l_FocusNavigableSurfaceRegistry_0.useRegisterFocusNavigableSurface;
local l_useDeRegisterFocusNavigableSurface_0 = l_FocusNavigableSurfaceRegistry_0.useDeRegisterFocusNavigableSurface;
local l_FocusNavigableSurfaceIdentifierEnum_0 = v24.FocusNavigableSurfaceIdentifierEnum;
local v29 = require(l_CorePackages_0.Packages.ReactFocusNavigation);
local l_FocusNavigationEventNameEnum_0 = v24.FocusNavigationEventNameEnum;
local v31 = require(l_Modules_0.LuaApp.AppPage);
local v32 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v33 = require(l_Modules_0.LuaApp.Thunks.Moderation.ReactivateAccount);
local v34 = require(l_Modules_0.LuaApp.Thunks.Authentication.Logout);
local v35 = require(l_Modules_0.LuaApp.Actions.Moderation.SetModerationStatus);
local v36 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.luaLogoutReasonNames);
local v37 = game:DefineFastFlag("ModerationVerificationEnabled", false);
local v38 = game:DefineFastFlag("ModerationVerificationEnabled2", false);
local l_FFlagEnableDeactivatedUserReactivation_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagEnableDeactivatedUserReactivation;
local v40 = v5.PureComponent:extend("ModerationEventReceiver");
v40.init = function(v41)
    v41.reactivateAccountActivated = function()
        if v41.props.moderation.moderationDetail then
            v41.props.reactivateAccountActivated(v41.props.networking, v41.props.moderation.moderationDetail.punishmentId);
        end;
    end;
    v41.logoutCallback = function()
        v41.props.doLogout(v41.props.networking, v41.props.guiService);
    end;
    v41.communityGuidelinesActivated = function(v42)
        v41.props.navigateDown({
            name = v31.GenericWebPage,
            detail = v21.static.about.guidelines(),
            extraProps = {
                title = v42.CommunityGuidelines
            }
        });
    end;
    v41.dsaLearnMoreActivated = function()
        v41.props.navigateDown({
            name = v31.GenericWebPage,
            detail = "https://en.help.roblox.com/hc/en-us/articles/360000272703-Appeal-Your-Content-Moderation",
            extraProps = {
                title = "Appeal Your Content Moderation"
            }
        });
    end;
    v41.termsActivated = function(v43)
        v41.props.navigateDown({
            name = v31.GenericWebPage,
            detail = v21.static.about.terms({
                useGameQQUrls = true
            }),
            extraProps = {
                title = v43.TermsOfUse
            }
        });
    end;
    v41.parentVerificationActivated = function()
        if not v38 then
            v41.props.navigateDown({
                name = v31.ParentVerification
            });
            return ;
        else
            v41.props.navigateDown({
                name = v31.ParentVerification,
                detail = v21.fromString("www:parents/account-setup")()
            });
            return ;
        end;
    end;
    v41.emailVerificationActivated = function()
        if not v38 then
            v41.props.navigateDown({
                name = v31.EmailVerification
            });
            return ;
        else
            v41.props.navigateDown({
                name = v31.EmailVerification,
                detail = v21.fromString("www:")()
            });
            return ;
        end;
    end;
    v41.reportingAppealsPageActivated = function(v44)
        v41.props.navigateDown({
            name = v31.GenericWebPage,
            detail = v21.static.appealsPortal.main(),
            extraProps = {
                title = v44.ReportingAppeals
            }
        });
    end;
end;
v40.render = function(v45)
    local l_moderation_0 = v45.props.moderation;
    if l_moderation_0 == nil then
        return nil;
    else
        local v47 = l_moderation_0.userModerated or false;
        local l_moderationDetail_0 = l_moderation_0.moderationDetail;
        if v47 == false then
            return nil;
        else
            local l_globalGuiInset_0 = v45.props.globalGuiInset;
            l_globalGuiInset_0.top = v45.props.statusBarHeight;
            local v50 = v5.createElement("ScreenGui", {
                ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
                DisplayOrder = v17.DisplayOrder.AntiAddictionPrompt,
                IgnoreGuiInset = true
            }, {
                OverlayFrame = v5.createElement("ImageButton", {
                    AutoButtonColor = false,
                    Size = UDim2.fromScale(1, 1),
                    ImageTransparency = 1,
                    BackgroundColor3 = Color3.new(0, 0, 0),
                    BackgroundTransparency = 0.5,
                    BorderSizePixel = 0
                })
            });
            if l_moderationDetail_0 then
                local l_punishmentTypeDescription_0 = l_moderationDetail_0.punishmentTypeDescription;
                local v52 = v20[l_punishmentTypeDescription_0];
                v7.isNotNil(v52, "moderationState should not be nil");
                if v52 == nil then
                    v18("ModerationEventReceiver Got Invalid Moderation Type:`" .. tostring(l_punishmentTypeDescription_0) .. "`");
                    v52 = v19.None;
                end;
                if v52 == v19.None then
                    v45.props.setModerationStatus(false);
                    return nil;
                else
                    v50 = l_withLocalization_0({
                        CommunityGuidelines = "Feature.Moderation.Link.CommunityGuidelines",
                        TermsOfUse = "Feature.Moderation.Link.TermsOfUse",
                        SupportForm = "Feature.Moderation.Link.SupportForm",
                        ReportingAppeals = "CommonUI.Features.Label.ReportAppeals"
                    })(function(v53)
                        if l_FFlagEnableDeactivatedUserReactivation_0 and l_moderationDetail_0.selfServiceDeactivated == true then
                            return v5.createElement(v13, {
                                screenSize = v45.props.screenSize,
                                globalGuiInset = l_globalGuiInset_0,
                                logoutCallback = v45.logoutCallback,
                                completedCallback = function()
                                    v45.props.setModerationStatus(false);
                                end
                            });
                        elseif v37 and l_moderationDetail_0.verificationCategory ~= "" then
                            return v5.createElement(v11, {
                                screenSize = v45.props.screenSize,
                                moderationDetails = l_moderationDetail_0,
                                globalGuiInset = l_globalGuiInset_0,
                                reactivateAccountActivated = v45.reactivateAccountActivated,
                                logoutCallback = v45.logoutCallback,
                                verificationCategory = l_moderationDetail_0.verificationCategory ~= nil and l_moderationDetail_0.verificationCategory or "",
                                communityGuidelinesActivated = function()
                                    v45.communityGuidelinesActivated(v53);
                                end,
                                termsActivated = function()
                                    v45.termsActivated(v53);
                                end,
                                reportingAppealsPageActivated = function()
                                    v45.reportingAppealsPageActivated(v53);
                                end,
                                parentVerificationActivated = l_moderationDetail_0.verificationCategory == "VPC" and function()
                                    v45.parentVerificationActivated();
                                end or function()
                                    v45.emailVerificationActivated();
                                end,
                                dsaLearnMoreActivated = function()
                                    v45.dsaLearnMoreActivated();
                                end
                            });
                        else
                            return v5.createElement(v12, {
                                screenSize = v45.props.screenSize,
                                moderationDetails = l_moderationDetail_0,
                                globalGuiInset = l_globalGuiInset_0,
                                reactivateAccountActivated = v45.reactivateAccountActivated,
                                logoutCallback = v45.logoutCallback,
                                communityGuidelinesActivated = function()
                                    v45.communityGuidelinesActivated(v53);
                                end,
                                termsActivated = function()
                                    v45.termsActivated(v53);
                                end,
                                dsaLearnMoreActivated = function()
                                    v45.dsaLearnMoreActivated();
                                end,
                                reportingAppealsPageActivated = function()
                                    v45.reportingAppealsPageActivated(v53);
                                end
                            });
                        end;
                    end);
                end;
            end;
            return v4.createPortal({
                ModerationOverlayWrapper = v3.createElement("Frame", {
                    Size = UDim2.fromScale(1, 1),
                    BackgroundTransparency = 1,
                    ref = v45.props.forwardRef,
                    Selectable = false
                }, {
                    ModerationOverlay = v50
                })
            }, l_CoreGui_0);
        end;
    end;
end;
v40.didUpdate = function(v54, v55)
    if v54.props.moderation ~= nil and v55.moderation ~= v54.props.moderation then
        local l_moderation_1 = v54.props.moderation;
        local v57 = l_moderation_1.userModerated or false;
        local l_moderationDetail_1 = l_moderation_1.moderationDetail;
        if not (not v57 or not l_moderationDetail_1) then
            v8.warn("The user moderationState is:`" .. tostring(v20[l_moderationDetail_1.punishmentTypeDescription]) .. "`");
        end;
    end;
end;
v40 = l_RoactServices_0.connect({
    networking = v15,
    guiService = l_AppGuiService_0
})((v6.connect(function(v59, _)
    return {
        screenSize = v59.ScreenSize,
        moderation = v59.Moderation,
        globalGuiInset = v59.GlobalGuiInset,
        statusBarHeight = v59.TopBar.statusBarHeight
    };
end, function(v61)
    return {
        setModerationStatus = function(v62)
            v61(v35(v62));
        end,
        reactivateAccountActivated = function(v63, v64)
            v61(v33(v63, v64));
        end,
        doLogout = function(v65, v66)
            v61(v34(v65, v66, v36.Moderation));
        end,
        navigateDown = function(v67)
            v61(v32(v67));
        end
    };
end)(v40)));
local v68 = {
    [Enum.KeyCode.ButtonB] = l_FocusNavigationEventNameEnum_0.NavigateBack,
    [Enum.KeyCode.Escape] = l_FocusNavigationEventNameEnum_0.NavigateBack
};
return function(v69)
    local v72 = l_useSelector_0(function(v70)
        local l_Moderation_0 = v70.Moderation;
        return l_Moderation_0 and l_Moderation_0.userModerated;
    end);
    local v73, v74 = v3.useState(nil);
    local v75 = l_useRegisterFocusNavigableSurface_0();
    local v76 = l_useDeRegisterFocusNavigableSurface_0();
    local v77 = v73 and v72;
    v3.useEffect(function()
        if v77 then
            v75(l_FocusNavigableSurfaceIdentifierEnum_0.ModerationOverlay, v73);
        end;
        return function()
            v76(l_FocusNavigableSurfaceIdentifierEnum_0.ModerationOverlay, v73);
        end;
    end, {
        v77,
        v73,
        v75,
        v76
    });
    return v3.createElement(v40, v9.Dictionary.join(v69, {
        forwardRef = v29.useEventHandler(l_FocusNavigationEventNameEnum_0.NavigateBack, v3.useCallback(function(v78)
            v78:cancel();
        end, {}), nil, (v29.useEventMap(v68, v74)))
    }));
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_MemStorageService_0 = game:GetService("MemStorageService");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v6 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local v8 = require(l_Modules_0.LuaApp.Enum.MemStorageKeys);
local v9 = require(l_Modules_0.LuaApp.Thunks.Authentication.Logout);
local v10 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.luaLogoutReasonNames);
local v11 = v3.Component:extend("NativeShellEventReceiver");
v11.didMount = function(v12)
    local l_networking_0 = v12.props.networking;
    local l_guiService_0 = v12.props.guiService;
    v12.connections = {
        l_MemStorageService_0:bind(v8.NativeShellEvent, function(v15)
            if v15 == "NETWORK_ERROR_401" then
                v12.props.logout(l_networking_0, l_guiService_0);
            end;
            l_MemStorageService_0:RemoveItem(v8.NativeShellEvent);
        end)
    };
end;
v11.render = function(_)
end;
v11.willUnmount = function(v17)
    for _, v19 in pairs(v17.connections) do
        v19:Disconnect();
    end;
end;
return (l_RoactServices_0.connect({
    guiService = l_AppGuiService_0,
    networking = v6
})((v4.connect(nil, function(v20)
    return {
        logout = function(v21, v22)
            v20(v9(v21, v22, v10.NativeSessionCheck));
        end
    };
end)(v11))));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_GuiService_0 = game:GetService("GuiService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v4 = require(l_CorePackages_0.Packages.React);
local v5 = require(l_CorePackages_0.Packages.RoactRodux);
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local l_useRoactService_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useRoactService;
local _ = require(l_CorePackages_0.Workspace.Packages.WebViewProtocol).default;
local l_AppNotificationService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppNotificationService;
local _ = require(l_CorePackages_0.Workspace.Packages.Navigation);
local l_selectCurrentRoactNavigationRoute_0 = require(l_CorePackages_0.Workspace.Packages.NavigationRodux).Selectors.selectCurrentRoactNavigationRoute;
local v12 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local v13 = require(l_Modules_0.LuaApp.ExperienceEventReceiver);
local v14 = require(l_Modules_0.LuaApp.Analytics.Events.luaPageLoad);
local v15 = require(l_Modules_0.LuaApp.Analytics.Events.luaPageUnload);
local v16 = require(l_Modules_0.LuaApp.Enum.NotificationType);
local v17 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local v18 = require(l_Modules_0.LuaApp.AppPage);
local v19 = require(l_Modules_0.LuaApp.AppPageProperties);
local v20 = require(l_Modules_0.LuaApp.Thunks.NavigateToRoute);
local v21 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v22 = require(l_Modules_0.LuaApp.Thunks.NavigateBack);
local l_NavigateIntoChat_0 = require(l_CorePackages_0.Workspace.Packages.AppChat).Conversations.Thunks.NavigateIntoChat;
local _ = require(l_Modules_0.LuaApp.Thunks.SendAppReadyForAppInputFocused);
local v25 = require(l_Modules_0.LuaApp.Thunks.ResetNavigationHistory);
local v26 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v27 = require(l_Modules_0.LuaApp.Enum.ToastType);
local v28 = require(l_Modules_0.LuaApp.Actions.SetCurrentToastMessage);
local v29 = require(l_Modules_0.LuaApp.Enum.OverlayType);
local v30 = require(l_Modules_0.LuaApp.Actions.SetPreloading);
local _ = require(l_Modules_0.LuaApp.Experiment.RoactAppExperiment);
local _ = require(l_Modules_0.LuaApp.Experiment.AppUserLayers);
local v33 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppNavigationAnalytics);
local v34 = require(l_Modules_0.LuaApp.Flags.GetFStringLuaAppUnloadEventEnabledPageNames);
local v35 = require(l_Modules_0.LuaApp.Flags.GetFFlagAddPreviousPageToLuaPageLoad);
local function _(v36, v37)
    local v38 = v19[v37];
    v36:SwitchedToAppShellFeature(v38 and v38.appShellReporterFeature or Enum.AppShellFeature.None);
end;
local function _(v40)
    if v40 ~= nil then
        return v40.routeName;
    else
        return nil;
    end;
end;
local function _(v42)
    if v42 ~= nil and v42.params ~= nil then
        return v42.params.detail;
    else
        return nil;
    end;
end;
local function _()
    return #v34() > 0;
end;
local function v67()
    local v45 = l_useRoactService_0(v12);
    local v46 = l_useRoactService_0(l_AppNotificationService_0);
    local v47 = l_useSelector_0(l_selectCurrentRoactNavigationRoute_0);
    local v48 = if not v35() then v47.routeName else if v47 ~= nil then v47.routeName else nil;
    local v49 = if not v35() then if v47.params ~= nil then v47.params.detail else nil else if v47 ~= nil and v47.params ~= nil then v47.params.detail else nil;
    local v50, v51 = v4.useState(os.clock());
    local v52 = v4.useMemo(function()
        if not (#v34() > 0) then
            return nil;
        else
            return v13.new();
        end;
    end, {});
    v4.useEffect(function()
        if v52 ~= nil then
            local v55 = v52:onLaunched(function(v53)
                local v54 = os.clock();
                v15(v45, "AppRouter", v48, v49, {
                    nextPage = "Experience",
                    nextDetail = v53.placeId,
                    timeOnPage = v54 - v50
                });
                v51(v54);
            end);
            local v57 = v52:onLeft(function(v56)
                if not v35() then
                    v14(v45, "AppRouter", v48, v49);
                else
                    v14(v45, "AppRouter", v48, v49, {
                        previousPage = "Experience",
                        previousDetail = v56.placeId
                    });
                end;
                v51(os.clock());
            end);
            return function()
                v55:disconnect();
                v57:disconnect();
            end;
        else
            return ;
        end;
    end, {
        v52,
        v45,
        v48,
        v49
    });
    local v58 = v4.useRef(nil);
    v4.useEffect(function()
        if not v35() then
            v14(v45, "AppRouter", v48, v49);
            local v59 = os.clock();
            if v58.current ~= nil then
                v15(v45, "AppRouter", v58.current.routeName, if v58.current.params ~= nil then v58.current.params.detail else nil, {
                    nextPage = v48,
                    nextDetail = v49,
                    timeOnPage = v59 - v50
                });
            end;
            v58.current = v47;
            local l_v46_0 = v46;
            local v61 = v19[v48];
            l_v46_0:SwitchedToAppShellFeature(v61 and v61.appShellReporterFeature or Enum.AppShellFeature.None);
            v51(v59);
            return ;
        else
            local l_current_0 = v58.current;
            local v63 = if l_current_0 ~= nil then l_current_0.routeName else nil;
            local l_current_1 = v58.current;
            l_current_0 = if l_current_1 ~= nil and l_current_1.params ~= nil then l_current_1.params.detail else nil;
            v14(v45, "AppRouter", v48, v49, {
                previousPage = v63,
                previousDetail = l_current_0
            });
            l_current_1 = os.clock();
            if v58.current ~= nil then
                v15(v45, "AppRouter", v63, l_current_0, {
                    nextPage = v48,
                    nextDetail = v49,
                    timeOnPage = l_current_1 - v50
                });
            end;
            v58.current = v47;
            local l_v46_1 = v46;
            local v66 = v19[v48];
            l_v46_1:SwitchedToAppShellFeature(v66 and v66.appShellReporterFeature or Enum.AppShellFeature.None);
            v51(l_current_1);
            return ;
        end;
    end, {
        v48,
        v49
    });
end;
local v68 = v4.Component:extend("NavigationEventReceiver");
v68.handleBackButtonPressed = function(v69)
    local v70 = #v69.props.currentRoute;
    local l_name_0 = v69.props.currentRoute[1].name;
    local l_name_1 = v69.props.currentRoute[v70].name;
    if (l_name_0 == v18.Chat and l_name_1 ~= v18.GameDetail) and l_name_1 ~= v18.ShareGameToChat then
        return ;
    elseif l_name_1 == v18.ViewFriends and v69.props.centralOverlayType ~= v29.PeopleList then
        return ;
    elseif l_name_1 == v18.AddFriendsPage then
        return ;
    elseif not v19[l_name_1] or not v19[l_name_1].disableBackButton then
        if not v69.props.centralOverlayType then
            if v70 > 1 then
                v69.props.navigateBack();
                return ;
            else
                l_GuiService_0:BroadcastNotification("", v16.BACK_BUTTON_NOT_CONSUMED);
                return ;
            end;
        else
            if not v69.props.centralOverlayDisableBackButtonClose then
                v69.props.closeCentralOverlay();
            end;
            return ;
        end;
    else
        return ;
    end;
end;
v68.init = function(v73)
    local l_RobloxEventReceiver_0 = v73.props.RobloxEventReceiver;
    v73.tokens = {
        l_RobloxEventReceiver_0:observeEvent("Navigations", function(v75, v76)
            if not (v76 ~= "Destination") or v76 == "Reload" then
                if v75.appName == v18.ShareGameToChat then
                    v73.props.navigateDown({
                        name = v18.ShareGameToChat,
                        detail = v75.parameters.placeId
                    });
                    return ;
                elseif v75.appName == v18.Chat then
                    v73.props.setPage({
                        name = v18.Chat,
                        detail = v75.parameters and v75.parameters.conversationId
                    });
                    return ;
                elseif v75.appName == v17.AvatarEditor then
                    v73.props.resetNavigationHistory({
                        {
                            {
                                name = v17.AvatarExperienceLandingPage
                            }
                        },
                        {
                            {
                                name = v17.AvatarExperienceLandingPage
                            },
                            {
                                name = v17.AvatarEditor
                            }
                        }
                    });
                    return ;
                else
                    v73.props.setPage({
                        name = v18[v75.appName] or v18.None
                    });
                end;
            end;
        end),
        l_GuiService_0.ShowLeaveConfirmation:Connect(function()
            v73:handleBackButtonPressed();
        end),
        l_RobloxEventReceiver_0:observeEvent("AppShellNotifications", function(v77, v78)
            if v78 == "StartConversationWithUserId" then
                v73.props.navigateIntoChat({
                    userId = v77
                });
                return ;
            elseif v78 == "StartConversationWithId" then
                v73.props.navigateIntoChat({
                    conversationId = v77
                });
                return ;
            else
                if v78 == "Preloading" then
                    v73.props.setPreloading(v77 == "true");
                end;
                return ;
            end;
        end),
        l_RobloxEventReceiver_0:observeEvent("QrCodeScanResult", function(_, v80)
            if v80 == "Cancelled" then
                v73.props.navigateBack();
                return ;
            else
                v73.props.navigateBack();
                v73.props.setCurrentToast({
                    toastMessage = "Feature.Toast.ScanQrCodeError.UnrecognizableQrCode",
                    toastType = v27.NetworkingError
                });
                return ;
            end;
        end)
    };
end;
v68.render = function(_)
end;
v68.willUnmount = function(v82)
    for _, v84 in pairs(v82.tokens) do
        v84:disconnect();
    end;
end;
v68 = v5.connect(function(v85, _)
    return {
        currentRoute = v85.Navigation.history[#v85.Navigation.history],
        centralOverlayType = v85.CentralOverlay.OverlayType,
        centralOverlayDisableBackButtonClose = v85.CentralOverlay.Configs.DisableBackButtonClose
    };
end, function(v87)
    return {
        setPage = function(v88)
            return v87(v20({
                v88
            }, true));
        end,
        navigateDown = function(v89)
            return v87(v21(v89, true));
        end,
        navigateBack = function()
            return v87(v22(true));
        end,
        closeCentralOverlay = function()
            v87(v26());
        end,
        resetNavigationHistory = function(v90)
            return v87(v25(nil, v90));
        end,
        setCurrentToast = function(v91)
            v87(v28(v91));
        end,
        navigateIntoChat = function(v92)
            return v87(l_NavigateIntoChat_0(v92, false));
        end,
        setPreloading = function(v93)
            v87(v30(v93));
        end
    };
end)(v68);
local function v95(v94)
    v67();
    return v4.createElement(v68, v94);
end;
if not v33() then
    return v68;
else
    return v95;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_MessageBus_0 = require(l_CorePackages_0.Workspace.Packages.MessageBus).MessageBus;
local v6 = require(l_CorePackages_0.Packages.t);
local l_AppOmniRecommendationsRequest_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppOmniRecommendationsRequest;
local v8 = require(l_Modules_0.LuaApp.Thunks.Games.FetchDataOnGameExit);
local v9 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v10 = require(l_Modules_0.Personalization.Flags.GetFFlagLuaAppFullRefreshOmniRecOnGameExit);
local v11 = v2.PureComponent:extend("OnGameLeaveReceiver");
v11.init = function(v12)
    v12.returnedFromGame = function()
        v12.props.fetchDataOnGameExit(v12.props.networking, if not v10() then nil else if not v10() then nil else v12.props.omniRecommendationsRequest);
    end;
    v12.subscriber = l_MessageBus_0.Subscriber.new();
    v12.subscriber:subscribe({
        mid = l_MessageBus_0.getMessageId("Game", "onGameLeave"),
        validateParams = v6.table
    }, function(_)
        v12.returnedFromGame();
    end);
end;
v11.render = function(_)
end;
return v3.connect(nil, function(v15)
    return {
        fetchDataOnGameExit = function(v16, v17)
            v15(v8(v16, if not v10() then nil else v17));
        end
    };
end)((l_RoactServices_0.connect({
    networking = v9,
    omniRecommendationsRequest = if not v10() then nil else l_AppOmniRecommendationsRequest_0
})(v11)));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_MessageBus_0 = require(l_CorePackages_0.Workspace.Packages.MessageBus).MessageBus;
local v6 = require(l_CorePackages_0.Packages.t);
local v7 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v8 = require(l_Modules_0.LuaApp.Thunks.Games.ApiFetchGameIsFavorite);
local v9 = require(l_Modules_0.LuaApp.Thunks.ApiFetchGameFollowingStatus);
local v10 = require(l_Modules_0.LuaApp.Flags.FFlagUseImprovedGameProtocolMessages);
local v11 = v2.PureComponent:extend("ReturnFromGameReceiver");
v11.init = function(v12)
    v12.launchedUniverseId = nil;
    v12.reloadFavoriteAndFollowing = function()
        return v12.props.fetchFavoriteAndFollowingData(v12.props.networking, v12.launchedUniverseId);
    end;
    v12.returnedFromGame = function()
        if v12.props.onGameReturned then
            v12.props.onGameReturned(v12.launchedUniverseId);
        end;
        v12:reloadFavoriteAndFollowing();
    end;
    v12.subscriber = l_MessageBus_0.Subscriber.new();
    v12.subscriber:subscribe({
        mid = l_MessageBus_0.getMessageId("Game", "onGameLeave"),
        validateParams = v6.table
    }, function(v13)
        if v10 then
            v12.launchedUniverseId = nil;
            if v12.props.games then
                for v14, v15 in pairs(v12.props.games) do
                    if v15.placeId == tostring(v13.placeId) then
                        v12.launchedUniverseId = tostring(v14);
                    end;
                end;
            end;
        end;
        if v12.launchedUniverseId then
            v12:returnedFromGame();
            v12.launchedUniverseId = nil;
        end;
    end);
    if not v10 then
        v12.subscriber:subscribe({
            mid = l_MessageBus_0.getMessageId("Game", "launch"),
            validateParams = v6.table
        }, function(v16)
            if v16.placeId then
                v12.launchedUniverseId = nil;
                if v12.props.games then
                    for v17, v18 in pairs(v12.props.games) do
                        if v18.placeId == tostring(v16.placeId) then
                            v12.launchedUniverseId = tostring(v17);
                            return ;
                        end;
                    end;
                end;
                if v12.props.gameDetails then
                    for v19, v20 in pairs(v12.props.gameDetails) do
                        if v20.rootPlaceId == tostring(v16.placeId) then
                            v12.launchedUniverseId = tostring(v19);
                            return ;
                        end;
                    end;
                end;
            end;
        end);
    end;
end;
v11.render = function(_)
end;
return v3.connect(function(v22)
    return {
        games = v22.Games,
        gameDetails = v22.GameDetails
    };
end, function(v23)
    return {
        fetchFavoriteAndFollowingData = function(v24, v25)
            v23(v8(v24, v25));
            v23(v9(v24, v25));
        end
    };
end)((l_RoactServices_0.connect({
    networking = v7
})(v11)));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v4 = require(l_Modules_0.LuaApp.Thunks.ApiFetchEconomyCurrency);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v6 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local v7 = require(l_Modules_0.LuaApp.ArgCheck);
local v8 = v1.Component:extend("RobuxEventReceiver");
v8.init = function(v9)
    v9.isMounted = false;
    local l_RobloxEventReceiver_0 = v9.props.RobloxEventReceiver;
    v9.updateRobux = function()
        local l_localUserId_0 = v9.props.localUserId;
        local l_requestRobuxInfo_0 = v9.props.requestRobuxInfo;
        local l_networking_0 = v9.props.networking;
        v7.isNonEmptyString(l_localUserId_0, "RobuxEventReceiver.updateRobux.localUserId");
        if typeof(l_localUserId_0) == "string" and l_localUserId_0 ~= "" then
            l_requestRobuxInfo_0(l_networking_0, l_localUserId_0);
        end;
    end;
    v9.tokens = {
        l_RobloxEventReceiver_0:observeEvent("AppInput", function(_, v15)
            if v15 == "Focused" then
                delay(3, function()
                    if v9.isMounted then
                        v9.updateRobux();
                        return ;
                    else
                        return ;
                    end;
                end);
            end;
        end)
    };
end;
v8.render = function(v16)
    return v1.oneChild(v16.props[v1.Children]);
end;
v8.didMount = function(v17)
    v17.isMounted = true;
end;
v8.willUnmount = function(v18)
    for _, v20 in pairs(v18.tokens) do
        v20:disconnect();
    end;
    v18.isMounted = false;
end;
return l_RoactServices_0.connect({
    networking = v6
})((v2.connect(function(v21, _)
    return {
        localUserId = v21.LocalUserId
    };
end, function(v23)
    return {
        requestRobuxInfo = function(v24, v25)
            return v23(v4(v24, v25, true));
        end
    };
end)(v8)));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v5 = require(l_Modules_0.LuaApp.Services.RoactLocalization);
local v6 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v7 = require(l_Modules_0.LuaApp.withLocalization);
local v8 = require(l_CorePackages_0.UIBlox);
local l_InteractiveAlert_0 = v8.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v8.App.Button.Enum.ButtonType;
local v11 = require(l_Modules_0.LuaApp.Constants);
local v12 = v1.PureComponent:extend("SurveyPrompt");
local function _(v13, v14)
    if v14 and v14 ~= "" then
        return v14;
    else
        return v13;
    end;
end;
v12.init = function(v16)
    v16.closePrompt = function()
        v16.props.closeAlert();
        v16.props.closeFunc();
    end;
    v16.openSurvey = function()
        v16.props.closeAlert();
        v16.props.continueFunc();
    end;
end;
v12.render = function(v17)
    return v7({
        titleText = "Feature.QualtricsSurveyPrompt.Heading.Title",
        cancelButtonText = "Feature.QualtricsSurveyPrompt.Action.Close",
        confirmButtonText = "CommonUI.Features.Action.Go"
    })(function(v18)
        local l_titleText_0 = v18.titleText;
        local l_titleText_1 = v17.props.titleText;
        local v21 = if not not l_titleText_1 and l_titleText_1 ~= "" then l_titleText_1 else l_titleText_0;
        l_titleText_1 = v17.props.localization:Format("Feature.QualtricsSurveyPrompt.Description.PromptText", v17.props.displayName);
        local l_bodyText_0 = v17.props.bodyText;
        l_titleText_0 = if not not l_bodyText_0 and l_bodyText_0 ~= "" then l_bodyText_0 else l_titleText_1;
        l_bodyText_0 = v18.cancelButtonText;
        local l_cancelButtonText_0 = v17.props.cancelButtonText;
        l_titleText_1 = if not not l_cancelButtonText_0 and l_cancelButtonText_0 ~= "" then l_cancelButtonText_0 else l_bodyText_0;
        l_cancelButtonText_0 = v18.confirmButtonText;
        local l_confirmButtonText_0 = v17.props.confirmButtonText;
        return (v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundColor3 = v11.Color.BLACK,
            BackgroundTransparency = 0.5,
            Active = true,
            Selectable = false
        }, {
            AlertWindow = v1.createElement(l_InteractiveAlert_0, {
                bodyText = l_titleText_0,
                title = v21,
                buttonStackInfo = {
                    buttons = {
                        {
                            buttonType = l_ButtonType_0.Secondary,
                            props = {
                                onActivated = v17.closePrompt,
                                text = l_titleText_1
                            }
                        },
                        {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            props = {
                                onActivated = v17.openSurvey,
                                text = if not not l_confirmButtonText_0 and l_confirmButtonText_0 ~= "" then l_confirmButtonText_0 else l_cancelButtonText_0
                            }
                        }
                    }
                },
                screenSize = v17.props.screenSize
            })
        }));
    end);
end;
return (l_RoactServices_0.connect({
    localization = v5
})((v2.connect(function(v25, _)
    local v27 = v25.Users[v25.LocalUserId];
    return {
        screenSize = v25.ScreenSize,
        displayName = not v27 and "Robloxian" or (v27.displayName or v27.name)
    };
end, function(v28)
    return {
        closeAlert = function()
            return v28(v6());
        end
    };
end)(v12))));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_Players_0 = game:GetService("Players");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_NotificationService_0 = game:GetService("NotificationService");
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.UIBlox);
local v8 = require(l_CorePackages_0.Cryo);
local l_Consumer_0 = v7.Style.Consumer;
local v10 = require(l_Modules_0.LuaApp.Thunks.FetchTheme);
local v11 = require(l_Modules_0.LuaApp.Thunks.Authentication.AppStorageUtilities);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v13 = require(l_Modules_0.LuaApp.Services.RoactNetworking);
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local v15 = require(l_Modules_0.LuaApp.Enum.MemStorageKeys);
local v16 = require(l_Modules_0.LuaApp.Hooks.useAppPolicy);
local v17 = require(l_Modules_0.LuaApp.LuaAppBacktraceReporter);
local v18 = {
    ThemeUpdate = "ThemeUpdate"
};
local v19 = v6.Component:extend("ThemeUpdater");
v19.init = function(v20)
    local l_RobloxEventReceiver_0 = v20.props.RobloxEventReceiver;
    local l_networking_0 = v20.props.networking;
    v20.changeTheme = function(v23)
        if v20.props.themeOverride then
            v23 = v20.props.themeOverride;
        end;
        l_NotificationService_0.SelectedTheme = v23;
        v20.props.appStyle:updateTheme(v23);
        v17:updateSharedAttributes({
            AppTheme = v23
        });
    end;
    v20.updateTheme = function()
        local function v25(v24)
            l_MemStorageService_0:Fire(v15.ThemeUpdate, v24);
            v20.changeTheme(v24);
            v11.setAuthenticatedTheme(v24);
            v11.flush();
        end;
        if not v20.props.themeOverride then
            return v10(l_networking_0, l_Players_0.LocalPlayer.UserId):andThen(function(v26)
                l_MemStorageService_0:Fire(v15.ThemeUpdate, v26);
                v20.changeTheme(v26);
                v11.setAuthenticatedTheme(v26);
                v11.flush();
            end);
        else
            return v25(v20.props.themeOverride);
        end;
    end;
    v20.tokens = {
        l_RobloxEventReceiver_0:observeEvent("UserThemeTypeChangeNotification", function(v27, v28)
            if (v27.Type or v28) == v18.ThemeUpdate then
                v20.updateTheme();
            end;
        end),
        l_MemStorageService_0:Bind(v15.ThemeUpdate, function(v29)
            v20.changeTheme(v29);
        end)
    };
end;
v19.render = function(_)
end;
v19.willUnmount = function(v31)
    for _, v33 in pairs(v31.tokens) do
        v33:disconnect();
    end;
end;
return l_RoactServices_0.connect({
    networking = v13,
    guiService = l_AppGuiService_0
})(function(v34)
    local v35 = nil;
    v35 = v16(function(v36)
        return v36.getForceTheme();
    end);
    return v6.createElement(l_Consumer_0, {
        render = function(v37)
            return v6.createElement(v19, v8.Dictionary.join(v34, {
                appStyle = v37,
                themeOverride = v35
            }));
        end
    });
end);