local l_TextService_0 = game:GetService("TextService");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.UIBlox);
local v5 = require(l_CorePackages_0.Packages.t);
local l_Parent_0 = script.Parent.Parent;
local v7 = require(l_Parent_0.Resources.Assets);
local v8 = require(require(l_Parent_0.Dependencies).ThemedTextLabel);
local v9 = require(l_Parent_0.Components.FillCircle);
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v4.Core.Style.withStyle;
local l_CursorKind_0 = v4.App.SelectionImage.CursorKind;
local l_withSelectionCursorProvider_0 = v4.App.SelectionImage.withSelectionCursorProvider;
local v14 = v3.PureComponent:extend("TextEntryField");
v14.validateProps = v5.strictInterface({
    enabled = v5.boolean,
    text = v5.string,
    textChanged = v5.callback,
    maxTextLength = v5.integer,
    autoFocusOnEnabled = v5.boolean,
    PlaceholderText = v5.string,
    LayoutOrder = v5.optional(v5.integer),
    Size = v5.UDim2,
    Position = v5.optional(v5.UDim2),
    textBoxRef = v5.optional(v5.table)
});
v14.init = function(v15)
    v15.textBoxRef = v15.props.textBoxRef or v3.createRef();
    v15.state = {
        textBoxWidth = 100,
        scrollingFrameHeight = 100,
        canvasPosition = 0,
        cursorPosition = 0
    };
end;
v14.calculateNeedsRescroll = function(v16, v17, v18)
    v16:setState(function(v19, v20)
        if v19.cursorPosition == -1 then
            return nil;
        else
            local v21 = v20.text:sub(1, v19.cursorPosition - 1);
            local v22 = v18.RelativeSize * v17.Font.BaseSize;
            local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize(v21, v22, v18.Font, (Vector2.new(v20.textBoxWidth, 10000)));
            if v19.scrollingFrameHeight + v19.canvasPosition < l_l_TextService_0_TextSize_0.Y then
                return {
                    canvasPosition = l_l_TextService_0_TextSize_0.Y - v19.scrollingFrameHeight
                };
            elseif l_l_TextService_0_TextSize_0.Y - v22 < v19.canvasPosition then
                return {
                    canvasPosition = l_l_TextService_0_TextSize_0.Y - v22
                };
            else
                return nil;
            end;
        end;
    end);
end;
v14.renderWithSelectionCursor = function(v24, v25)
    return l_withStyle_0(function(v26)
        local l_TextDefault_0 = v26.Theme.TextDefault;
        local l_Body_0 = v26.Font.Body;
        return v3.createElement(l_ImageSetLabel_0, {
            BackgroundTransparency = 1,
            Image = v7.Images.RoundedRect.Image,
            ImageColor3 = v26.Theme.BackgroundMuted.Color,
            ImageTransparency = v26.Theme.BackgroundMuted.Transparency,
            Position = v24.props.Position,
            ScaleType = v7.Images.RoundedRect.ScaleType,
            Size = v24.props.Size,
            SliceCenter = v7.Images.RoundedRect.SliceCenter,
            LayoutOrder = v24.props.LayoutOrder
        }, {
            ScrollingFrame = v3.createElement("ScrollingFrame", {
                Size = UDim2.new(1, -24, 1, -14),
                AnchorPoint = Vector2.new(0.5, 0),
                Position = UDim2.new(0.5, 0, 0, 7),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                CanvasSize = UDim2.new(1, -24, 0, l_TextService_0:GetTextSize(v24.props.text, l_Body_0.RelativeSize * v26.Font.BaseSize, l_Body_0.Font, Vector2.new(v24.state.textBoxWidth, 10000)).Y),
                ScrollBarThickness = 8,
                VerticalScrollBarInset = Enum.ScrollBarInset.Always,
                CanvasPosition = Vector2.new(0, v24.state.canvasPosition),
                Selectable = false,
                [v3.Change.CanvasPosition] = function(v29)
                    v24:setState({
                        canvasPosition = v29.CanvasPosition.Y
                    });
                end,
                [v3.Change.AbsoluteSize] = function(v30)
                    v24:setState({
                        scrollingFrameHeight = v30.AbsoluteSize.Y
                    }, function()
                        v24:calculateNeedsRescroll(v26, l_Body_0);
                    end);
                end
            }, {
                TextBox = v3.createElement("TextBox", {
                    Size = UDim2.new(1, -2, 1, 0),
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Position = UDim2.new(0.5, 0, 0.5, 0),
                    Text = v24.props.text,
                    ClearTextOnFocus = false,
                    TextEditable = v24.props.enabled,
                    BackgroundTransparency = 1,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextYAlignment = Enum.TextYAlignment.Top,
                    TextColor3 = l_TextDefault_0.Color,
                    TextTransparency = l_TextDefault_0.Transparency,
                    Font = l_Body_0.Font,
                    TextSize = l_Body_0.RelativeSize * v26.Font.BaseSize,
                    TextWrapped = true,
                    MultiLine = true,
                    SelectionImageObject = v25(l_CursorKind_0.InputFields),
                    [v3.Ref] = v24.textBoxRef,
                    [v3.Change.Text] = function(v31)
                        local l_status_0, l_result_0 = pcall(function()
                            return utf8.len(utf8.nfcnormalize(v31.Text));
                        end);
                        if not l_status_0 or v24.props.maxTextLength < l_result_0 then
                            v31.Text = v24.props.text;
                            return ;
                        else
                            v24.props.textChanged(v31.Text);
                            v24:setState({
                                cursorPosition = v31.CursorPosition
                            }, function()
                                v24:calculateNeedsRescroll(v26, l_Body_0);
                            end);
                            return ;
                        end;
                    end,
                    [v3.Change.AbsoluteSize] = function(v34)
                        v24:setState({
                            textBoxWidth = v34.AbsoluteSize.X
                        }, function()
                            v24:calculateNeedsRescroll(v26, l_Body_0);
                        end);
                    end,
                    [v3.Change.CursorPosition] = function(v35)
                        v24:setState({
                            cursorPosition = v35.CursorPosition
                        }, function()
                            v24:calculateNeedsRescroll(v26, l_Body_0);
                        end);
                    end
                }, {
                    PlaceholderText = v3.createElement(v8, {
                        themeKey = "TextDefault",
                        fontKey = "Body",
                        Text = v24.props.PlaceholderText,
                        Size = UDim2.new(1, 0, 1, 0),
                        Position = UDim2.new(0, 0, 0, 0),
                        TextTransparency = 0.5,
                        TextWrapped = true,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Top,
                        Visible = v24.props.text == ""
                    })
                })
            }),
            TextAmmountIndicator = v3.createElement("Frame", {
                BackgroundTransparency = 1,
                Position = UDim2.new(1, -10, 1, -16),
                AnchorPoint = Vector2.new(1, 0.5),
                Size = UDim2.new(0, 20, 0, 20),
                ZIndex = 1
            }, {
                v3.createElement(v9, {
                    Position = UDim2.new(0.5, 0, 0.5, 0),
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    fillFraction = utf8.len(utf8.nfcnormalize(v24.props.text)) / (v24.props.maxTextLength - 10),
                    largerCircleFraction = (v24.props.maxTextLength - 20) / v24.props.maxTextLength,
                    popCircleFraction = 1,
                    shakeCircleFraction = v24.props.maxTextLength / (v24.props.maxTextLength - 10),
                    BackgroundColor = v26.Theme.BackgroundMuted.Color
                })
            })
        });
    end);
end;
v14.render = function(v36)
    return l_withSelectionCursorProvider_0(function(v37)
        return v36:renderWithSelectionCursor(v37);
    end);
end;
v14.didUpdate = function(v38, v39, _)
    if v38.props.enabled or not v39.enabled then
        if not (((not v38.props.enabled or v39.enabled) or not v38.props.autoFocusOnEnabled) or not v38.textBoxRef.current) then
            v38.textBoxRef.current:CaptureFocus();
        end;
    elseif not (not v38.textBoxRef.current or not v38.textBoxRef.current:IsFocused()) then
        v38.textBoxRef.current:ReleaseFocus();
        return ;
    end;
end;
return v3.forwardRef(function(v41, v42)
    return v3.createElement(v14, v2.Dictionary.join(v41, {
        textBoxRef = v42
    }));
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local v3 = require(l_CorePackages_0.UIBlox);
local v4 = require(l_CorePackages_0.Packages.t);
local l_Toast_0 = v3.App.Dialog.Toast;
local l_Images_0 = v3.App.ImageSet.Images;
local v7 = v1.PureComponent:extend("Toast");
v7.validateProps = v4.strictInterface({
    toastTitle = v4.optional(v4.string),
    toastSubtitle = v4.optional(v4.string)
});
v7.render = function(v8)
    if v8.props.toastTitle then
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.fromScale(1, 1),
            ZIndex = 100
        }, {
            Toast = v1.createElement(l_Toast_0, {
                duration = 3,
                toastContent = {
                    iconImage = l_Images_0["icons/status/success"],
                    toastTitle = v8.props.toastTitle,
                    toastSubtitle = v8.props.toastSubtitle
                }
            })
        });
    else
        return nil;
    end;
end;
return v2.UNSTABLE_connect2(function(v9, _)
    return {
        toastTitle = v9.common.toastTitle,
        toastSubtitle = v9.common.toastSubtitle
    };
end, nil)(v7);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_RobloxGui_0.Modules.Common.renderWithCoreScriptsStyleProvider);
local l_Parent_0 = script.Parent.Parent;
local v7 = require(l_Parent_0.Actions.SetScreenSize);
local v8 = require(l_Parent_0.Components.ReportMenu);
local v9 = require(l_Parent_0.Components.ReportDialog);
local v10 = require(l_Parent_0.Components.ReportCategoryDialog);
local v11 = require(l_Parent_0.Components.ReportSentDialog);
local v12 = require(l_Parent_0.Components.Toast);
local v13 = require(l_RobloxGui_0.Modules.VoiceChat.VoiceStateContext);
local v14 = v2.PureComponent:extend("TrustAndSafetyApp");
v14.validateProps = v4.strictInterface({
    setScreenSize = v4.callback,
    visible = v4.boolean
});
v14.init = function(_)
end;
v14.render = function(v16)
    return v5({
        VoiceStateContextProvider = v2.createElement(v13.Provider, {}, {
            Gui = v2.createElement("ScreenGui", {
                AutoLocalize = false,
                DisplayOrder = 8,
                IgnoreGuiInset = true,
                OnTopOfCoreBlur = true,
                ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
                [v2.Change.AbsoluteSize] = v16.props.setScreenSize
            }, {
                Content = v2.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 1, 0),
                    Visible = v16.props.visible
                }, {
                    ReportCategoryDialog = v2.createElement(v10),
                    ReportMenu = v2.createElement(v8),
                    ReportDialog = v2.createElement(v9),
                    ReportSentDialog = v2.createElement(v11),
                    Toast = v2.createElement(v12)
                })
            })
        })
    });
end;
return v3.UNSTABLE_connect2(function(v17, _)
    return {
        visible = v17.displayOptions.visible
    };
end, function(v19)
    return {
        setScreenSize = function(v20)
            v19(v7(v20.AbsoluteSize));
        end
    };
end)(v14);


local l_UserInputService_0 = game:GetService("UserInputService");
local v5 = {
    getInstance = function(v1)
        if not v1._initialized then
            v1:initialize();
            v1._initialized = true;
        end;
        return v1;
    end,
    initialize = function(v2)
        v2._isKeyboardJustOff = false;
        l_UserInputService_0:GetPropertyChangedSignal("OnScreenKeyboardVisible"):Connect(function()
            if not l_UserInputService_0.OnScreenKeyboardVisible then
                v2._isKeyboardJustOff = true;
            end;
        end);
        l_UserInputService_0.InputEnded:Connect(function(_)
            if v2._isKeyboardJustOff then
                v2._isKeyboardJustOff = false;
            end;
        end);
    end,
    isKeyboardJustOff = function(v4)
        return v4._isKeyboardJustOff;
    end
};
return {
    getInstance = function()
        return v5:getInstance();
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_InGameMenu_0 = script.Parent.Parent.InGameMenu;
return {
    BarOnTopScrollingFrame = l_InGameMenu_0.Components.BarOnTopScrollingFrame,
    Divider = l_InGameMenu_0.Components.Divider,
    FocusHandler = l_InGameMenu_0.Components.Connection.FocusHandler,
    ThemedTextLabel = l_InGameMenu_0.Components.ThemedTextLabel,
    PlayerCell = l_InGameMenu_0.Components.PlayerCell,
    GameIcon = l_InGameMenu_0.Components.GameIcon,
    PlayerSearchPredicate = l_InGameMenu_0.Utility.PlayerSearchPredicate,
    SearchBar = l_InGameMenu_0.Components.SearchBar,
    Localization = if not game:DefineFastFlag("SwitchTnSTranslationsPackage", false) then require(l_InGameMenu_0.Localization.Localization) else require(l_CorePackages_0.Workspace.Packages.InExperienceLocales).Localization,
    LocalizationProvider = l_InGameMenu_0.Localization.LocalizationProvider,
    withLocalization = l_InGameMenu_0.Localization.withLocalization,
    UIBloxInGameConfig = script.Parent.Parent.UIBloxInGameConfig,
    playerInterface = script.Parent.Parent.Interfaces.playerInterface
};


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


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


local l_Players_0 = game:GetService("Players");
local v1 = require(script.Parent.IXPVoiceAbuseReportReportAbuseMenu);
game:DefineFastFlag("EnableNewVoiceReportFlows", false);
game:DefineFastString("NewInGameMenuForcedUserIds", "");
return function()
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    while not l_LocalPlayer_0 do
        l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
        l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    end;
    for v3 in game:GetFastString("NewInGameMenuForcedUserIds"):gmatch("%d+") do
        if l_LocalPlayer_0 and tonumber(v3) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    return game:GetFastFlag("EnableNewVoiceReportFlows") and v1.enabled;
end;


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


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


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


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


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


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


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


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


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


game:DefineFastInt("IGMv1ARFlowScreenshotDelayFrames", 0);
return function()
    return game:GetFastInt("IGMv1ARFlowScreenshotDelayFrames");
end;


game:DefineFastInt("RAMaxAnnotationCount", 25);
return function()
    return game:GetFastInt("RAMaxAnnotationCount");
end;


local v0 = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.Common.IXPServiceWrapper);
local l_Players_0 = game:GetService("Players");
local v2 = {
    enabled = true,
    inSortingExperiment = false,
    inEntryExperiment = false
};
if game:DefineFastFlag("EnableReportAbuseMenuLayerOnV3", false) then
    local v3 = game:DefineFastString("ReportAbuseMenuLayerOnV3Layer", "Social.VoiceAbuseReport.ReportAbuseMenu.V1");
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    local v5 = 0;
    while not l_LocalPlayer_0 do
        l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
        l_LocalPlayer_0 = l_Players_0.LocalPlayer;
        v5 = not not l_LocalPlayer_0 and l_LocalPlayer_0.UserId or 0;
    end;
    v0:InitializeAsync(v5, v3);
    local l_v0_LayerData_0 = v0:GetLayerData(v3);
    if not l_v0_LayerData_0 then
        v2.enabled = false;
    else
        v2.inSortingExperiment = l_v0_LayerData_0.VoiceAbuseReportProximitySort;
        v2.inEntryExperiment = l_v0_LayerData_0.VoiceAbuseReportSmartEntry;
        v2.enabled = not l_v0_LayerData_0.VoiceAbuseReportDisabled;
        return v2;
    end;
end;
return v2;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({
    toastTitle = nil,
    toastSubtitle = nil
}, {
    [require(script.Parent.Parent.Actions.ShowToast).name] = function(v2, v3)
        return v1.Dictionary.join(v2, {
            toastTitle = v3.toastTitle,
            toastSubtitle = v3.toastSubtitle
        });
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Rodux);
local v2 = require(l_CorePackages_0.Cryo);
local l_Parent_0 = script.Parent.Parent;
return v1.createReducer({
    inputType = nil,
    screenSize = Vector2.new(0, 0),
    visible = true
}, {
    [require(l_Parent_0.Actions.SetScreenSize).name] = function(v4, v5)
        return v2.Dictionary.join(v4, {
            screenSize = v5.screenSize
        });
    end,
    [require(l_Parent_0.Actions.Hide).name] = function(v6)
        return v2.Dictionary.join(v6, {
            visible = false
        });
    end,
    [require(l_Parent_0.Actions.Show).name] = function(v7)
        return v2.Dictionary.join(v7, {
            visible = true
        });
    end
});


return (require(game:GetService("CorePackages").Rodux).combineReducers({
    common = require(script.common),
    displayOptions = require(script.displayOptions),
    placeInfo = require(script.placeInfo),
    report = require(script.report)
}));


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({
    name = "",
    description = ""
}, {
    [require(script.Parent.Parent.Actions.SetPlaceInfo).name] = function(_, v3)
        return {
            name = v3.name,
            description = v3.description
        };
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Cryo);
local v2 = require(l_CorePackages_0.Rodux);
local l_Parent_0 = script.Parent.Parent;
local v4 = require(l_Parent_0.Actions.OpenReportMenu);
local v5 = require(l_Parent_0.Actions.CloseReportMenu);
local _ = require(l_Parent_0.Actions.OpenReportDialog);
local _ = require(l_Parent_0.Actions.OpenCategoryMenu);
local v8 = require(l_Parent_0.Actions.SelectReportCategory);
local v9 = require(l_Parent_0.Actions.OpenReportSentDialog);
local _ = require(l_Parent_0.Actions.CloseReportSentDialog);
local v11 = require(l_Parent_0.Actions.SelectReportListing);
local v12 = require(l_Parent_0.Actions.SetVoiceReportingFlow);
local v13 = require(l_Parent_0.Actions.SetIdentifiedAvatars);
local v14 = require(l_Parent_0.Actions.SetSelectedAvatars);
local v15 = require(l_Parent_0.Actions.BeginReportFlow);
local v16 = require(l_Parent_0.Actions.EndReportFlow);
local v17 = require(l_Parent_0.Actions.ScreenshotAnnotated);
local v18 = require(l_Parent_0.Actions.NavigateBack);
local v19 = require(l_Parent_0.Resources.Constants);
local v20 = require(l_Parent_0.Flags.GetFFlagReportAnythingScreenshot);
return v2.createReducer({
    currentPage = v19.Page.None,
    history = {},
    voiceReportingFlowEnabled = true,
    reportType = v19.ReportType.Any,
    beginningReportType = v19.ReportType.Any,
    reportCategory = v19.Category.None,
    targetPlayer = nil,
    beginningTimestamp = 0,
    sortedUserIds = {},
    screenshotAnnotationPoints = {},
    identifiedAvatars = {},
    selectedAvatars = {}
}, {
    [v16.name] = function(v21, _)
        return v1.Dictionary.join(v21, {
            history = {},
            currentPage = v19.Page.None,
            targetPlayer = v1.None,
            reportType = v19.ReportType.Any,
            identifiedAvatars = {},
            selectedAvatars = {},
            screenshotAnnotationPoints = {}
        });
    end,
    [v15.name] = function(v23, v24)
        local v25 = {
            reportCategory = v19.Category.None,
            beginningTimestamp = workspace:GetServerTimeNow(),
            sortedUserIds = {},
            history = {
                v19.Page.None
            }
        };
        if v24.reportType == v19.ReportType.Place then
            return v1.Dictionary.join(v23, v25, {
                reportType = v24.reportType,
                beginningReportType = v24.reportType,
                currentPage = v19.Page.ReportForm,
                targetPlayer = v1.None
            });
        elseif v24.reportType == v19.ReportType.Player then
            return v1.Dictionary.join(v23, v25, {
                reportType = v24.reportType,
                beginningReportType = v24.reportType,
                targetPlayer = v24.targetPlayer,
                currentPage = if not v23.voiceReportingFlowEnabled then v19.Page.ReportForm else v19.Page.Category
            });
        else
            return v1.Dictionary.join(v23, v25, {
                reportType = v19.ReportType.Any,
                beginningReportType = v19.ReportType.Any,
                targetPlayer = v1.None,
                currentPage = if not v23.voiceReportingFlowEnabled then v19.Page.Listing else v19.Page.Category
            });
        end;
    end,
    [v18.name] = function(v26, _)
        return v1.Dictionary.join(v26, {
            history = v1.List.removeIndex(v26.history, #v26.history),
            currentPage = v26.history[#v26.history] or v26.currentPage
        });
    end,
    [v8.name] = function(v28, v29)
        local v30 = v29.reportCategory == v19.Category.Experience;
        local v31 = v28.beginningReportType == v19.ReportType.Player;
        local l_Listing_0 = v19.Page.Listing;
        local l_reportType_0 = v28.reportType;
        if not v20() then
            if v30 or v31 then
                l_Listing_0 = v19.Page.ReportForm;
                if v30 then
                    l_reportType_0 = v19.ReportType.Place;
                end;
            end;
        elseif not v30 then
            if v31 then
                l_Listing_0 = v19.Page.ReportForm;
            end;
        else
            l_Listing_0 = v19.Page.ScreenshotDialog;
            l_reportType_0 = v19.ReportType.Place;
        end;
        return v1.Dictionary.join(v28, {
            history = v1.List.join(v28.history, {
                v28.currentPage
            }),
            currentPage = l_Listing_0,
            reportType = l_reportType_0,
            reportCategory = v29.reportCategory
        });
    end,
    [v11.name] = function(v34, v35)
        return v1.Dictionary.join(v34, {
            sortedUserIds = v1.List.join(v35.sortedUserIds or {}, {}),
            history = v1.List.join(v34.history, {
                v34.currentPage
            }),
            currentPage = v19.Page.ReportForm,
            reportType = v35.reportType,
            targetPlayer = v35.targetPlayer or v1.None
        });
    end,
    [v17.name] = function(v36, v37)
        return v1.Dictionary.join(v36, {
            history = v1.List.join(v36.history, {
                v36.currentPage
            }),
            currentPage = v19.Page.ReportForm,
            screenshotAnnotationPoints = v37.annotationPoints
        });
    end,
    [v4.name] = function(v38, _)
        return v1.Dictionary.join(v38, {
            isReportMenuOpen = true
        });
    end,
    [v5.name] = function(v40, _)
        return v1.Dictionary.join(v40, {
            isReportMenuOpen = false
        });
    end,
    [v9.name] = function(v42, v43)
        return v1.Dictionary.join(v42, {
            currentPage = v19.Page.ReportSent,
            reportType = v43.reportType,
            targetPlayer = v43.targetPlayer or v1.None
        });
    end,
    [v12.name] = function(v44, v45)
        return v1.Dictionary.join(v44, {
            voiceReportingFlowEnabled = v45.enable
        });
    end,
    [v13.name] = function(v46, v47)
        return v1.Dictionary.join(v46, {
            identifiedAvatars = v47.identifiedAvatars,
            screenshotAnnotationPoints = {}
        });
    end,
    [v14.name] = function(v48, v49)
        return v1.Dictionary.join(v48, {
            selectedAvatars = v49.selectedAvatars
        });
    end
});


local v0 = require(game:GetService("CorePackages").UIBlox);
local l_Images_0 = v0.App.ImageSet.Images;
local l_getIconSize_0 = v0.App.ImageSet.getIconSize;
local l_IconSize_0 = v0.App.ImageSet.Enum.IconSize;
return {
    Images = {
        MuteIcon = {
            Size = UDim2.fromOffset(l_getIconSize_0(l_IconSize_0.Medium), l_getIconSize_0(l_IconSize_0.Medium)),
            Image = "rbxasset://textures/ui/VoiceChat/SpeakerLight/Unmuted0.png"
        },
        BlockIcon = {
            Size = UDim2.fromOffset(l_getIconSize_0(l_IconSize_0.Medium), l_getIconSize_0(l_IconSize_0.Medium)),
            Image = l_Images_0["icons/actions/block"]
        },
        VoiceChatIcon = {
            Size = UDim2.fromOffset(l_getIconSize_0(l_IconSize_0.Medium), l_getIconSize_0(l_IconSize_0.Medium)),
            Image = "rbxasset://textures/ui/VoiceChat/SpeakerLight/Unmuted0.png"
        },
        TextChatIcon = {
            Size = UDim2.fromOffset(l_getIconSize_0(l_IconSize_0.Medium), l_getIconSize_0(l_IconSize_0.Medium)),
            Image = "rbxasset://textures/ui/TopBar/chatOff.png"
        },
        OtherIcon = {
            Size = UDim2.fromOffset(l_getIconSize_0(l_IconSize_0.Medium), l_getIconSize_0(l_IconSize_0.Medium)),
            Image = l_Images_0["icons/menu/help"]
        },
        RoundedRect = {
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = Rect.new(8, 8, 9, 9),
            Image = l_Images_0["component_assets/circle_17"]
        }
    }
};


return {
    EnableCategoryListing = true,
    InputType = {
        MouseAndKeyboard = "MouseAndKeyboard",
        Touch = "Touch",
        Gamepad = "Gamepad"
    },
    ReportType = {
        Any = "Any",
        Place = "Place",
        Player = "Player"
    },
    Category = {
        None = "",
        Voice = "Voice",
        Text = "Text",
        Other = "Other",
        Experience = "Experience"
    },
    Page = {
        None = "",
        Category = "Category",
        Listing = "Listing",
        ReportForm = "ReportForm",
        ReportSent = "ReportSent",
        ScreenshotDialog = "ScreenshotDialog"
    },
    Analytics = {
        ReportSubmittedName = "ingame_menu_report_submitted",
        ReportSourceInGame = "ingame",
        ReportFlowOpened = "report_flow_opened",
        ReportType = "ReportType",
        ReportTypeUser = "user",
        ReportTypeGame = "game",
        ReportFlowAbandoned = "ingame_menu_report_abandoned",
        ReportFlowBack = "ingame_menu_report_navigate_back",
        ReportFlowAdvance = "ingame_menu_report_advance_to_form"
    },
    Session = {
        StructuralIdentifier = {
            Level1 = "level1",
            AbuseReport = "AbuseReport"
        },
        Metadata = {
            EntryPoint = "entryPoint",
            DeleteOnGameLeave = "_deleteOnGameLeave"
        }
    }
};


local v0 = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.BlockingUtility);
local v1 = require(script.Parent.Parent.Actions.ShowToast);
return function(v2, v3, v4)
    return function(v5)
        coroutine.wrap(function()
            if v0:BlockPlayerAsync(v2) then
                v5:dispatch(v1(v3, v4));
            end;
        end)();
    end;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_GetGameNameAndDescription_0 = require(l_CorePackages_0.Workspace.Packages.GameDetailRodux).GetGameNameAndDescription;
local v5 = require(l_RobloxGui_0.Modules.Common.httpRequest)(l_HttpRbxApiService_0);
local v6 = require(script.Parent.Parent.Actions.SetPlaceInfo);
return function(v7)
    return function(v8)
        if v7 == 0 then
            return ;
        else
            l_GetGameNameAndDescription_0(v5, v7):andThen(function(v9)
                v8:dispatch(v6(v9.Name, v9.Description));
            end):catch(function()
                warn("Unable to fetch place info for TrustAndSafety.");
            end);
            return ;
        end;
    end;
end;


local l_AvatarIdentification_0 = require(game:GetService("CorePackages").Workspace.Packages.TnSAvatarIdentification).AvatarIdentification;
local v1 = require(script.Parent.Parent.Actions.SetSelectedAvatars);
local l_getAvatarsForPoint_0 = l_AvatarIdentification_0.getAvatarsForPoint;
return function(v3)
    return function(v4)
        coroutine.wrap(function()
            local l_identifiedAvatars_0 = v4:getState().report.identifiedAvatars;
            local v6 = {};
            for _, v8 in ipairs(v3) do
                for v9, v10 in pairs((l_getAvatarsForPoint_0(l_identifiedAvatars_0, v8))) do
                    v6[v9] = v10;
                    print("Selected avatar", v9, v10);
                end;
            end;
            v4:dispatch(v1(v6));
        end)();
    end;
end;


local _ = game:GetService("CoreGui");
local v1 = nil;
local l_AvatarIdentification_0 = require(game:GetService("CorePackages").Workspace.Packages.TnSAvatarIdentification).AvatarIdentification;
local l_RunService_0 = game:GetService("RunService");
local l_Parent_0 = script.Parent.Parent;
local v5 = require(l_Parent_0.Actions.Hide);
local v6 = require(l_Parent_0.Actions.Show);
local v7 = require(l_Parent_0.Actions.SetIdentifiedAvatars);
local v8 = require(l_Parent_0.Utility.ScreenshotHookManager);
local l_getVisibleAvatars_0 = l_AvatarIdentification_0.getVisibleAvatars;
if game:GetEngineFeature("ReportAnythingScreenshot") then
    v1 = game:GetService("SafetyService");
end;
return function()
    return function(v10)
        if v1 == nil then
            return ;
        else
            coroutine.wrap(function()
                v8.doPreScreenshot();
                v10:dispatch(v5());
                local _ = v1:TakeScreenshot({
                    registerContent = 1
                });
                local v12, _ = l_getVisibleAvatars_0();
                for _ = 1, 61 do
                    l_RunService_0.RenderStepped:Wait();
                end;
                v10:dispatch(v6());
                v8.doPostScreenshot();
                v10:dispatch(v7(v12));
            end)();
            return ;
        end;
    end;
end;


local _ = game:GetService("Players");
local _ = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.VoiceChat.ReportAbuseLogic);
local l_Parent_0 = script.Parent.Parent;
local v3 = require(l_Parent_0.Resources.Constants);
local v4 = require(l_Parent_0.Actions.ShowToast);
local v5 = require(l_Parent_0.Actions.OpenReportSentDialog);
local v6 = require(l_Parent_0.Actions.EndReportFlow);
local v7 = require(l_Parent_0.Utility.ReportManager);
return function(v8, v9, v10, v11, v12, v13, v14)
    return function(v15)
        local v16 = v15:getState();
        if v8 == v3.ReportType.Player then
            v7.submitUserAbuseReport({
                reportCategory = v12,
                abusingPlayer = v9,
                reason = v10,
                comment = v11,
                beginningTimestamp = v16.report.beginningTimestamp,
                sortedUserIds = v16.report.sortedUserIds
            }, function()
                v15:dispatch(v5(v8, v9));
            end);
            return ;
        else
            if v8 == v3.ReportType.Place then
                v7.submitPlaceAbuseReport({
                    placeId = game.PlaceId,
                    placeName = v16.placeInfo.name,
                    placeDescription = v16.placeInfo.description,
                    reason = v10,
                    comment = v11
                }, function()
                    v15:dispatch(v4(v13, v14));
                end);
                v15:dispatch(v6());
            end;
            return ;
        end;
    end;
end;


local v0 = require(game:GetService("CorePackages").PolicyProvider);
local v1 = v0.withGetPolicyImplementation((v0.GetPolicyImplementations.MemStorageService("app-policy")));
v1.Mapper = function(_)
    return {};
end;
return v1;


local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local v1 = require(l_RobloxGui_0.Modules.Settings.Flags.GetFFlagReportAnythingAnnotationIXP);
local v2 = require(l_RobloxGui_0.Modules.Settings.Flags.GetFStringReportAnythingAnnotationIXPLayerName);
local v3 = require(script.Parent.Flags.GetFFlagForceReportAnythingAnnotationEnabled);
local v4 = require(l_RobloxGui_0.Modules.Common.IXPServiceWrapper);
local v5 = require(l_RobloxGui_0.Modules.Logger):new(script.Name);
local v6 = {};
v6.__index = v6;
v6.new = function(v7)
    local v8 = {
        _ixpServiceWrapper = v7 or v4,
        _initialized = false,
        _ixpInitialized = false,
        _optionalScreenshotEnabled = false,
        _reportAnythingExperienceEnabled = false,
        _reportAnythingAvatarEnabled = false,
        _callbacks = {}
    };
    setmetatable(v8, v6);
    return v8;
end;
v6.getReportAnythingExperienceEnabled = function(v9)
    if not v3() then
        return v9._reportAnythingExperienceEnabled or v9._optionalScreenshotEnabled;
    else
        return true;
    end;
end;
v6.getReportAnythingAvatarEnabled = function(v10)
    if not v3() then
        return v10._reportAnythingAvatarEnabled or v10._optionalScreenshotEnabled;
    else
        return true;
    end;
end;
v6.waitForInitialization = function(v11, v12)
    if not v11._ixpInitialized then
        table.insert(v11._callbacks, v12);
        return ;
    else
        v12();
        return ;
    end;
end;
v6.initialize = function(v13)
    if not v13._initialized then
        v13._initialized = true;
        local function v16()
            for _, v15 in ipairs(v13._callbacks) do
                v15();
            end;
            v13._callbacks = {};
        end;
        if v1() then
            task.spawn(function()
                v13._ixpServiceWrapper:WaitForInitialization();
                local l_LayerData_0 = v13._ixpServiceWrapper:GetLayerData(v2());
                if l_LayerData_0 then
                    v13._optionalScreenshotEnabled = l_LayerData_0.OptionalScreenshotEnabled or false;
                    v13._reportAnythingExperienceEnabled = l_LayerData_0.OptionalScreenshotExperience or false;
                    v13._reportAnythingAvatarEnabled = l_LayerData_0.OptionalScreenshotAvatar or false;
                end;
                v5:debug("RA Optional Screenshot enabled? Both: {}, Exp: {}, Avatar: {}. Invoking {} callbacks.", v13._optionalScreenshotEnabled, v13._reportAnythingExperienceEnabled, v13._reportAnythingAvatarEnabled, #v13._callbacks);
                v13._ixpInitialized = true;
                v16();
            end);
            return ;
        else
            v13._ixpInitialized = true;
            v16();
            return ;
        end;
    else
        return ;
    end;
end;
v6.default = v6.new();
return v6;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Workspace.Packages.TnSAvatarIdentification);
local v2 = require(l_CorePackages_0.Workspace.Packages.TnSAdIdentification);
local l_HttpService_0 = game:GetService("HttpService");
local l_getAvatarsForPoint_0 = v1.AvatarIdentification.getAvatarsForPoint;
local l_getAvatarsForRegion_0 = v1.AvatarIdentification.getAvatarsForRegion;
local l_getAdsForPoint_0 = v2.AdIdentification.getAdsForPoint;
local l_GetFFlagReportAnythingEnableAdReport_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagReportAnythingEnableAdReport;
local l_GetFFlagGetHumanoidDescription_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagGetHumanoidDescription;
local l_GetFFlagRAEnableCircleRegion_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagRAEnableCircleRegion;
local l_GetFFlagReportAnythingAbuseVectorRenameEnabled_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagReportAnythingAbuseVectorRenameEnabled;
local l_GetFFlagReportAnythingIncludeDiscardStatsInReport_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagReportAnythingIncludeDiscardStatsInReport;
local l_getHumanoidDescription_0 = require(script.Parent.GetHumanoidDescription).getHumanoidDescription;
local v13 = {
    annotationCircleRadius = 0,
    screenSizeWidth = 0,
    screenSizeHeight = 0,
    screenshotId = "",
    identifiedAvatars = {},
    avatarIDStats = nil,
    identifiedAds = {},
    adIDStats = nil,
    screenshotContentId = "",
    annotationPoints = {},
    annotationOptionSeen = false,
    annotationPageSeen = false,
    selectedAbusers = {},
    selectedAds = {}
};
local v14 = {
    Variant = {
        CS = "ra/cs",
        Sampling = "ra/sampling",
        E1 = "ra/e1",
        E2 = "ra/e2",
        E3 = "ra/e3",
        Unknown = "ra/unknown"
    }
};
local function v19(v15)
    local v16 = {};
    for _, v18 in ipairs(v15) do
        v16[#v16 + 1] = {
            v18.X,
            v18.Y
        };
    end;
    return v16;
end;
local function v24(v20)
    local v21 = {};
    for _, v23 in pairs(v20) do
        v21[#v21 + 1] = {
            assetId = v23.assetId,
            distance = v23.distance,
            boundingBox = {
                minX = v23.boundingBox.min.X,
                minY = v23.boundingBox.min.Y,
                maxX = v23.boundingBox.max.X,
                maxY = v23.boundingBox.max.Y
            },
            adUnitName = v23.adUnitName,
            encryptedAdTrackingData = v23.encryptedAdTrackingData,
            encryptionMetadata = v23.encryptionMetadata
        };
    end;
    return v21;
end;
local function v29(v25)
    local v26 = {};
    for v27, v28 in pairs(v25) do
        v26[#v26 + 1] = {
            userId = tostring(v27),
            distance = v28.distance,
            boundingBox = {
                minX = v28.boundingBox.min.X,
                minY = v28.boundingBox.min.Y,
                maxX = v28.boundingBox.max.X,
                maxY = v28.boundingBox.max.Y
            },
            hitRate = v28.hitRate,
            convexHull = v19(v28.convexHull)
        };
        if l_GetFFlagReportAnythingIncludeDiscardStatsInReport_0() and v28.pointProcessingStats ~= nil then
            v26[#v26].pointProcessingStats = {
                not v28.pointProcessingStats.wasSkipped and 0 or 1,
                v28.pointProcessingStats.total,
                v28.pointProcessingStats.offScreenDiscardCount,
                v28.pointProcessingStats.tooCloseDiscardCount
            };
        end;
    end;
    return v26;
end;
local function v37(v30)
    local v31 = false;
    for _, _ in pairs(v13.identifiedAvatars) do
        v31 = true;
        break;
    end;
    local v34 = false;
    if l_GetFFlagReportAnythingEnableAdReport_0() then
        for _, _ in pairs(v13.identifiedAds) do
            v34 = true;
            break;
        end;
    end;
    if v31 then
        v30.tags.IDENTIFIED_AVATARS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode((v29(v13.identifiedAvatars)))
                }
            }
        };
    end;
    if v13.avatarIDStats then
        v30.tags.AVATAR_ID_STATS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode(v13.avatarIDStats)
                }
            }
        };
    end;
    if not (not v34 or not l_GetFFlagReportAnythingEnableAdReport_0()) then
        v30.tags.IDENTIFIED_ADS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode((v24(v13.identifiedAds)))
                }
            }
        };
    end;
    if not (not v13.adIDStats or not l_GetFFlagReportAnythingEnableAdReport_0()) then
        v30.tags.AD_ID_STATS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode(v13.adIDStats)
                }
            }
        };
    end;
    if #v13.screenshotId > 0 then
        v30.tags.SCREENSHOT_ID = {
            valueList = {
                {
                    data = v13.screenshotId
                }
            }
        };
    end;
    if #v13.annotationPoints > 0 then
        v30.tags.RA_ANNOTATION_POINTS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode((v19(v13.annotationPoints)))
                }
            }
        };
    end;
    v30.tags.RA_ANNOTATION_OPTION_SEEN = {
        valueList = {
            {
                data = tostring(v13.annotationOptionSeen)
            }
        }
    };
    v30.tags.RA_ANNOTATION_PAGE_SEEN = {
        valueList = {
            {
                data = tostring(v13.annotationPageSeen)
            }
        }
    };
end;
local function v40(v38)
    local v39 = {
        tags = {
            ENTRY_POINT = {
                valueList = {
                    {
                        data = "in-experience"
                    }
                }
            },
            SUBMITTER_USER_ID = {
                valueList = {
                    {
                        data = tostring(v38.localUserId)
                    }
                }
            },
            REPORTED_ABUSE_CATEGORY = {
                valueList = {
                    {
                        data = v38.abuseReason
                    }
                }
            },
            PLACE_ID = {
                valueList = {
                    {
                        data = tostring(v38.placeId)
                    }
                }
            },
            REPORTER_COMMENT = {
                valueList = {
                    {
                        data = v38.abuseComment
                    }
                }
            },
            REPORTED_ABUSE_VECTOR = {
                valueList = {
                    {
                        data = "place"
                    }
                }
            },
            IN_EXP_MENU_ENTRY_POINT = {
                valueList = {
                    {
                        data = v38.menuEntryPoint
                    }
                }
            },
            VARIANT = {
                valueList = {
                    {
                        data = v38.variant or v14.Variant.CS
                    }
                }
            }
        }
    };
    v37(v39);
    if not (not (#v13.selectedAds > 0) or not l_GetFFlagReportAnythingEnableAdReport_0()) then
        v39.tags.REPORT_TARGET_ADS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode((v24(v13.selectedAds)))
                }
            }
        };
    end;
    return l_HttpService_0:JSONEncode(v39);
end;
local function v56(v41)
    local v42 = {
        tags = {
            ENTRY_POINT = {
                valueList = {
                    {
                        data = "in-experience"
                    }
                }
            },
            SUBMITTER_USER_ID = {
                valueList = {
                    {
                        data = tostring(v41.localUserId)
                    }
                }
            },
            REPORTED_ABUSE_CATEGORY = {
                valueList = {
                    {
                        data = v41.abuseReason
                    }
                }
            },
            REPORTER_COMMENT = {
                valueList = {
                    {
                        data = v41.abuseComment
                    }
                }
            },
            REPORTED_ABUSE_VECTOR = {
                valueList = {
                    {
                        data = not l_GetFFlagReportAnythingAbuseVectorRenameEnabled_0() and "other" or "avatar"
                    }
                }
            },
            IN_EXP_MENU_ENTRY_POINT = {
                valueList = {
                    {
                        data = v41.menuEntryPoint
                    }
                }
            },
            VARIANT = {
                valueList = {
                    {
                        data = v41.variant or v14.Variant.Unknown
                    }
                }
            }
        }
    };
    v37(v42);
    if #v13.selectedAbusers > 0 then
        local v43 = tostring(v13.selectedAbusers[1].UserId);
        local v44 = {};
        for _, v46 in ipairs(v13.selectedAbusers) do
            v44[#v44 + 1] = tostring(v46.UserId);
        end;
        if l_GetFFlagGetHumanoidDescription_0() then
            local v47, v48 = l_getHumanoidDescription_0(v13.selectedAbusers[1].UserId);
            v42.tags.REPORT_TARGET_HUMANOID_DESCRIPTION = {
                valueList = {
                    {
                        data = l_HttpService_0:JSONEncode(v47)
                    }
                }
            };
            v42.tags.REPORT_TARGET_HUMANOID_DESCRIPTION_STATUS = {
                valueList = {
                    {
                        data = v48
                    }
                }
            };
            local v49 = {};
            for _, v51 in ipairs(v13.selectedAbusers) do
                local v52, v53 = l_getHumanoidDescription_0(v51.UserId);
                v49[#v49 + 1] = {
                    humanoidDescription = v52,
                    outputMessage = v53
                };
            end;
            v42.tags.RA_ALL_ANNOTATED_HUMANOID_DESCRIPTIONS = {
                valueList = {
                    {
                        data = l_HttpService_0:JSONEncode(v49)
                    }
                }
            };
        end;
        v42.tags.REPORT_TARGET_USER_ID = {
            valueList = {
                {
                    data = tostring(v43)
                }
            }
        };
        v42.tags.RA_ALL_ANNOTATED_USER_IDS = {
            valueList = {
                {
                    data = l_HttpService_0:JSONEncode(v44)
                }
            }
        };
    elseif v41.formSelectedAbuserUserId then
        if l_GetFFlagGetHumanoidDescription_0() then
            local v54, v55 = l_getHumanoidDescription_0(v41.formSelectedAbuserUserId);
            v42.tags.REPORT_TARGET_HUMANOID_DESCRIPTION = {
                valueList = {
                    {
                        data = l_HttpService_0:JSONEncode(v54)
                    }
                }
            };
            v42.tags.REPORT_TARGET_HUMANOID_DESCRIPTION_STATUS = {
                valueList = {
                    {
                        data = v55
                    }
                }
            };
        end;
        v42.tags.REPORT_TARGET_USER_ID = {
            valueList = {
                {
                    data = tostring(v41.formSelectedAbuserUserId)
                }
            }
        };
    end;
    return l_HttpService_0:JSONEncode(v42);
end;
local function v74()
    local v57 = {};
    local v58 = {};
    local v59 = {};
    local v60 = {};
    for _, v62 in ipairs(v13.annotationPoints) do
        local l_huge_0 = math.huge;
        local v64 = nil;
        local v65 = {};
        v65 = if not l_GetFFlagRAEnableCircleRegion_0() then l_getAvatarsForPoint_0(v13.identifiedAvatars, v62) else l_getAvatarsForRegion_0(v13.identifiedAvatars, v62, v13.annotationCircleRadius, v13.screenSizeWidth, v13.screenSizeHeight);
        for v66, _ in pairs(v65) do
            local l_distance_0 = v13.identifiedAvatars[v66].distance;
            if l_distance_0 < l_huge_0 then
                l_huge_0 = l_distance_0;
                v64 = v66;
            end;
        end;
        local v69 = nil;
        if l_GetFFlagReportAnythingEnableAdReport_0() then
            local v70 = l_getAdsForPoint_0(v13.identifiedAds, v62);
            l_huge_0 = math.huge;
            for v71, _ in pairs(v70) do
                local l_distance_1 = v13.identifiedAds[v71].distance;
                if l_distance_1 < l_huge_0 then
                    l_huge_0 = l_distance_1;
                    v69 = v71;
                end;
            end;
        end;
        if not (v64 ~= nil) or v57[v64] then
            if not (not (l_GetFFlagReportAnythingEnableAdReport_0() and v69 ~= nil) or v58[v69]) then
                v58[v69] = true;
                v60[#v60 + 1] = v13.identifiedAds[v69];
            end;
        else
            v57[v64] = true;
            v59[#v59 + 1] = v13.identifiedAvatars[v64].player;
        end;
    end;
    v13.selectedAbusers = v59;
    v13.selectedAds = v60;
end;
return {
    setAnnotationCircleRadius = function(v75)
        v13.annotationCircleRadius = v75;
    end,
    getAnnotationCircleRadius = function()
        return v13.annotationCircleRadius;
    end,
    setAspectRatioDimensions = function(v76, v77)
        v13.screenSizeWidth = v76;
        v13.screenSizeHeight = v77;
    end,
    setScreenshotId = function(v78)
        v13.screenshotId = v78;
    end,
    setIdentifiedAds = function(v79)
        v13.identifiedAds = v79;
    end,
    getIdentifiedAds = function()
        return v13.identifiedAds;
    end,
    setIdentifiedAvatars = function(v80)
        v13.identifiedAvatars = v80;
    end,
    getIdentifiedAvatars = function()
        return v13.identifiedAvatars;
    end,
    setAvatarIDStats = function(v81)
        v13.avatarIDStats = v81;
    end,
    setAdIDStats = function(v82)
        v13.adIDStats = v82;
    end,
    setScreenshotContentId = function(v83)
        v13.screenshotContentId = v83;
        v13.annotationPoints = {};
        v13.selectedAbusers = {};
    end,
    getScreenshotContentId = function()
        return v13.screenshotContentId;
    end,
    setAnnotationPoints = function(v84)
        v13.annotationPoints = v84;
        v13.annotationOptionSeen = true;
        v13.annotationPageSeen = true;
        v74();
    end,
    getSelectedAbusers = function()
        return v13.selectedAbusers;
    end,
    getSelectedAds = function()
        return v13.selectedAds;
    end,
    clearAnnotationPoints = function()
        v13.annotationPoints = {};
        v13.selectedAbusers = {};
        if l_GetFFlagReportAnythingEnableAdReport_0() then
            v13.selectedAds = {};
        end;
        v13.annotationOptionSeen = false;
        v13.annotationPageSeen = false;
    end,
    getAnnotationPoints = function()
        return v13.annotationPoints;
    end,
    setAnnotationOptionSeen = function(v85)
        v13.annotationOptionSeen = v85;
    end,
    getAnnotationOptionSeen = function()
        return v13.annotationOptionSeen;
    end,
    setAnnotationPageSeen = function(v86)
        v13.annotationPageSeen = v86;
    end,
    getAnnotationPageSeen = function()
        return v13.annotationPageSeen;
    end,
    buildExperienceReportRequest = v40,
    buildOtherReportRequest = v56,
    clear = function()
        v13 = {
            annotationCircleRadius = 0,
            screenSizeWidth = 0,
            screenSizeHeight = 0,
            screenshotId = "",
            identifiedAvatars = {},
            avatarIDStats = nil,
            identifiedAds = {},
            adIDStats = nil,
            screenshotContentId = "",
            annotationPoints = {},
            annotationOptionSeen = false,
            annotationPageSeen = false,
            selectedAbusers = {},
            selectedAds = {}
        };
    end,
    getAnalyticsParameters = function()
        return {
            finalAnnotationOptionSeen = v13.annotationOptionSeen,
            finalAnnotationPageSeen = v13.annotationPageSeen,
            finalAnnotationCount = #v13.annotationPoints,
            finalAnnotatedAvatarsCount = #v13.selectedAbusers
        };
    end,
    Constants = v14
};


local l_Players_0 = game:GetService("Players");
local v1 = {
    ERR_RA_CHARACTER = "ERR_RA_CHARACTER",
    ERR_RA_HUMPLAYER = "ERR_RA_HUMPLAYER",
    ERR_RA_HUMOBJ = "ERR_RA_HUMOBJ",
    ERR_RA_HUMDESC = "ERR_RA_HUMDESC",
    OK = "OK"
};
return {
    getHumanoidDescription = function(v2)
        local l_l_Players_0_PlayerByUserId_0 = l_Players_0:GetPlayerByUserId(v2);
        local v4 = {
            BackAccessory = "",
            BodyTypeScale = 0,
            ClimbAnimation = 0,
            DepthScale = 0,
            Face = 0,
            FaceAccessory = "",
            FallAnimation = 0,
            FrontAccessory = "",
            GraphicTShirt = 0,
            HairAccessory = "",
            HatAccessory = "",
            Head = 0,
            HeadColor = {
                0,
                0,
                0
            },
            HeadScale = 0,
            HeightScale = 0,
            IdleAnimation = 0,
            JumpAnimation = 0,
            LeftArm = 0,
            LeftArmColor = {
                0,
                0,
                0
            },
            LeftLeg = 0,
            LeftLegColor = {
                0,
                0,
                0
            },
            MoodAnimation = 0,
            NeckAccessory = "",
            Pants = 0,
            ProportionScale = 0,
            RightArm = 0,
            RightArmColor = {
                0,
                0,
                0
            },
            RightLeg = 0,
            RightLegColor = {
                0,
                0,
                0
            },
            RunAnimation = 0,
            Shirt = 0,
            ShouldersAccessory = "",
            SwimAnimation = 0,
            Torso = 0,
            TorsoColor = {
                0,
                0,
                0
            },
            WaistAccessory = "",
            WalkAnimation = 0,
            WidthScale = 0
        };
        if l_l_Players_0_PlayerByUserId_0 then
            local l_Character_0 = l_l_Players_0_PlayerByUserId_0.Character;
            if not l_Character_0 then
                return v4, v1.ERR_RA_CHARACTER;
            else
                local v6 = l_Character_0:WaitForChild("Humanoid", 1);
                if v6 then
                    local l_v6_AppliedDescription_0 = v6:GetAppliedDescription();
                    if l_v6_AppliedDescription_0 then
                        pcall(function()
                            for v8, _ in pairs(v4) do
                                if typeof(l_v6_AppliedDescription_0[v8]) == "Color3" then
                                    v4[v8] = {
                                        l_v6_AppliedDescription_0[v8].R,
                                        l_v6_AppliedDescription_0[v8].G,
                                        l_v6_AppliedDescription_0[v8].B
                                    };
                                else
                                    v4[v8] = l_v6_AppliedDescription_0[v8];
                                end;
                            end;
                        end);
                        return v4, v1.OK;
                    else
                        return v4, v1.ERR_RA_HUMDESC;
                    end;
                else
                    return v4, v1.ERR_RA_HUMOBJ;
                end;
            end;
        else
            return v4, v1.ERR_RA_HUMPLAYER;
        end;
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_EventIngestService_0 = game:GetService("EventIngestService");
local v2 = require(l_CorePackages_0.Cryo);
local _ = require(l_CorePackages_0.Workspace.Packages.TnSAvatarIdentification);
local l_EventIngest_0 = require(l_CorePackages_0.Workspace.Packages.Analytics).AnalyticsReporters.EventIngest;
local v5 = {
    EventType = {
        AvatarsIdentified = "ReportAnythingAvatarsIdentified"
    },
    Context = {
        LegacyMenu = "ReportAbuseLegacyMenu"
    }
};
local function _()
    return {
        annotationOptionSeenCount = 0,
        annotationPageSeenCount = 0,
        annotationPlaceCount = 0,
        annotationUndoCount = 0,
        annotationRedoCount = 0,
        abandonedForRetake = false,
        isPortraitMode = false
    };
end;
local v7 = {
    annotationOptionSeenCount = 0,
    annotationPageSeenCount = 0,
    annotationPlaceCount = 0,
    annotationUndoCount = 0,
    annotationRedoCount = 0,
    abandonedForRetake = false,
    isPortraitMode = false
};
local v8 = nil;
local function _()
    if not v8 then
        v8 = l_EventIngest_0.new(l_EventIngestService_0);
    end;
    return v8;
end;
return {
    incrementAnnotationOptionSeen = function()
        local l_v7_0 = v7;
        l_v7_0.annotationOptionSeenCount = l_v7_0.annotationOptionSeenCount + 1;
    end,
    incrementAnnotationPageSeen = function()
        local l_v7_1 = v7;
        l_v7_1.annotationPageSeenCount = l_v7_1.annotationPageSeenCount + 1;
    end,
    incrementAnnotationPlace = function()
        local l_v7_2 = v7;
        l_v7_2.annotationPlaceCount = l_v7_2.annotationPlaceCount + 1;
    end,
    incrementAnnotationUndo = function()
        local l_v7_3 = v7;
        l_v7_3.annotationUndoCount = l_v7_3.annotationUndoCount + 1;
    end,
    incrementAnnotationRedo = function()
        local l_v7_4 = v7;
        l_v7_4.annotationRedoCount = l_v7_4.annotationRedoCount + 1;
    end,
    setAbandonedForRetake = function()
        v7.abandonedForRetake = true;
    end,
    setIsPortraitMode = function()
        v7.isPortraitMode = true;
    end,
    getAccumulatedParameters = function()
        return v7;
    end,
    emitAvatarsIdentifiedStats = function(v15)
        local v16 = v2.Dictionary.join(v15, {
            duration = v15.duration * 1000000
        });
        if not v8 then
            v8 = l_EventIngest_0.new(l_EventIngestService_0);
        end;
        v8:sendEventDeferred(v5.Context.LegacyMenu, v5.EventType.AvatarsIdentified, v16);
    end,
    clear = function()
        v7 = {
            annotationOptionSeenCount = 0,
            annotationPageSeenCount = 0,
            annotationPlaceCount = 0,
            annotationUndoCount = 0,
            annotationRedoCount = 0,
            abandonedForRetake = false,
            isPortraitMode = false
        };
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_Players_0 = game:GetService("Players");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_RunService_0 = game:GetService("RunService");
local _ = require(l_CorePackages_0.Packages.Dash);
local l_default_0 = require(l_RobloxGui_0.Modules.VoiceChat.VoiceChatServiceManager).default;
local v8 = require(l_RobloxGui_0.Modules.VoiceChat.createVoiceAbuseReportRequest);
local v9 = require(l_RobloxGui_0.Modules.Common.Url);
local l_Parent_0 = script.Parent.Parent;
local v11 = require(l_Parent_0.Resources.Constants);
local v12 = require(l_Parent_0.Utility.SendAnalytics);
local v13 = require(l_Parent_0.Utility.SessionUtility);
sendAnalytics = function(v14, v15, v16, v17)
    v12(v14, v11.Analytics.ReportSubmittedName, {
        reportType = v14,
        reportedEntityId = tostring(v15),
        reportSource = v11.Analytics.ReportSourceInGame,
        reason = v16,
        abuseVector = v17
    });
end;
getAbuseVectorFromReportCategory = function(v18)
    if v18 == v11.Category.Voice then
        return "voice";
    elseif v18 == v11.Category.Text then
        return "chat";
    else
        return "other";
    end;
end;
submitUserAbuseReport = function(v19, v20)
    local v21 = v19.reportCategory == v11.Category.Voice;
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    if l_LocalPlayer_0 then
        pcall(function()
            coroutine.wrap(function()
                local v23 = getAbuseVectorFromReportCategory(v19.reportCategory);
                if not v21 then
                    l_Players_0:ReportAbuse(v19.abusingPlayer, v19.reason, v19.comment);
                else
                    local v24 = v8(l_Players_0, l_default_0, {
                        localUserId = l_LocalPlayer_0.UserId,
                        abuserUserId = v19.abusingPlayer.UserId,
                        abuseComment = v19.comment,
                        abuseReason = v19.reason,
                        inExpMenuOpenedUnixMilli = math.floor(v19.beginningTimestamp * 1000),
                        sortedPlayerListUserIds = v19.sortedUserIds,
                        abuseVector = v23
                    });
                    if not game:GetEngineFeature("AbuseReportV3") then
                        l_HttpRbxApiService_0:PostAsyncFullUrl(v9.APIS_URL .. "/abuse-reporting/v2/abuse-report", v24);
                    else
                        l_Players_0:ReportAbuseV3(l_LocalPlayer_0, v24);
                    end;
                end;
                sendAnalytics(v11.Analytics.ReportTypeUser, v19.abusingPlayer.UserId, v19.reason, v23);
                v13.endAbuseReportSession();
                if v20 then
                    v20();
                end;
            end)();
        end);
    end;
end;
submitPlaceAbuseReport = function(v25, v26)
    if v25.placeName ~= "" then
        coroutine.wrap(function()
            if not l_RunService_0:IsStudio() then
                l_Players_0:ReportAbuse(nil, v25.reason, (string.format("User Report: \n    %s \n" .. "Place Title: \n    %s \n" .. "PlaceId: \n    %s \n" .. "Place Description: \n    %s \n", v25.comment, v25.placeName, tostring(v25.placeId), v25.placeDescription)));
            end;
            sendAnalytics(v11.Analytics.ReportTypeGame, v25.placeId, v25.reason);
            v13.endAbuseReportSession();
            if v26 then
                v26();
            end;
        end)();
    end;
end;
return {
    submitUserAbuseReport = submitUserAbuseReport,
    submitPlaceAbuseReport = submitPlaceAbuseReport
};


local v0 = nil;
if game:GetEngineFeature("ReportAnythingScreenshot") then
    game:GetService("SafetyService").ScreenshotContentReady:Connect(function(_, v2)
        v0 = v2;
    end);
end;
local v3 = {};
v3.__index = v3;
v3.GetScreenshotContentId = function(_)
    return v0;
end;
v3.SetScreenshotContentId = function(_, v6)
    v0 = v6;
end;
return v3;


local v0 = {
    preScreenshot = function()
    end,
    postScreenshot = function()
    end
};
return {
    setPreScreenshotHook = function(v1)
        v0.preScreenshot = v1;
    end,
    setPostScreenshotHook = function(v2)
        v0.postScreenshot = v2;
    end,
    doPreScreenshot = function()
        v0.preScreenshot();
    end,
    doPostScreenshot = function()
        v0.postScreenshot();
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_EventIngestService_0 = game:GetService("EventIngestService");
local l_GetFFlagShareGetPlatformTargetImpl_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagShareGetPlatformTargetImpl;
local v4 = nil;
v4 = not l_GetFFlagShareGetPlatformTargetImpl_0() and function()
    local v5 = "unknownLua";
    local l_None_0 = Enum.Platform.None;
    pcall(function()
        l_None_0 = l_UserInputService_0:GetPlatform();
    end);
    local v7 = true;
    if l_None_0 ~= Enum.Platform.Windows then
        v7 = l_None_0 == Enum.Platform.OSX;
    end;
    local v8 = true;
    if l_None_0 ~= Enum.Platform.IOS then
        v8 = l_None_0 == Enum.Platform.Android;
    end;
    v8 = v8 or l_None_0 == Enum.Platform.UWP;
    local v9 = true;
    if l_None_0 ~= Enum.Platform.XBox360 then
        v9 = l_None_0 == Enum.Platform.XBoxOne;
    end;
    local l_v9_0 = v9;
    if not l_v9_0 then
        l_v9_0 = true;
        if l_None_0 ~= Enum.Platform.PS3 then
            l_v9_0 = l_None_0 == Enum.Platform.PS4;
        end;
    end;
    return if not v7 then v8 and "mobile" or ((l_v9_0 or l_None_0 == Enum.Platform.WiiU) and "console" or v5 .. tostring(l_None_0)) else "client";
end or require(l_CorePackages_0.Workspace.Packages.Analytics).getPlatformTarget;
return function(v11, v12, v13)
    assert(type(v11) == "string", "Expected eventContext to be a string");
    assert(type(v12) == "string", "Expected eventName to be a string");
    assert(type(v13) == "table", "Expected eventTable to be a table");
    local v14 = v4();
    if not v13 then
        v13 = {};
    end;
    v13.universeId = tostring(game.GameId);
    l_EventIngestService_0:sendEventDeferred(v14, v11, v12, v13);
end;


local l_SessionService_0 = game:GetService("SessionService");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.Resources.Constants);
local v3 = require(l_Parent_0.Flags.GetFFlagEnableARFlowSession);
local v4 = require(l_Parent_0.Utility.SendAnalytics);
return {
    startAbuseReportSession = function(v5)
        if v3() then
            if not l_SessionService_0:SessionExists(v2.Session.StructuralIdentifier.AbuseReport) then
                l_SessionService_0:SetSession(v2.Session.StructuralIdentifier.Level1, v2.Session.StructuralIdentifier.AbuseReport, v2.Session.StructuralIdentifier.AbuseReport);
            end;
            l_SessionService_0:SetMetadata(v2.Session.StructuralIdentifier.AbuseReport, v2.Session.Metadata.EntryPoint, v5);
            l_SessionService_0:SetMetadata(v2.Session.StructuralIdentifier.AbuseReport, v2.Session.Metadata.DeleteOnGameLeave, "True");
            v4(v2.Analytics.ReportFlowOpened, v2.Analytics.ReportFlowOpened, {
                source = v5
            });
        end;
    end,
    endAbuseReportSession = function()
        if not (not v3() or not l_SessionService_0:SessionExists(v2.Session.StructuralIdentifier.AbuseReport)) then
            l_SessionService_0:RemoveSession(v2.Session.StructuralIdentifier.AbuseReport);
        end;
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.Rodux);
local v5 = require(l_CorePackages_0.RoactRodux);
local v6 = require(l_CorePackages_0.Packages.t);
local _ = require(l_CorePackages_0.UIBlox);
local v8 = require(script.Dependencies);
local l_Localization_0 = v8.Localization;
local v10 = require(v8.LocalizationProvider);
local v11 = require(v8.playerInterface);
local v12 = require(script.Resources.Constants);
local v13 = require(script.GlobalConfig);
local v14 = require(script.Reducers);
local v15 = require(script.Components.TrustAndSafetyApp);
local v16 = require(script.TrustAndSafetyAppPolicy);
local _ = require(script.Actions.OpenReportDialog);
local _ = require(script.Actions.OpenReportMenu);
local v19 = require(script.Actions.BeginReportFlow);
local v20 = require(script.Actions.SetVoiceReportingFlow);
local v21 = require(script.Thunks.IdentifyAvatars);
local v22 = require(script.Utility.SessionUtility);
local v23 = require(script.Utility.ScreenshotHookManager);
local v24 = require(script.Thunks.FetchPlaceInfo);
local v25 = require(script.Flags.GetFFlagEnableNewVoiceReportFlows);
local v26 = require(script.Flags.GetFFlagReportAnythingScreenshot);
local v38 = {
    getInstance = function(v27)
        if not v27._initialized then
            v27:initialize();
            v27._initialized = true;
        end;
        return v27;
    end,
    initialize = function(v28)
        if v13.propValidation then
            v3.setGlobalConfig({
                propValidation = true
            });
        end;
        if v13.elementTracing then
            v3.setGlobalConfig({
                elementTracing = true
            });
        end;
        v28.store = v28:createStore();
        v28.store:dispatch(v24(game.GameId));
        v28.localization = v28:createLocalization();
        v28.root = v3.createElement(v5.StoreProvider, {
            store = v28.store
        }, {
            PolicyProvider = v3.createElement(v16.Provider, {
                policy = {
                    v16.Mapper
                }
            }, {
                LocalizationProvider = v3.createElement(v10, {
                    localization = v28.localization
                }, {
                    TrustAndSafety = v3.createElement(v15)
                })
            })
        });
        v28.element = v3.mount(v28.root, l_CoreGui_0, "TrustAndSafety");
    end,
    createStore = function(_)
        local l_v14_0 = v14;
        local v31 = {
            v4.thunkMiddleware
        };
        if v13.logStore then
            table.insert(v31, v4.loggerMiddleware);
        end;
        return v4.Store.new(l_v14_0, nil, v31);
    end,
    createLocalization = function(_)
        local v33 = l_Localization_0.new(l_LocalizationService_0.RobloxLocaleId);
        l_LocalizationService_0:GetPropertyChangedSignal("RobloxLocaleId"):Connect(function()
            v33:SetLocale(l_LocalizationService_0.RobloxLocaleId);
        end);
        return v33;
    end,
    openReportDialog = function(v34, v35, v36)
        v34.store:dispatch(v20(v25()));
        if v26() then
            v34.store:dispatch(v21());
        end;
        v34.store:dispatch(v19(v35, v36));
    end,
    openReportMenu = function(v37)
        v37.store:dispatch(v20(v25()));
        if v26() then
            v37.store:dispatch(v21());
        end;
        v37.store:dispatch(v19());
    end
};
return {
    openReportDialogForPlayer = function(v39, v40)
        assert(v11(v39) and v6.instanceIsA("Player")(v39));
        v22.startAbuseReportSession(v40);
        v38:getInstance():openReportDialog(v12.ReportType.Player, v39);
    end,
    openReportDialogForPlace = function(v41)
        v22.startAbuseReportSession(v41);
        v38:getInstance():openReportDialog(v12.ReportType.Place);
    end,
    openReportMenu = function(v42)
        v22.startAbuseReportSession(v42);
        v38:getInstance():openReportMenu();
    end,
    setPreReportScreenshotHook = function(v43)
        v23.setPreScreenshotHook(v43);
    end,
    setPostReportScreenshotHook = function(v44)
        v23.setPostScreenshotHook(v44);
    end
};


local _ = game:GetService("VRService");
local v1 = require(game:GetService("CoreGui").RobloxGui.Modules.Common.CommonUtil);
local l_Granite_0 = Enum.Material.Granite;
local v3 = Vector3.new(1, 1, 1);
local v4 = {};
v4.__index = v4;
v4.new = function(v5)
    local v6 = setmetatable({}, v4);
    v6.userCFrame = v5;
    v6.model = v1.Create("Model")({
        Name = "TouchController",
        Archivable = false
    });
    v6.origin = v1.Create("Part")({
        Parent = v6.model,
        Name = "Origin",
        Anchored = true,
        Transparency = 1,
        Size = Vector3.new(0.05, 0.05, 0.05),
        CanCollide = false,
        CanQuery = false,
        CanTouch = false
    });
    v6.parts = {};
    local v7 = v1.Create("Part")({
        Parent = v6.model,
        Name = "body",
        Anchored = false,
        CanCollide = false,
        CanQuery = false,
        CanTouch = false,
        Material = l_Granite_0,
        Size = Vector3.new(0.05, 0.05, 0.05),
        Transparency = 0.5,
        CFrame = v6.origin.CFrame
    });
    local _ = v1.Create("SpecialMesh")({
        Parent = v7,
        Name = "Mesh",
        MeshId = v5 == Enum.UserCFrame.LeftHand and "rbxassetid://8650168403" or "rbxassetid://8650168401",
        Scale = v3
    });
    local _ = v1.Create("Weld")({
        Parent = v7,
        Name = "Weld",
        Part0 = v6.origin,
        Part1 = v7,
        C0 = CFrame.new(0, -0.115, 0.213)
    });
    v6.parts.body = v7;
    v6.model.PrimaryPart = v6.origin;
    return v6;
end;
v4.setCFrame = function(v10, v11)
    v10.model:SetPrimaryPartCFrame(v11 * CFrame.Angles(1.5707963267948966, 0, 0));
end;
v4.onButtonInputChanged = function(_, _, _)
end;
v4.onInputBegan = function(v15, v16)
    v15:onButtonInputChanged(v16, true);
end;
v4.onInputChanged = function(_, _)
end;
v4.onInputEnded = function(v19, v20)
    v19:onButtonInputChanged(v20, false);
end;
v4.onTouchpadModeChanged = function(_, _, _)
end;
return v4;


local _ = game:GetService("VRService");
local l_CoreGui_0 = game:GetService("CoreGui");
local _ = game:GetService("CorePackages");
local l_game_EngineFeature_0 = game:GetEngineFeature("OpenXrForWin32");
local v4 = require(l_CoreGui_0.RobloxGui.Modules.Common.CommonUtil);
local l_Granite_0 = Enum.Material.Granite;
local v6 = not not l_game_EngineFeature_0 and Vector3.new(3.4, 3.4, 3.4) or Vector3.new(3.6, 3.6, 3.6);
local v7 = {};
v7.__index = v7;
v7.new = function(v8)
    local v9 = setmetatable({}, v7);
    v9.userCFrame = v8;
    v9.model = v4.Create("Model")({
        Name = "IndexController",
        Archivable = false
    });
    v9.origin = v4.Create("Part")({
        Parent = v9.model,
        Name = "Origin",
        Anchored = true,
        Transparency = 1,
        Size = Vector3.new(0.05, 0.05, 0.05),
        CanCollide = false,
        CanQuery = false,
        CanTouch = false
    });
    v9.parts = {};
    local v10 = v4.Create("Part")({
        Parent = v9.model,
        Name = "body",
        Anchored = true,
        Material = l_Granite_0,
        Size = Vector3.new(0.05, 0.05, 0.05),
        Transparency = 0.25,
        CFrame = v9.origin.CFrame,
        CanCollide = false,
        CanQuery = false,
        CanTouch = false
    });
    v9.mesh = v4.Create("SpecialMesh")({
        Parent = v10,
        Name = "Mesh",
        MeshId = v8 == Enum.UserCFrame.LeftHand and "rbxassetid://9605099531" or "rbxassetid://9605114549",
        TextureId = v8 == Enum.UserCFrame.LeftHand and "rbxassetid://9605099774" or "rbxassetid://9605114771",
        Scale = v6
    });
    local _ = v4.Create("Weld")({
        Parent = v10,
        Name = "Weld",
        Part0 = v9.origin,
        Part1 = v10
    });
    v9.parts.body = v10;
    v9.model.PrimaryPart = v9.origin;
    return v9;
end;
v7.setCFrame = function(v12, v13)
    if not l_game_EngineFeature_0 then
        if v12.userCFrame == Enum.UserCFrame.RightHand then
            v12.model:SetPrimaryPartCFrame((v13 * CFrame.Angles(0.3490658503988659, 3.141592653589793, 0)) * CFrame.new(-0.1, -0.03, -0.4));
            return ;
        else
            v12.model:SetPrimaryPartCFrame((v13 * CFrame.Angles(0.3490658503988659, 3.141592653589793, 0)) * CFrame.new(0.1, -0.03, -0.4));
            return ;
        end;
    elseif v12.userCFrame == Enum.UserCFrame.RightHand then
        v12.model:SetPrimaryPartCFrame((v13 * CFrame.Angles(0.6981317007977318, 3.141592653589793, 0)) * CFrame.new(-0.1, 0.08, -0.01));
        return ;
    else
        v12.model:SetPrimaryPartCFrame((v13 * CFrame.Angles(0.6981317007977318, 3.141592653589793, 0)) * CFrame.new(0.1, 0.08, -0.01));
        return ;
    end;
end;
v7.setCFrameAndScale = function(v14, v15, v16)
    local v17 = v14.userCFrame == Enum.UserCFrame.RightHand and 1 or -1;
    if not l_game_EngineFeature_0 then
        v14.model:SetPrimaryPartCFrame((v15 * CFrame.Angles(0.3490658503988659, 3.141592653589793, 0)) * CFrame.new((-0.1 * v16) * v17, -0.03 * v16, -0.4 * v16));
    else
        v14.model:SetPrimaryPartCFrame((v15 * CFrame.Angles(0.6981317007977318, 3.141592653589793, 0)) * CFrame.new((-0.1 * v16) * v17, 0.08 * v16, -0.01 * v16));
    end;
    v14.mesh.Scale = v6 * v16;
end;
v7.onButtonInputChanged = function(_, _, _)
end;
v7.onInputBegan = function(v21, v22)
    v21:onButtonInputChanged(v22, true);
end;
v7.onInputChanged = function(_, _)
end;
v7.onInputEnded = function(v25, v26)
    v25:onButtonInputChanged(v26, false);
end;
v7.onTouchpadModeChanged = function(_, _, _)
end;
return v7;


local _ = game:GetService("VRService");
local l_CoreGui_0 = game:GetService("CoreGui");
local _ = game:GetService("CorePackages");
local v3 = require(l_CoreGui_0.RobloxGui.Modules.Common.CommonUtil);
local l_Granite_0 = Enum.Material.Granite;
local v5 = Vector3.new(0.032, 0.032, 0.032);
local v6 = {};
v6.__index = v6;
v6.new = function(v7)
    local v8 = setmetatable({}, v6);
    v8.userCFrame = v7;
    v8.model = v3.Create("Model")({
        Name = "RiftController",
        Archivable = false
    });
    v8.origin = v3.Create("Part")({
        Parent = v8.model,
        Name = "Origin",
        Anchored = true,
        Transparency = 1,
        Size = Vector3.new(0.05, 0.05, 0.05),
        CanCollide = false,
        CanQuery = false,
        CanTouch = false
    });
    v8.parts = {};
    local v9 = v3.Create("Part")({
        Parent = v8.model,
        Name = "body",
        Anchored = true,
        Material = l_Granite_0,
        Size = Vector3.new(0.05, 0.05, 0.05),
        Transparency = 0.25,
        CFrame = v8.origin.CFrame,
        CanCollide = false,
        CanQuery = false,
        CanTouch = false
    });
    v8.mesh = v3.Create("SpecialMesh")({
        Parent = v9,
        Name = "Mesh",
        MeshId = v7 == Enum.UserCFrame.LeftHand and "rbxassetid://9597097835" or "rbxassetid://9597101144",
        TextureId = "rbxassetid://9597123835",
        Scale = v5
    });
    local _ = v3.Create("Weld")({
        Parent = v9,
        Name = "Weld",
        Part0 = v8.origin,
        Part1 = v9
    });
    v8.parts.body = v9;
    v8.model.PrimaryPart = v8.origin;
    return v8;
end;
v6.setCFrame = function(v11, v12)
    v11.model:SetPrimaryPartCFrame((v12 * CFrame.Angles(0.3490658503988659, 0, 0)) * CFrame.new(0, -0.03, 0.06));
end;
v6.setCFrameAndScale = function(v13, v14, v15)
    v13.model:SetPrimaryPartCFrame((v14 * CFrame.Angles(0.3490658503988659, 0, 0)) * CFrame.new(0, -0.03 * v15, 0.06 * v15));
    v13.mesh.Scale = v5 * v15;
end;
v6.onButtonInputChanged = function(_, _, _)
end;
v6.onInputBegan = function(v19, v20)
    v19:onButtonInputChanged(v20, true);
end;
v6.onInputChanged = function(_, _)
end;
v6.onInputEnded = function(v23, v24)
    v23:onButtonInputChanged(v24, false);
end;
v6.onTouchpadModeChanged = function(_, _, _)
end;
return v6;


local _ = game:GetService("VRService");
local l_CoreGui_0 = game:GetService("CoreGui");
local _ = game:GetService("CorePackages");
local l_RobloxGui_0 = l_CoreGui_0.RobloxGui;
local v4 = require(l_RobloxGui_0.Modules.Common.CommonUtil);
local v5 = require(l_RobloxGui_0.Modules.Flags.FIntVRTouchControllerTransparency);
local v6 = {
    [Enum.UserCFrame.RightHand] = {
        Body = {
            meshId = "rbxassetid://12954883737",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(0, 0, 0) * CFrame.Angles(0, 3.141592653589793, 0)
        },
        Grip = {
            meshId = "rbxassetid://12954884971",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(0.015, -0.078, 0.005) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(-0.01, 0.005, 0) * CFrame.Angles(0, 0, -0.12217304763960307)
        },
        Stick = {
            meshId = "rbxassetid://12954884012",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(0.056, 0.027, -0.074) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.001, 0)
        },
        Trigger = {
            meshId = "rbxassetid://12954885295",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(0.014, -0.049, -0.131) * CFrame.Angles(0, 3.141592653589793, 0)
        },
        MenuButton = {
            meshId = "rbxassetid://12954884231",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(0.07, 0.017, -0.017) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.001, 0)
        },
        ButtonA = {
            meshId = "rbxassetid://12954884749",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(0.011, 0.014, -0.026) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.005, 0)
        },
        ButtonB = {
            meshId = "rbxassetid://12954884464",
            textureId = "rbxassetid://12954905146",
            offset = CFrame.new(-0.013, 0.015, -0.07) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.005, 0)
        }
    },
    [Enum.UserCFrame.LeftHand] = {
        Body = {
            meshId = "rbxassetid://12954878407",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(0, 0, 0) * CFrame.Angles(0, 3.141592653589793, 0)
        },
        Grip = {
            meshId = "rbxassetid://12954878772",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(-0.015, -0.078, 0.005) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0.0125, 0.005, 0.001)
        },
        Stick = {
            meshId = "rbxassetid://12954879211",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(-0.056, 0.027, -0.074) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.001, 0)
        },
        Trigger = {
            meshId = "rbxassetid://12954878599",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(-0.014, -0.049, -0.131) * CFrame.Angles(0, 3.141592653589793, 0)
        },
        MenuButton = {
            meshId = "rbxassetid://12954879390",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(-0.07, 0.017, -0.017) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.001, 0)
        },
        ButtonX = {
            meshId = "rbxassetid://12954879064",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(-0.011, 0.013, -0.026) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.005, 0)
        },
        ButtonY = {
            meshId = "rbxassetid://12954878913",
            textureId = "rbxassetid://12954905425",
            offset = CFrame.new(0.013, 0.015, -0.07) * CFrame.Angles(0, 3.141592653589793, 0),
            moveOffset = CFrame.new(0, -0.005, 0)
        }
    }
};
local v7 = {
    [Enum.KeyCode.ButtonL1] = "Grip",
    [Enum.KeyCode.ButtonL2] = "Trigger",
    [Enum.KeyCode.ButtonL3] = "Stick",
    [Enum.KeyCode.ButtonR1] = "Grip",
    [Enum.KeyCode.ButtonR2] = "Trigger",
    [Enum.KeyCode.ButtonR3] = "Stick",
    [Enum.KeyCode.Thumbstick1] = "Stick",
    [Enum.KeyCode.Thumbstick2] = "Stick",
    [Enum.KeyCode.ButtonSelect] = "MenuButton",
    [Enum.KeyCode.ButtonStart] = "MenuButton",
    [Enum.KeyCode.ButtonA] = "ButtonA",
    [Enum.KeyCode.ButtonB] = "ButtonB",
    [Enum.KeyCode.ButtonX] = "ButtonX",
    [Enum.KeyCode.ButtonY] = "ButtonY"
};
local l_Granite_0 = Enum.Material.Granite;
local v9 = Vector3.new(0.032, 0.032, 0.032);
local v10 = {};
v10.__index = v10;
v10.new = function(v11)
    local v12 = setmetatable({}, v10);
    v12.userCFrame = v11;
    v12.model = v4.Create("Model")({
        Name = "TouchController",
        Archivable = false
    });
    v12.origin = v4.Create("Part")({
        Parent = v12.model,
        Name = "Origin",
        Anchored = true,
        Transparency = 1,
        Size = Vector3.new(0.05, 0.05, 0.05),
        CanCollide = false,
        CanQuery = false,
        CanTouch = false
    });
    v12.scale = 1;
    v12.parts = {};
    for v13, v14 in pairs(v6[v11]) do
        local l_v9_0 = v9;
        if v14.scale then
            l_v9_0 = l_v9_0 * v14.scale;
        end;
        local v16 = v4.Create("Part")({
            Parent = v12.model,
            Name = v13,
            Anchored = true,
            Material = l_Granite_0,
            Size = v14.size or Vector3.new(0.05, 0.05, 0.05),
            CFrame = v12.origin.CFrame * v14.offset,
            CanCollide = false,
            CanQuery = false,
            CanTouch = false,
            Transparency = v5 / 100
        });
        local _ = v4.Create("SpecialMesh")({
            Parent = v16,
            Name = "Mesh",
            MeshId = v14.meshId,
            TextureId = v14.textureId,
            Scale = l_v9_0
        });
        local _ = v4.Create("Weld")({
            Parent = v16,
            Name = "Weld",
            Part0 = v12.origin,
            Part1 = v16,
            C0 = v14.offset
        });
        v12.parts[v13] = v16;
    end;
    v12.model.PrimaryPart = v12.origin;
    return v12;
end;
v10.setCFrame = function(v19, v20)
    if v19.userCFrame == Enum.UserCFrame.RightHand then
        v19.model:SetPrimaryPartCFrame((v20 * CFrame.Angles(0.3490658503988659, 0, 0)) * CFrame.new(-0.03, 0.08, -0.06));
        return ;
    else
        v19.model:SetPrimaryPartCFrame((v20 * CFrame.Angles(0.3490658503988659, 0, 0)) * CFrame.new(0.03, 0.08, -0.06));
        return ;
    end;
end;
v10.setCFrameAndScale = function(v21, v22, v23)
    v21.model:SetPrimaryPartCFrame((v22 * CFrame.Angles(0.3490658503988659, 0, 0)) * CFrame.new((-0.03 * v23) * (v21.userCFrame == Enum.UserCFrame.RightHand and 1 or -1), 0.08 * v23, -0.06 * v23));
    if v21.scale ~= v23 then
        v21.scale = v23;
        for v24, v25 in pairs(v6[v21.userCFrame]) do
            local v26 = v21.parts[v24];
            if v26 then
                local l_v9_1 = v9;
                if v25.scale then
                    l_v9_1 = l_v9_1 * v25.scale;
                end;
                local l_Mesh_0 = v26:FindFirstChild("Mesh");
                local l_Weld_0 = v26:FindFirstChild("Weld");
                local l_offset_0 = v25.offset;
                local v31 = CFrame.new(l_offset_0.p * v21.scale) * (l_offset_0 - l_offset_0.p);
                v26.CFrame = v21.origin.CFrame * v31;
                if l_Mesh_0 then
                    l_Mesh_0.Scale = l_v9_1 * v21.scale;
                end;
                if l_Weld_0 then
                    l_Weld_0.C0 = v31;
                end;
            end;
        end;
    end;
end;
v10.setButtonState = function(v32, v33, v34)
    local v35 = v6[v32.userCFrame][v33];
    if v35 then
        local l_offset_1 = v35.offset;
        local l_moveOffset_0 = v35.moveOffset;
        if not (not l_offset_1 or not l_moveOffset_0) then
            l_offset_1 = CFrame.new(l_offset_1.p * v32.scale) * (l_offset_1 - l_offset_1.p);
            l_moveOffset_0 = CFrame.new(l_moveOffset_0.p * v32.scale) * (l_moveOffset_0 - l_moveOffset_0.p);
            local v38 = v32.parts[v33];
            if v38 then
                local l_Mesh_1 = v38:FindFirstChild("Mesh");
                local l_Weld_1 = v38:FindFirstChild("Weld");
                if l_Weld_1 then
                    if not v34 then
                        v38.CFrame = v32.origin.CFrame * l_offset_1;
                        l_Weld_1.C0 = l_offset_1;
                    else
                        v38.CFrame = (v32.origin.CFrame * l_offset_1) * l_moveOffset_0;
                        l_Weld_1.C0 = l_offset_1 * l_moveOffset_0;
                    end;
                end;
                if l_Mesh_1 then
                    if not v34 then
                        l_Mesh_1.VertexColor = Vector3.new(1, 1, 1);
                    else
                        l_Mesh_1.VertexColor = Vector3.new(0.5, 0.5, 0.5);
                        return ;
                    end;
                end;
            end;
        end;
        return ;
    else
        return ;
    end;
end;
v10.setTriggerState = function(v41, v42)
    local l_offset_2 = v6[v41.userCFrame].Trigger.offset;
    l_offset_2 = CFrame.new(l_offset_2.p * v41.scale) * (l_offset_2 - l_offset_2.p);
    local l_Trigger_0 = v41.parts.Trigger;
    local l_Weld_2 = l_Trigger_0:FindFirstChild("Weld");
    if l_Weld_2 then
        local v46 = Vector3.new(0, 0.05, 0.025) * v41.scale;
        local v47 = ((l_offset_2 * CFrame.new(v46)) * CFrame.Angles(v42 * 0.3490658503988659 + 0, 0, 0)) * CFrame.new(-v46);
        l_Trigger_0.CFrame = v41.origin.CFrame * v47;
        l_Weld_2.C0 = v47;
    end;
end;
v10.setStickState = function(v48, v49)
    local l_offset_3 = v6[v48.userCFrame].Stick.offset;
    l_offset_3 = CFrame.new(l_offset_3.p * v48.scale) * (l_offset_3 - l_offset_3.p);
    local l_Stick_0 = v48.parts.Stick;
    local l_Weld_3 = l_Stick_0:FindFirstChild("Weld");
    if l_Weld_3 then
        local v53 = Vector3.new(-8.0E-4, -0.0269, 0.0013) * v48.scale;
        local v54 = ((l_offset_3 * CFrame.new(v53)) * CFrame.Angles(v49.Y * 0.3490658503988659 + 0, 0, v49.X * 0.3490658503988659 + 0)) * CFrame.new(-v53);
        l_Stick_0.CFrame = v48.origin.CFrame * v54;
        l_Weld_3.C0 = v54;
    end;
end;
v10.onInputPositionChanged = function(v55, v56)
    if not (not (v55.userCFrame == Enum.UserCFrame.RightHand) or v56.KeyCode ~= Enum.KeyCode.ButtonR2) or v55.userCFrame == Enum.UserCFrame.LeftHand and v56.KeyCode == Enum.KeyCode.ButtonL2 then
        v55:setTriggerState(v56.Position.Z);
        return ;
    elseif not (not (v55.userCFrame == Enum.UserCFrame.RightHand) or v56.KeyCode ~= Enum.KeyCode.Thumbstick2) or v55.userCFrame == Enum.UserCFrame.LeftHand and v56.KeyCode == Enum.KeyCode.Thumbstick1 then
        v55:setStickState(v56.Position);
        return ;
    else
        return ;
    end;
end;
v10.onButtonInputChanged = function(v57, v58, v59)
    if not (((((((((not (v57.userCFrame == Enum.UserCFrame.LeftHand) or v58.KeyCode ~= Enum.KeyCode.ButtonL1) and (not (v57.userCFrame == Enum.UserCFrame.RightHand) or v58.KeyCode ~= Enum.KeyCode.ButtonR1)) and (not (v57.userCFrame == Enum.UserCFrame.LeftHand) or v58.KeyCode ~= Enum.KeyCode.ButtonL3)) and (not (v57.userCFrame == Enum.UserCFrame.RightHand) or v58.KeyCode ~= Enum.KeyCode.ButtonR3)) and (not (v57.userCFrame == Enum.UserCFrame.LeftHand) or v58.KeyCode ~= Enum.KeyCode.ButtonSelect)) and (not (v57.userCFrame == Enum.UserCFrame.RightHand) or v58.KeyCode ~= Enum.KeyCode.ButtonStart)) and v58.KeyCode ~= Enum.KeyCode.ButtonA) and v58.KeyCode ~= Enum.KeyCode.ButtonB) and v58.KeyCode ~= Enum.KeyCode.ButtonX) or v58.KeyCode == Enum.KeyCode.ButtonY then
        v57:setButtonState(v7[v58.KeyCode], v59);
    end;
end;
v10.onInputBegan = function(v60, v61)
    v60:onButtonInputChanged(v61, true);
end;
v10.onInputChanged = function(v62, v63)
    v62:onInputPositionChanged(v63);
end;
v10.onInputEnded = function(v64, v65)
    v64:onInputPositionChanged(v65);
    v64:onButtonInputChanged(v65, false);
end;
v10.onTouchpadModeChanged = function(_, _, _)
end;
v10.destroy = function(v69)
    v69.model:Destroy();
end;
v10.getButtonPart = function(v70, v71)
    local v72 = v7[v71];
    if not v72 then
        return nil;
    else
        return v70.parts[v72];
    end;
end;
return v10;