local l_RunService_0 = game:GetService("RunService");
local l_GuiService_0 = game:GetService("GuiService");
local l_TextService_0 = game:GetService("TextService");
local l_Players_0 = game:GetService("Players");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v5 = nil;
pcall(function()
    v5 = game:GetService("PlatformService");
end);
local v8 = {
    IsFinite = function(v6)
        local v7 = false;
        if v6 == v6 then
            v7 = false;
            if v6 ~= math.huge then
                v7 = v6 ~= -math.huge;
            end;
        end;
        return v7;
    end
};
v8.FindAncestorOfType = function(v9, v10)
    local v11 = v9 and v9.Parent;
    if not v11 then
        return nil;
    elseif not v11:IsA(v10) then
        return v8.FindAncestorOfType(v11, v10);
    else
        return v11;
    end;
end;
v8.CalculateRelativeDimensions = function(v12, v13, v14, _)
    local l_l_GuiService_0_ScreenResolution_0 = l_GuiService_0:GetScreenResolution();
    local v17 = v8.FindAncestorOfType(v12, "SurfaceGui");
    if v17 then
        l_l_GuiService_0_ScreenResolution_0 = v17.CanvasSize;
    end;
    local v18 = v13 / v14;
    if v14.y > 0 and l_l_GuiService_0_ScreenResolution_0.y > 0 then
        v18 = v18 * ((v14.x / v14.y) / (l_l_GuiService_0_ScreenResolution_0.x / l_l_GuiService_0_ScreenResolution_0.y));
        local l_Parent_0 = v12.Parent;
        if l_Parent_0 then
            local v20 = 1 / (l_Parent_0.AbsoluteSize / l_l_GuiService_0_ScreenResolution_0);
            if not (not v8.IsFinite(v20.x) or not v8.IsFinite(v20.y)) then
                return UDim2.new(v20.x * v18.x, 0, v20.y * v18.y, 0);
            end;
        end;
    end;
    return UDim2.new(v18.x, 0, v18.y, 0);
end;
v8.Enum = {
    Anchor = {
        TopLeft = 1,
        TopMiddle = 2,
        TopRight = 3,
        CenterLeft = 4,
        Center = 5,
        CenterRight = 6,
        BottomLeft = 7,
        BottomMiddle = 8,
        BottomRight = 9
    }
};
v8.CalculateFit = function(v21, v22)
    local v23 = v21.AbsoluteSize / v22;
    local v24 = v22 * math.min(v23.X, v23.Y);
    return UDim2.new(0, v24.X, 0, v24.Y);
end;
v8.CalculateFill = function(v25, v26)
    local v27 = v25.AbsoluteSize / v26;
    local v28 = v26 * math.max(v27.X, v27.Y);
    return UDim2.new(0, v28.X, 0, v28.Y);
end;
v8.Create = function(v29)
    return function(v30)
        local v31 = Instance.new(v29);
        for v32, v33 in pairs(v30) do
            if type(v32) == "number" then
                v33.Parent = v31;
            else
                v31[v32] = v33;
            end;
        end;
        return v31;
    end;
end;
local v34 = {};
local function _(v35, v36)
    return v34[v35] and v34[v35][v36];
end;
local function _(v38, v39, v40)
    if not v34[v38] then
        v34[v38] = {};
    end;
    v34[v38][v39] = v40;
end;
v8.Linear = function(v42, v43, v44, v45)
    if v45 <= v42 then
        return v43 + v44;
    else
        return (v44 * v42) / v45 + v43;
    end;
end;
v8.EaseOutQuad = function(v46, v47, v48, v49)
    if v49 <= v46 then
        return v47 + v48;
    else
        v46 = v46 / v49;
        return (-v48 * v46) * (v46 - 2) + v47;
    end;
end;
v8.EaseInOutQuad = function(v50, v51, v52, v53)
    if v53 <= v50 then
        return v51 + v52;
    else
        v50 = v50 / (v53 / 2);
        if v50 < 1 then
            return ((v52 / 2) * v50) * v50 + v51;
        else
            v50 = v50 - 1;
            return (-v52 / 2) * (v50 * (v50 - 2) - 1) + v51;
        end;
    end;
end;
v8.SCurveUDim2 = function(v54, v55, v56, v57)
    if v57 <= v54 then
        return v55 + v56;
    else
        v54 = v54 / v57;
        if v54 < 0 then
            v54 = 0;
        end;
        if v54 > 1 then
            v54 = 1;
        end;
        local v58 = (3 * v54) * v54 - ((2 * v54) * v54) * v54;
        return UDim2.new(v58 * v56.X.Scale, v58 * v56.X.Offset, v58 * v56.Y.Scale, v58 * v56.Y.Offset) + v55;
    end;
end;
v8.SCurveVector2 = function(v59, v60, v61, v62)
    if v62 <= v59 then
        return v60 + v61;
    else
        v59 = v59 / v62;
        if v59 < 0 then
            v59 = 0;
        end;
        if v59 > 1 then
            v59 = 1;
        end;
        local v63 = (3 * v59) * v59 - ((2 * v59) * v59) * v59;
        return Vector2.new(v63 * v61.X, v63 * v61.Y) + v60;
    end;
end;
v8.PropertyTweener = function(v64, v65, v66, v67, v68, v69, v70, v71)
    v69 = v69 or v8.Linear;
    v70 = v70 or false;
    local v72 = {
        StartTime = tick()
    };
    v72.EndTime = v72.StartTime + v68;
    v72.Cancelled = false;
    local v73 = false;
    local v74 = 0;
    local function _(v75)
        if v64 then
            v64[v65] = v75;
        end;
    end;
    local function v79()
        local v77 = v69(1, v66, v67 - v66, 1);
        if v64 then
            v64[v65] = v77;
        end;
        v73 = true;
        v74 = 1;
        local l_v65_0 = v65;
        if (v34[l_v65_0] and v34[l_v65_0][v64]) == v72 then
            v77 = v65;
            l_v65_0 = v64;
            if not v34[v77] then
                v34[v77] = {};
            end;
            v34[v77][l_v65_0] = nil;
        end;
        if v71 then
            v71();
        end;
    end;
    if not v70 and (v34[v65] and v34[v65][v64]) then
        v73 = true;
    else
        if v34[v65] and v34[v65][v64] then
            (v34[v65] and v34[v65][v64]):Cancel();
        end;
        if not v34[v65] then
            v34[v65] = {};
        end;
        v34[v65][v64] = v72;
        local v80 = v69(0, v66, v67 - v66, v68);
        if v64 then
            v64[v65] = v80;
        end;
        spawn(function()
            local v81 = tick();
            while not ((not (v81 < v72.EndTime) or not v64) or v72.Cancelled) do
                local v82 = v69(v81 - v72.StartTime, v66, v67 - v66, v68);
                if v64 then
                    v64[v65] = v82;
                end;
                v74 = v8.Clamp(0, 1, (v81 - v72.StartTime) / v68);
                l_RunService_0.RenderStepped:wait();
                v81 = tick();
            end;
            if not (not (v72.Cancelled == false) or not v64) then
                v79();
            end;
            local l_v65_1 = v65;
            if (v34[l_v65_1] and v34[l_v65_1][v64]) == v72 then
                local l_v65_2 = v65;
                l_v65_1 = v64;
                if not v34[l_v65_2] then
                    v34[l_v65_2] = {};
                end;
                v34[l_v65_2][l_v65_1] = nil;
            end;
        end);
    end;
    v72.GetFinal = function(_)
        return v67;
    end;
    v72.GetPercentComplete = function(_)
        return v74;
    end;
    v72.IsFinished = function(_)
        return v73;
    end;
    v72.Finish = function(v88)
        if not v73 then
            v88:Cancel();
            v79();
        end;
    end;
    v72.Cancel = function(_)
        v72.Cancelled = true;
        v73 = true;
        local l_v65_3 = v65;
        if (v34[l_v65_3] and v34[l_v65_3][v64]) == v72 then
            local l_v65_4 = v65;
            l_v65_3 = v64;
            if not v34[l_v65_4] then
                v34[l_v65_4] = {};
            end;
            v34[l_v65_4][l_v65_3] = nil;
        end;
    end;
    return v72;
end;
v8.CancelTweens = function(v92)
    for v93, v94 in pairs(v92) do
        v94:Finish();
        v92[v93] = nil;
    end;
end;
v8.Signal = function()
    local v95 = {};
    local l_BindableEvent_0 = Instance.new("BindableEvent");
    local v97 = nil;
    local v98 = nil;
    v95.fire = function(_, ...)
        v97 = {
            ...
        };
        v98 = select("#", ...);
        l_BindableEvent_0:Fire();
    end;
    v95.connect = function(_, v101)
        if not v101 then
            error("connect(nil)", 2);
        end;
        return l_BindableEvent_0.Event:connect(function()
            v101(unpack(v97, 1, v98));
        end);
    end;
    v95.wait = function(_)
        l_BindableEvent_0.Event:wait();
        assert(v97, "Missing arg data, likely due to :TweenSize/Position corrupting threadrefs.");
        return unpack(v97, 1, v98);
    end;
    return v95;
end;
v8.DisconnectEvent = function(v103)
    if v103 then
        v103:disconnect();
    end;
    return nil;
end;
v8.DisconnectEvents = function(v104)
    if v104 and type(v104) == "table" then
        for _, v106 in pairs(v104) do
            v106:disconnect();
        end;
    end;
end;
v8.Clamp = function(v107, v108, v109)
    return (math.max(v107, (math.min(v108, v109))));
end;
v8.ClampVector2 = function(v110, v111, v112)
    return Vector2.new(v8.Clamp(v110.x, v111.x, v112.x), v8.Clamp(v110.y, v111.y, v112.y));
end;
v8.TweenPositionOrSet = function(v113, ...)
    if not v113:IsDescendantOf(game) then
        v113.Position = select(1, ...);
        return ;
    else
        v113:TweenPosition(...);
        return ;
    end;
end;
v8.ClampCanvasPosition = function(v114, v115)
    local v116 = not not v114.Parent and v114.Parent.AbsoluteSize or Vector2.new(0, 0);
    local v117 = Vector2.new(v114.CanvasSize.X.Scale * v116.X + v114.CanvasSize.X.Offset, v114.CanvasSize.Y.Scale * v116.Y + v114.CanvasSize.Y.Offset);
    return Vector2.new(v8.Clamp(0, v117.X - v114.AbsoluteWindowSize.X, v115.X), (v8.Clamp(0, v117.Y - v114.AbsoluteWindowSize.Y, v115.Y)));
end;
v8.Round = function(v118, v119)
    v119 = v119 or 1;
    return math.floor((v118 + v119 / 2) / v119) * v119;
end;
v8.ChompString = function(v120)
    return tostring(v120):gsub("^%s+", ""):gsub("%s+$", "");
end;
v8.SpaceNormalizeString = function(v121)
    return tostring(v121):gsub("%s+", " "):gsub("^%s+", ""):gsub("%s+$", "");
end;
local function v124()
    local v122 = l_LocalizationService_0.RobloxLocaleId:lower();
    local v123 = {
        ["en-us"] = ",",
        ["zh-hk"] = "",
        ["zh-tw"] = "",
        ["nb-no"] = "\194\160",
        ["es-es"] = " ",
        ["nl-nl"] = ".",
        ["it-it"] = ".",
        ["tr-tr"] = ".",
        ["ru-ru"] = " ",
        ["fi-fi"] = "\194\160",
        ["da-dk"] = ".",
        ["de-de"] = ".",
        ["fr-fr"] = "\194\160",
        ["pt-br"] = ".",
        ["pt-pt"] = ".",
        ["pl-pl"] = " ",
        ["sv-se"] = " "
    };
    if not v123[v122] then
        return v123["en-us"];
    else
        return v123[v122];
    end;
end;
v8.FormatNumberString = function(v125)
    local v126 = v124();
    local v127 = v8.ChompString(v125);
    local v128 = string.format("%%1%s%%2", v126);
    local _ = nil;
    while true do
        local v130, v131 = string.gsub(v127, "^(-?%d+)(%d%d%d)", v128);
        v127 = v130;
        if not (v131 ~= 0) then
            break;
        end;
    end;
    return v127;
end;
v8.PrettyPrint = function(v132)
    if type(v132) == "table" then
        local v133 = "{";
        for v134, v135 in pairs(v132) do
            v133 = v133 == "{" and v133 or v133 .. ", ";
            if type(v134) == "string" then
                v133 = v133 .. v134 .. " = ";
            elseif not (type(v134) == "number") then
                v133 = v133 .. "[" .. v134 .. "] = ";
            end;
            v133 = v133 .. v8.PrettyPrint(v135);
        end;
        return v133 .. "}";
    elseif type(v132) == "string" then
        return "'" .. v132 .. "'";
    else
        return (tostring(v132));
    end;
end;
local v136 = nil;
do
    local l_v136_0 = v136;
    v8.DebugLog = function(...)
        if l_v136_0 == nil then
            l_v136_0 = v5 and v5:IsSandboxed();
        end;
        if l_v136_0 or v5 == nil then
            print(...);
        end;
    end;
    local function _(v138, v139, v140)
        v139 = v139 or 0.35;
        v140 = v140 or 0.8;
        v138 = v8.Clamp(-1, 1, v138);
        if v138 >= 0 then
            return (v139 * v138) / ((v139 - v138) + 1);
        else
            return -((v140 * -v138) / ((v140 + v138) + 1));
        end;
    end;
    local function _(v142, v143)
        v143 = v143 or 0.1;
        return (1 + v143) * (2 * math.abs(v142) - 1) - v143;
    end;
    local function _(v145)
        return v145 / 2 + 0.5;
    end;
    v8.GamepadLinearToCurve = function(v147, v148, _, _)
        local function v156(v151)
            local v152 = v151 < 0 and -1 or 1;
            local v153 = math.abs(v151);
            local v154 = v148 or 0.1;
            local v155 = (1 + v154) * (2 * math.abs(v153) - 1) - v154;
            v153 = nil;
            v154 = nil;
            v153 = v153 or 0.35;
            v154 = v154 or 0.8;
            v155 = v8.Clamp(-1, 1, v155);
            return v8.Clamp(-1, 1, (if v155 >= 0 then (v153 * v155) / ((v153 - v155) + 1) else -((v154 * -v155) / ((v154 + v155) + 1)) / 2 + 0.5) * v152);
        end;
        local l_new_0 = Vector2.new;
        local l_x_0 = v147.x;
        local v159 = l_x_0 < 0 and -1 or 1;
        local v160 = math.abs(l_x_0);
        local v161 = v148 or 0.1;
        local v162 = (1 + v161) * (2 * math.abs(v160) - 1) - v161;
        v160 = nil;
        v161 = nil;
        v160 = v160 or 0.35;
        v161 = v161 or 0.8;
        v162 = v8.Clamp(-1, 1, v162);
        return l_new_0(v8.Clamp(-1, 1, (if v162 >= 0 then (v160 * v162) / ((v160 - v162) + 1) else -((v161 * -v162) / ((v161 + v162) + 1)) / 2 + 0.5) * v159), v156(v147.y));
    end;
    v8.IsFastFlagEnabled = function(v163)
        local l_status_0, l_result_0 = pcall(function()
            return settings():GetFFlag(v163);
        end);
        if not l_status_0 or l_result_0 then
            if not l_status_0 then
                v8.DebugLog("GetFFlag failed for flag:", v163);
            end;
        else
            v8.DebugLog("Fast Flag:", v163, "is currently not enabled.");
        end;
        return l_status_0 and l_result_0;
    end;
    v8.GetFastVariable = function(v166)
        local l_status_1, l_result_1 = pcall(function()
            return settings():GetFVariable(v166);
        end);
        return l_status_1 and l_result_1;
    end;
    local function _()
        while l_Players_0.LocalPlayer == nil do
            wait();
        end;
        return l_Players_0.LocalPlayer;
    end;
    v8.IsFeatureNonZero = function(v170)
        return (tonumber(v8.GetFastVariable(v170)) or 0) ~= 0;
    end;
    v8.IsFeatureRolledOut = function(v171)
        while l_Players_0.LocalPlayer == nil do
            wait();
        end;
        return l_Players_0.LocalPlayer.UserId % 100 < (tonumber(v8.GetFastVariable(v171)) or 0);
    end;
    v8.ExponentialRepeat = function(v172, v173, v174)
        v174 = v174 or 6;
        local v175 = 1;
        local l_v174_0 = v174;
        while true do
            if not (v175 <= l_v174_0) or not v172() then
                return ;
            elseif not v173() then
                wait(v175 ^ 2);
                v175 = v175 + 1;
            else
                return ;
            end;
        end;
    end;
    v8.SplitString = function(v177, v178)
        local v179 = {};
        if not (not v177 or not v178) then
            for v180 in string.gmatch(v177, "([^" .. v178 .. "]+)") do
                table.insert(v179, v180);
            end;
        end;
        return v179;
    end;
    local function v181(v182, v183, v184)
        if v182 then
            if not v182:IsA("CharacterMesh") then
                if not v182:IsA("FileMesh") then
                    if not v182:IsA("Decal") then
                        if not v182:IsA("Pants") then
                            if v182:IsA("Shirt") then
                                table.insert(v183, v182.ShirtTemplate);
                            end;
                        else
                            table.insert(v183, v182.PantsTemplate);
                        end;
                    else
                        table.insert(v183, v182.Texture);
                    end;
                else
                    table.insert(v183, v182.MeshId);
                    table.insert(v183, v182.TextureId);
                end;
            else
                if v182.MeshId > 0 then
                    table.insert(v183, v184 .. tostring(v182.MeshId));
                end;
                if v182.BaseTextureId > 0 then
                    table.insert(v183, v184 .. tostring(v182.BaseTextureId));
                end;
                if v182.OverlayTextureId > 0 then
                    table.insert(v183, v184 .. tostring(v182.OverlayTextureId));
                end;
            end;
            for _, v186 in pairs(v182:GetChildren()) do
                v181(v186, v183, v184);
            end;
            return ;
        else
            return ;
        end;
    end;
    v8.FindAssetsInModel = function(v187, v188)
        v188 = v188 or "https://assetgame.roblox.com/asset/?id=";
        local v189 = {};
        v181(v187, v189, v188);
        return v189;
    end;
    v8.ConvertFontSizeEnumToInt = function(v190)
        return string.match(v190.Name, "%d+") or 10;
    end;
    v8.Upper = function(v191)
        if not v5 then
            return string.upper(v191);
        else
            return v5:Upper(v191);
        end;
    end;
    v8.SetSelectedCoreObject = function(v192)
        l_GuiService_0.SelectedCoreObject = v192;
    end;
    v8.AddSelectionParent = function(v193, v194)
        l_GuiService_0:AddSelectionParent(v193, v194);
    end;
    v8.RemoveSelectionGroup = function(v195)
        l_GuiService_0:RemoveSelectionGroup(v195);
    end;
    v8.GetTextBounds = function(v196)
        local v197 = false;
        local v198 = nil;
        if v196 then
            if not v196.TextFits then
                if not v196.TextWrapped then
                    v198 = l_TextService_0:GetTextSize(v196.Text, v196.TextSize, v196.Font, Vector2.new(0, 0));
                    v197 = true;
                end;
            else
                return true, v196.TextBounds;
            end;
        end;
        return v197, v198;
    end;
    v8.ResizeButtonWithText = function(v199, v200, v201, v202)
        local v203 = false;
        local v204, v205 = v8.GetTextBounds(v200);
        if (v204 and v199.Size.X.Scale == 0) and v199.Size.Y.Scale == 0 then
            local v206 = Vector2.new(v199.Size.X.Offset, v199.Size.Y.Offset);
            local l_X_0 = v206.X;
            local l_Y_0 = v206.Y;
            if v201 and v206.X < v205.X + v201 * 2 then
                l_X_0 = v205.X + v201 * 2;
                v203 = true;
            end;
            if v202 and v206.Y < v205.Y + v202 * 2 then
                l_Y_0 = v205.Y + v202 * 2;
                v203 = true;
            end;
            if v203 then
                v199.Size = UDim2.new(0, l_X_0, 0, l_Y_0);
            end;
        end;
        return v203;
    end;
    v8.ResizeButtonWithDynamicText = function(v209, v210, v211, v212, v213)
        local v214 = v8.ResizeButtonWithText(v209, v210, v212, v213) or false;
        local l_Text_0 = v210.Text;
        if v211 and #v211 > 0 then
            for v216 = 1, #v211 do
                v210.Text = v211[v216];
                v214 = v8.ResizeButtonWithText(v209, v210, v212, v213) or v214;
            end;
        end;
        v210.Text = l_Text_0;
        return v214;
    end;
end;
return v8;


local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_GlobalSettings_0 = require(l_Shell_0:FindFirstChild("GlobalSettings"));
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
return function(v3, v4, v5, v6)
    local v7 = {};
    local l_RedTextColor_0 = l_GlobalSettings_0.RedTextColor;
    local l_GreenTextColor_0 = l_GlobalSettings_0.GreenTextColor;
    local l_GreyTextColor_0 = l_GlobalSettings_0.GreyTextColor;
    local v11 = l_Utility_0.Create("Frame")({
        Name = "VoteContainer",
        Size = UDim2.new(0, 203, 0, 16),
        Position = v4,
        AnchorPoint = v5,
        BackgroundTransparency = 1,
        LayoutOrder = v6,
        Parent = v3
    });
    local v12 = l_Utility_0.Create("Frame")({
        Name = "VoteContainer",
        BackgroundTransparency = 1,
        Size = UDim2.new(0, 0, 1, 0),
        Position = UDim2.new(0, 0, 0, 0),
        ClipsDescendants = true,
        Parent = v11
    });
    local v13 = l_Utility_0.Create("Frame")({
        Name = "VoteContainer",
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0, 0, 0, 0),
        ClipsDescendants = true,
        Parent = v11
    });
    local v14 = l_Utility_0.Create("Frame")({
        Name = "VoteContainer",
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0, 0, 0, 0),
        ClipsDescendants = true,
        Parent = v11
    });
    local v15 = l_Utility_0.Create("ImageLabel")({
        Name = "BatteryImageRed",
        BackgroundTransparency = 1,
        ImageColor3 = l_RedTextColor_0,
        Parent = v13,
        Image = "rbxasset://textures/ui/Shell/Icons/RatingBar@1080.png",
        Size = UDim2.new(0, v13.AbsoluteSize.X, 0, v13.AbsoluteSize.Y),
        Position = UDim2.new(0, 0, 0, 0),
        Visible = false
    });
    local v16 = v15:Clone();
    v16.ImageColor3 = l_GreenTextColor_0;
    v16.ZIndex = 2;
    v16.Name = "BatteryImageGreen";
    v16.Parent = v12;
    local v17 = v15:Clone();
    v17.ImageColor3 = l_GreyTextColor_0;
    v17.ZIndex = 3;
    v17.Name = "BatteryImageGrey";
    v17.Visible = true;
    v17.Parent = v14;
    v7.SetPercentFilled = function(_, v19)
        if not v19 or not tonumber(v19) then
            v16.Visible = false;
            v15.Visible = false;
            v17.Visible = true;
            return ;
        else
            v17.Visible = false;
            v16.Visible = true;
            v15.Visible = true;
            v19 = l_Utility_0.Round(tonumber(v19), 0.1);
            v12.Size = UDim2.new(v19, 0, 1, 0);
            v13.Position = UDim2.new(v19, 0, 0, 0);
            v15.Position = UDim2.new(-v19, 0, 0, 0);
            return ;
        end;
    end;
    v7.SetImageColorTint = function(_, v21)
        l_RedTextColor_0 = Color3.new(0, 0, 0):Lerp(l_GlobalSettings_0.RedTextColor, v21);
        l_GreenTextColor_0 = Color3.new(0, 0, 0):Lerp(l_GlobalSettings_0.GreenTextColor, v21);
        l_GreyTextColor_0 = Color3.new(0, 0, 0):Lerp(l_GlobalSettings_0.GreyTextColor, v21);
        v15.ImageColor3 = l_RedTextColor_0;
        v16.ImageColor3 = l_GreenTextColor_0;
        v17.ImageColor3 = l_GreyTextColor_0;
    end;
    v7.TweenTransparency = function(_, v23, v24)
        l_Utility_0.PropertyTweener(v15, "ImageTransparency", v15.ImageTransparency, v23, v24, l_Utility_0.Linear, true);
        l_Utility_0.PropertyTweener(v16, "ImageTransparency", v16.ImageTransparency, v23, v24, l_Utility_0.Linear, true);
        l_Utility_0.PropertyTweener(v17, "ImageTransparency", v17.ImageTransparency, v23, v24, l_Utility_0.Linear, true);
    end;
    v7.SetVisible = function(_, v26)
        v11.Visible = v26;
    end;
    v7.GetContainer = function(_)
        return v11;
    end;
    v7.Destroy = function(_)
        v11:Destroy();
        v7 = nil;
    end;
    return v7;
end;


local l_GuiService_0 = game:GetService("GuiService");
local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_SoundManager_0 = require(l_Shell_0:FindFirstChild("SoundManager"));
return function()
    local v4 = l_Utility_0.Create("ImageLabel")({
        Name = "OverrideSelection",
        Image = "rbxasset://textures/ui/SelectionBox.png",
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(19, 19, 43, 43),
        BackgroundTransparency = 1
    });
    local v5 = l_Utility_0.Create("ImageButton")({
        Name = "MoreButton",
        BackgroundTransparency = 1,
        Visible = false,
        SelectionImageObject = v4,
        Image = "rbxasset://textures/ui/Shell/Buttons/MoreButton@1080.png",
        Size = UDim2.new(0, 108, 0, 50);
        l_SoundManager_0:CreateSound("MoveSelection")
    });
    local function _(v6)
        v5.Image = not v6 and "rbxasset://textures/ui/Shell/Buttons/MoreButton@1080.png" or "rbxasset://textures/ui/Shell/Buttons/MoreButtonSelected@1080.png";
        v5.Size = UDim2.new(0, 108, 0, 50);
    end;
    v5.SelectionGained:connect(function()
        v5.Image = "rbxasset://textures/ui/Shell/Buttons/MoreButtonSelected@1080.png";
        v5.Size = UDim2.new(0, 108, 0, 50);
    end);
    v5.SelectionLost:connect(function()
        v5.Image = "rbxasset://textures/ui/Shell/Buttons/MoreButton@1080.png";
        v5.Size = UDim2.new(0, 108, 0, 50);
    end);
    v5.Image = not (l_GuiService_0.SelectedCoreObject == v5) and "rbxasset://textures/ui/Shell/Buttons/MoreButton@1080.png" or "rbxasset://textures/ui/Shell/Buttons/MoreButtonSelected@1080.png";
    v5.Size = UDim2.new(0, 108, 0, 50);
    return v5, v4;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_ImageSetLabel_0 = require(l_CorePackages_0.UIBlox).Core.ImageSet.ImageSetLabel;
local l_getStandardSizeAvatarHeadShotRbxthumb_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.getStandardSizeAvatarHeadShotRbxthumb;
return function(v4)
    return v1.createElement(l_ImageSetLabel_0, {
        Size = UDim2.new(0, 40, 0, 40),
        LayoutOrder = 1,
        Image = l_getStandardSizeAvatarHeadShotRbxthumb_0(v4.userId),
        BackgroundTransparency = 1,
        ScaleType = Enum.ScaleType.Fit
    }, {
        Corner = v1.createElement("UICorner", {
            CornerRadius = UDim.new(0, 20)
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.UIBlox);
local l_Object_0 = require(l_CorePackages_0.Packages.LuauPolyfill).Object;
local l_IconTabGroup_0 = v2.App.Navigation.PrimaryNavBar.IconTabGroup;
local v5 = require(script.Parent.GlobalNavLayout);
local v6 = require(script.Parent.GlobalNavOptionGroup);
return (v1.forwardRef(function(v7, v8)
    local l_primaryTabItems_0 = v7.primaryTabItems;
    local v10 = v7.secondaryTabItems or {};
    local v11 = l_Object_0.assign({}, v7);
    v11.primaryTabItems = nil;
    v11.secondaryTabItems = nil;
    return v1.createElement(v5, l_Object_0.assign({
        ref = v8,
        startSlot = v1.createElement(l_IconTabGroup_0, {
            items = l_primaryTabItems_0
        }),
        endSlot = v1.createElement(v6, {
            items = v10
        })
    }, v11));
end));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Object_0 = require(l_CorePackages_0.Packages.LuauPolyfill).Object;
local v2 = require(l_CorePackages_0.Packages.React);
local function v4(v3)
    return v2.createElement("Frame", {
        Size = UDim2.new(0, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.XY,
        Position = UDim2.new(v3.position == "right" and 1 or 0, 0, 0, 0),
        AnchorPoint = Vector2.new(v3.position == "right" and 1 or 0, 0.5),
        BackgroundTransparency = 1,
        LayoutOrder = 1
    }, v3.children);
end;
return (v2.forwardRef(function(v5, v6)
    local l_startSlot_0 = v5.startSlot;
    local l_endSlot_0 = v5.endSlot;
    v5.startSlot = nil;
    v5.endSlot = nil;
    return v2.createElement("Frame", l_Object_0.assign({
        Size = UDim2.new(1, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        BackgroundTransparency = 1,
        ref = v6
    }, v5), {
        GlobalNavStart = v2.createElement(v4, {}, {
            StartSlot = l_startSlot_0
        }),
        GlobalNavEnd = v2.createElement(v4, {
            position = "right"
        }, {
            EndSlot = l_endSlot_0
        })
    });
end));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.UIBlox);
local l_Interactable_0 = v2.Core.Control.Interactable;
local l_ControlState_0 = v2.Core.Control.Enum.ControlState;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_CursorKind_0 = v2.App.SelectionImage.CursorKind;
local l_useSelectionCursor_0 = v2.App.SelectionImage.useSelectionCursor;
HoverButtonBackground = function()
    local l_BackgroundOnHover_0 = l_useStyle_0().Theme.BackgroundOnHover;
    return v1.createElement("Frame", {
        Size = UDim2.fromScale(1, 1),
        BackgroundColor3 = l_BackgroundOnHover_0.Color,
        BackgroundTransparency = l_BackgroundOnHover_0.Transparency,
        ZIndex = -1
    }, {
        corner = v1.createElement("UICorner", {
            CornerRadius = UDim.new(0, 21)
        })
    });
end;
local function v15(v10, v11, v12)
    local v13 = v10[v11] or v10[l_ControlState_0.Default];
    local v14 = {
        Color = v12.Theme[v13].Color,
        Transparency = v12.Theme[v13].Transparency
    };
    if not (v11 ~= l_ControlState_0.Disabled) or v11 == l_ControlState_0.Pressed then
        v14.Transparency = 0.5 * v14.Transparency + 0.5;
    end;
    return v14;
end;
local function v20(v16)
    local v17, v18 = v1.useState(l_ControlState_0.Initialize);
    return v17, (v1.useCallback(function(v19)
        if v16 and v17 ~= v19 then
            v16(v17, v19);
        end;
        v18(v17);
    end, {
        v17,
        v16
    }));
end;
GlobalNavOption = function(v21)
    local v22 = l_useStyle_0();
    local v23 = l_useSelectionCursor_0(l_CursorKind_0.LargePill);
    local v24, v25 = v20(v21.stateChangeCallback);
    local v26 = v15({
        [l_ControlState_0.Default] = "SystemPrimaryDefault",
        [l_ControlState_0.Hover] = "SystemPrimaryDefault"
    }, v24, v22);
    return v1.createElement(l_Interactable_0, {
        AnchorPoint = Vector2.new(0, 0),
        LayoutOrder = 0,
        Position = UDim2.new(0, 0, 0, 0),
        Size = UDim2.fromOffset(86, 54),
        onStateChanged = v25,
        BackgroundTransparency = 1,
        AutoButtonColor = false,
        [v1.Event.Activated] = v21.onActivated,
        SelectionImageObject = v23
    }, {
        imageLabel = v1.createElement(l_ImageSetLabel_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.fromScale(0.5, 0.5),
            Size = UDim2.fromOffset(42, 42),
            BackgroundTransparency = 1,
            Image = v21.icon,
            ImageColor3 = v26.Color,
            ImageTransparency = v26.Transparency
        }, v21.children),
        hoverBackground = v24 == l_ControlState_0.Hover and v1.createElement(HoverButtonBackground) or nil
    });
end;
return GlobalNavOption;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local v2 = require(l_CorePackages_0.Packages.React);
local l_Object_0 = require(l_CorePackages_0.Packages.LuauPolyfill).Object;
local v4 = require(l_CorePackages_0.UIBlox);
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_StyledTextLabel_0 = v4.App.Text.StyledTextLabel;
local v7 = require(script.Parent.GlobalNavOption);
local function v11()
    local v8, v9 = v2.useState(nil);
    return v8, (v2.useCallback(function(v10)
        v9(v10);
    end, {}));
end;
local function v18(v12)
    local v13, v14 = v2.useState({});
    v2.useEffect(function()
        if not v12 then
            return ;
        else
            local v15 = {};
            for _, v17 in ipairs(v12:GetDescendants()) do
                if v17:IsA("ImageButton") then
                    table.insert(v15, v17);
                end;
            end;
            v14(v15);
            return function()
                v14({});
            end;
        end;
    end, {
        v12,
        v14
    });
    return v13;
end;
local function v23(v19)
    local v20, v21 = v2.useState(nil);
    v2.useEffect(function()
        local v22 = l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):Connect(function()
            v21((table.find(v19, l_GuiService_0.SelectedCoreObject)));
        end);
        return function()
            v22:Disconnect();
        end;
    end, {
        v21,
        v19
    });
    return v20;
end;
createIconsTabs = function(v24, v25)
    local v26 = {};
    for v27, v28 in ipairs(v24) do
        table.insert(v26, v2.createElement(v7, {
            key = v28.label .. "-" .. v27,
            selected = v25 == v27,
            icon = v28.icon,
            onActivated = v28.onActivated
        }));
    end;
    return v26;
end;
local function _(v29, v30)
    if not (v30 ~= nil) or v29 == nil then
        return 0;
    else
        return (v30.AbsolutePosition.X - v29.AbsolutePosition.X) + v30.Size.X.Offset / 2;
    end;
end;
local function _(v32)
    if v32 == nil then
        return 0;
    else
        return (v32.Position.Y.Offset + v32.Size.Y.Offset) - 10;
    end;
end;
GlobalNavOptionGroup = function(v34)
    local v35 = l_useStyle_0();
    local v36, v37 = v11();
    local v38 = v18(v36);
    local v39 = v23(v38);
    local v40 = if not v39 then nil else v34.items[v39].label;
    local v41 = if not v39 then nil else v38[v39];
    return v2.createElement("Frame", {
        Size = if not v34.size then UDim2.new(1, 0, 1, 0) else v34.size,
        AnchorPoint = Vector2.new(1, 0),
        BackgroundTransparency = 1
    }, {
        IconButtons = v2.createElement("Frame", {
            ref = v37,
            Size = if not v34.size then UDim2.new(1, 0, 1, 0) else v34.size,
            BackgroundTransparency = 1
        }, {
            l_Object_0.assign({}, {
                Layout = v2.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Right,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, v34.spacing or 0)
                })
            }, createIconsTabs(v34.items, nil))
        }),
        ToolTip = if not v40 then nil else v2.createElement("Frame", {
            Transparency = 1,
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 300, 1, 0),
            AnchorPoint = Vector2.new(0.5, -1),
            Position = UDim2.new(0, (not (v41 ~= nil) or v36 == nil) and 0 or (v41.AbsolutePosition.X - v36.AbsolutePosition.X) + v41.Size.X.Offset / 2, 0, v41 == nil and 0 or (v41.Position.Y.Offset + v41.Size.Y.Offset) - 10)
        }, {
            Text = v2.createElement(l_StyledTextLabel_0, {
                size = UDim2.new(1, 0, 1, 0),
                text = v40,
                textXAlignment = Enum.TextXAlignment.Center,
                colorStyle = {
                    Color = v35.Theme.TextDefault.Color,
                    Transparency = 0
                },
                fontStyle = v35.Font.Header2
            })
        })
    });
end;
return GlobalNavOptionGroup;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Shell_0 = l_CoreGui_0:FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local v4 = require(l_CorePackages_0.Packages.React);
local v5 = require(l_CorePackages_0.Packages.UIBlox);
local l_ContextBarContext_0 = require(l_Shell_0.XboxPrimaryNav:FindFirstChild("ContextBarContext"));
local l_ContextBar_0 = v5.App.Navigation.PrimaryNavBar.ContextBar;
local l_Images_0 = v5.App.ImageSet.Images;
local v9 = {
    [Enum.KeyCode.ButtonX] = "icons/controls/keys/xboxX",
    [Enum.KeyCode.ButtonY] = "icons/controls/keys/xboxY",
    [Enum.KeyCode.ButtonB] = "icons/controls/keys/xboxB",
    [Enum.KeyCode.ButtonA] = "icons/controls/keys/xboxA"
};
local function v16(v10)
    local v11 = {};
    local l_pairs_0 = pairs;
    local v13 = v10 or {};
    for _, v15 in l_pairs_0(v13) do
        v11[#v11 + 1] = {
            icon = l_Images_0[v9[v15.keyCode]],
            text = v15.text
        };
    end;
    return v11;
end;
return function()
    local v17 = v4.useContext(l_ContextBarContext_0.RoactContext);
    local v18, v19 = v4.useState({});
    v4.useEffect(function()
        v19((v16(v17.actions or {})));
        local v21 = v17.actionsUpdateSignal:connect(function(v20)
            v19((v16(v20)));
        end);
        return function()
            l_Utility_0.DisconnectEvent(v21);
        end;
    end, {});
    if #v18 > 0 then
        return v4.createElement(l_ContextBar_0, {
            position = UDim2.new(0.5, 0, 1, 0),
            anchorPoint = Vector2.new(0.5, 0.5),
            items = v18
        });
    else
        return ;
    end;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Shell_0 = l_CoreGui_0:FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_Shell_0.XboxPrimaryNav:FindFirstChild("CreateContextBarContext"))();
return {
    LuaContext = v4,
    RoactContext = v3.createContext(v4)
};


local l_ContextActionService_0 = game:GetService("ContextActionService");
local l_Utility_0 = require(game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell"):FindFirstChild("Utility"));
return function()
    local v2 = {};
    local v3 = {};
    v2.actionsUpdateSignal = l_Utility_0.Signal();
    local function _(v4)
        v2.actionsUpdateSignal:fire(v4);
    end;
    v2.BindAction = function(_, v7, v8, v9, v10)
        if v10 then
            l_ContextActionService_0:UnbindCoreAction(v8);
            l_ContextActionService_0:BindCoreAction(v7, v10, false, v8);
            v3[v7] = {
                id = v7,
                text = v9,
                keyCode = v8
            };
            v2.actionsUpdateSignal:fire(v3);
            return ;
        else
            return ;
        end;
    end;
    v2.UnbindAction = function(_, v12)
        l_ContextActionService_0:UnbindCoreAction(v12);
        v3[v12] = nil;
        v2.actionsUpdateSignal:fire(v3);
    end;
    v2.UnbindAllActions = function(_)
        for _, v15 in pairs(v3) do
            l_ContextActionService_0:UnbindCoreAction(v15.id);
            v3[v15.id] = nil;
        end;
        v2.actionsUpdateSignal:fire(v3);
    end;
    return v2;
end;


local l_GuiService_0 = game:GetService("GuiService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_Analytics_0 = require(l_Shell_0:FindFirstChild("Analytics"));
local v5 = require(l_CorePackages_0.Promise);
local v6 = require(l_Shell_0.Flags.GetFIntXboxPrimaryNavABLogging);
local v7 = require(l_Shell_0.Flags.GetFFlagXboxFixPrimaryNavABEvents);
return function()
    local v8 = {};
    local v9 = false;
    local v10 = nil;
    v8.tabs = {};
    v8.TabContextUpdateSignal = l_Utility_0.Signal();
    local v11 = nil;
    v8.SelectedTabChanged = l_Utility_0.Signal();
    v8.SelectedTabClicked = l_Utility_0.Signal();
    v8.SelectedTabIdxChanged = l_Utility_0.Signal();
    v8.configurationPromise = v5.new(function(v12, v13)
        v8.resolveConfiguration = function(_, v15)
            return v12(v15);
        end;
        v8.rejectConfiguration = function(_, v17)
            return v13(v17);
        end;
    end);
    v8.configureContext = function(_, v19)
        if not v9 then
            v10 = v19;
            v9 = true;
            v8:resolveConfiguration(v19);
            return ;
        else
            return print("TabDockContext has already been configured and cannot be reconfigured");
        end;
    end;
    v8.activateTab = function(_, v21, v22)
        local v23 = v8.tabs[v21];
        if v23 then
            v8:SetSelectedTab(v23, v22);
        end;
    end;
    v8.GetAnalyticsInfo = function(_)
        return {
            [l_Analytics_0.WidgetNames("WidgetId")] = l_Analytics_0.WidgetNames("TabDockId")
        };
    end;
    v8.FindFocusedTabByGuiObject = function(_, v26)
        if not (not v26 or not v26:IsDescendantOf(v10)) then
            for _, v28 in ipairs(v8.tabs) do
                local v29 = v28 and v28:GetGuiObject();
                if v29 and v29 == v26 then
                    return v28;
                end;
            end;
        end;
    end;
    v8.IsFocused = function(_)
        return v8:FindFocusedTabByGuiObject(l_GuiService_0.SelectedCoreObject) ~= nil;
    end;
    v8.SetSelectedTab = function(_, v32, v33)
        if v32 ~= v11 then
            if v11 then
                v11:SetSelected(false);
            end;
            v11 = v32;
            if v11 then
                v11:SetSelected(true, v33);
            end;
            if v6() > 0 then
                if not v7() then
                    l_Analytics_0.reportNavigation(v33, v32:GetName());
                else
                    l_Analytics_0.reportNavigation(v33, v32:GetId());
                end;
            end;
            v8.SelectedTabClicked:fire(v11);
            v8.SelectedTabChanged:fire(v11);
            v8.SelectedTabIdxChanged:fire(table.find(v8.tabs, v11));
        end;
    end;
    v8.Focus = function(_)
        if v11 then
            v11:SetSelected(true);
            local v35 = v11 and v11:GetGuiObject();
            if v35 then
                l_Utility_0.SetSelectedCoreObject(v35);
            end;
        end;
    end;
    v8.GetSelectedTab = function(_)
        return v11;
    end;
    v8.GetNextTab = function(_)
        if not v11 then
            return ;
        else
            local v38 = table.find(v8.tabs, v11);
            return v38 and v8.tabs[v38 + 1];
        end;
    end;
    v8.GetPreviousTab = function(_)
        if not v11 then
            return ;
        else
            local v40 = table.find(v8.tabs, v11);
            return v40 and v8.tabs[v40 - 1];
        end;
    end;
    v8.AddTabs = function(_, v42)
        v8.tabs = v42;
        v8.TabContextUpdateSignal:fire(v8.tabs);
        v8:SetSelectedTab(v8.tabs[1]);
    end;
    v8.ConnectEvents = function(_)
    end;
    v8.DisconnectEvents = function(_)
    end;
    return v8;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Shell_0 = l_CoreGui_0:FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Analytics_0 = require(l_Shell_0:FindFirstChild("Analytics"));
local l_SoundManager_0 = require(l_Shell_0:FindFirstChild("SoundManager"));
local v5 = require(l_CorePackages_0.Promise);
return function(v6, v7, v8)
    local v9 = {};
    local v10 = false;
    local v11 = nil;
    v9.isConfigured = false;
    v9.name = v6;
    v9.configurationPromise = v5.new(function(v12, v13)
        v9.resolveConfiguration = function(_, v15)
            return v12(v15);
        end;
        v9.rejectConfiguration = function(_, v17)
            return v13(v17);
        end;
    end);
    v9.configureContext = function(_, v19)
        if not v9.isConfigured then
            v11 = v19;
            v9.isConfigured = true;
            v9:resolveConfiguration(v19);
            return ;
        else
            return print("TabDockItemContext has already been configured and cannot be reconfigured");
        end;
    end;
    local function v23(v20, v21)
        if v20 and type(v20.GetAnalyticsInfo) == "function" then
            local l_v20_AnalyticsInfo_0 = v20:GetAnalyticsInfo();
            if not (not (type(l_v20_AnalyticsInfo_0) == "table") or not l_v20_AnalyticsInfo_0[l_Analytics_0.WidgetNames("WidgetId")]) then
                l_v20_AnalyticsInfo_0.Status = v21;
                l_Analytics_0.SetRBXEventStream("Widget", l_v20_AnalyticsInfo_0);
            end;
        end;
    end;
    local function _()
        if v9.isConfigured == false then
            return ;
        else
            if v10 then
                v23(v7, "Select");
            end;
            return ;
        end;
    end;
    v9.GetContentItem = function(_)
        return v7;
    end;
    v9.GetGuiObject = function(_)
        return v11;
    end;
    v9.SetSelected = function(_, v28)
        if v9.isConfigured and v10 ~= v28 then
            v10 = v28;
            if v9.isConfigured == false then
                return ;
            elseif v10 then
                v23(v7, "Select");
            end;
        end;
    end;
    v9.GetSelected = function(_)
        return v10;
    end;
    v9.GetId = function(_)
        return v8;
    end;
    v9.GetName = function(_)
        return v6;
    end;
    v9.GetSize = function(_)
        return v11.Size;
    end;
    v9.OnClick = function(_)
        if v9.isConfigured then
            l_SoundManager_0:Play("ButtonPress");
        end;
    end;
    if not (v9.isConfigured == false or not v10) then
        v23(v7, "Select");
    end;
    return v9;
end;


local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_StoreScreenBase_0 = require(l_Shell_0.XboxPrimaryNav:FindFirstChild("StoreScreenBase"));
local v2 = nil;
pcall(function()
    v2 = game:GetService("PlatformService");
end);
local _ = game:GetService("UserInputService");
local l_BaseScreen_0 = require(l_Shell_0:FindFirstChild("BaseScreen"));
local l_LocalizedStrings_0 = require(l_Shell_0:FindFirstChild("LocalizedStrings"));
local l_Analytics_0 = require(l_Shell_0:FindFirstChild("Analytics"));
return function()
    local v7 = l_BaseScreen_0(true);
    local function _()
        return l_StoreScreenBase_0(v7);
    end;
    v7.GetAnalyticsInfo = function(_)
        return {
            [l_Analytics_0.WidgetNames("WidgetId")] = l_Analytics_0.WidgetNames("StoreScreenId")
        };
    end;
    v7.GetDefaultSelectionObject = function(_)
        return v7.view and v7.view:GetDefaultSelectionObject();
    end;
    v7.GetId = function(_)
        return l_Analytics_0.TabNames("StoreId");
    end;
    v7.view = l_StoreScreenBase_0(v7);
    v7:SetTitle(l_LocalizedStrings_0:LocalizedString("CatalogWord"));
    return v7;
end;


local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Templates_0 = l_Shell_0:FindFirstChild("Templates");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_BaseScreen_0 = require(l_Templates_0:FindFirstChild("BaseScreen"));
local l_StorePane_0 = require(l_Shell_0:FindFirstChild("StorePane"));
return function(v5)
    local v6 = l_BaseScreen_0(v5);
    local v7 = l_StorePane_0((l_Utility_0.Create("Frame")({
        Name = "StoreContainer",
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0, 16, 0, 180),
        BackgroundTransparency = 1,
        Parent = v6.Container
    })));
    v6.GetDefaultSelectionObject = function(_)
        return nil;
    end;
    v6.OnShow = function(_)
        v7:Show();
    end;
    v6.OnHide = function(_)
        v7:Hide();
    end;
    v6.OnFocus = function(_)
        v7:Focus();
    end;
    v6.OnRemoveFocus = function(_)
        v7:RemoveFocus();
    end;
    return v6;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local _ = game:GetService("GuiService");
local l_Shell_0 = l_CoreGui_0:FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_TabDockContext_0 = require(l_Shell_0.XboxPrimaryNav:FindFirstChild("TabDockContext"));
local v6 = require(l_CorePackages_0.Packages.React);
local v7 = require(l_CorePackages_0.UIBlox);
local v8 = require(l_Shell_0.LocalizedStrings);
local l_Images_0 = v7.App.ImageSet.Images;
local v10 = require(script.Parent.Components.GlobalNav);
local v11 = require(script.Parent.Components.AvatarIcon);
findTabInstances = function(v12)
    local v13 = {};
    for _, v15 in ipairs(v12) do
        if not (v15.ClassName ~= "ImageButton") or v15.ClassName == "Focusable" then
            table.insert(v13, v15);
        end;
    end;
    table.sort(v13, function(v16, v17)
        return v16.LayoutOrder < v17.LayoutOrder;
    end);
    return v13;
end;
local v18 = {
    "icons/menu/home_on",
    "icons/menu/games_on",
    "icons/menu/friendsOn",
    "icons/common/search",
    "icons/common/goldrobux",
    "icons/common/settings"
};
local v19 = {};
for _, v21 in v18, nil, nil do
    v19[v21] = l_Images_0[v21];
    v19[v21].ImageRectOffset = v19[v21].ImageRectOffset + Vector2.new(1, 1);
    v19[v21].ImageRectSize = v19[v21].ImageRectSize - Vector2.new(2, 2);
end;
local function _(v22)
    return function()
        v22("ButtonA");
    end;
end;
return function(v24)
    local v25 = v6.useContext(l_TabDockContext_0.RoactContext);
    local v26, v27 = v6.useState(nil);
    local v28, v29 = v6.useState(nil);
    local v31 = v6.useCallback(function(v30)
        if v30 then
            v27(v30);
        end;
    end);
    v6.useEffect(function()
        if not v26 then
            return ;
        else
            local v32 = findTabInstances(v26:FindFirstChild("GlobalNavStart", true):FindFirstChild("MainTabList", true):GetChildren());
            local v33 = v25.SelectedTabIdxChanged:connect(v29);
            local v37 = v25.TabContextUpdateSignal:connect(function(v34)
                for v35, v36 in ipairs(v34) do
                    v36:configureContext(v32[v35]);
                end;
            end);
            v25:configureContext(v26);
            return function()
                l_Utility_0.DisconnectEvent(v33);
                l_Utility_0.DisconnectEvent(v37);
            end;
        end;
    end, {
        v26
    });
    local function v38()
        return v6.createElement(v11, {
            userId = v24.userId
        });
    end;
    local v39 = {};
    local v40 = {
        title = v8:LocalizedString("HomeWord"),
        icon = v19["icons/menu/home_on"]
    };
    local function v42(v41)
        v25:activateTab(1, v41);
    end;
    local l_v42_0 = v42 --[[ copy: 11 -> 15 ]];
    v40.onActivated = function()
        l_v42_0("ButtonA");
    end;
    v40.showRoundedBackground = v28 == 1;
    local v44 = {
        title = v8:LocalizedString("GamesWord"),
        icon = v19["icons/menu/games_on"]
    };
    local function v46(v45)
        v25:activateTab(2, v45);
    end;
    local l_v46_0 = v46 --[[ copy: 12 -> 16 ]];
    v44.onActivated = function()
        l_v46_0("ButtonA");
    end;
    v44.showRoundedBackground = v28 == 2;
    v42 = {
        title = v8:LocalizedString("AvatarWord")
    };
    local function v49(v48)
        v25:activateTab(3, v48);
    end;
    local l_v49_0 = v49 --[[ copy: 13 -> 17 ]];
    v42.onActivated = function()
        l_v49_0("ButtonA");
    end;
    v42.iconComponent = v38;
    v42.showRoundedBackground = v28 == 3;
    v46 = {
        title = v8:LocalizedString("FriendsWord"),
        icon = v19["icons/menu/friendsOn"]
    };
    local function v52(v51)
        v25:activateTab(4, v51);
    end;
    local l_v52_0 = v52 --[[ copy: 14 -> 18 ]];
    v46.onActivated = function()
        l_v52_0("ButtonA");
    end;
    v46.showRoundedBackground = v28 == 4;
    setlist { ['R008[1 to 4]'] = 'R009 to R012' };
    v40 = {};
    v44 = {
        icon = v19["icons/common/search"]
    };
    v46 = v24.onOpenSearch;
    local l_v46_1 = v46 --[[ copy: 12 -> 19 ]];
    v44.onActivated = function()
        l_v46_1("ButtonA");
    end;
    v44.label = v8:LocalizedString("SearchWord");
    v42 = {
        icon = v19["icons/common/goldrobux"]
    };
    v49 = v24.onOpenStore;
    v42.onActivated = function()
        v49("ButtonA");
    end;
    v42.label = v8:LocalizedString("CatalogWord");
    v46 = {
        icon = v19["icons/common/settings"]
    };
    v52 = v24.onOpenSettings;
    v46.onActivated = function()
        v52("ButtonA");
    end;
    v46.label = v8:LocalizedString("SettingsWord");
    setlist { ['R009[1 to 3]'] = 'R010 to R012' };
    return v6.createElement(v10, {
        ref = v31,
        primaryTabItems = v39,
        secondaryTabItems = v40,
        Position = UDim2.new(0, 0, 0.132, 0)
    });
end;


return {
    RoactContext = require(game:GetService("CorePackages").Roact).createContext(nil),
    CreateTabDockContext = require(game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell").XboxPrimaryNav:FindFirstChild("CreateTabDockContext"))
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.UIBlox);
local l_Provider_0 = v2.Core.Style.Provider;
local l_DarkTheme_0 = v2.App.Style.Themes.DarkTheme;
local v5 = {
    BaseSize = 19.2,
    Title = {
        Font = Enum.Font.SourceSansBold,
        RelativeSize = 2,
        RelativeMinSize = 1.5
    },
    Header1 = {
        Font = Enum.Font.SourceSansBold,
        RelativeSize = 1.6875,
        RelativeMinSize = 1.5
    },
    Header2 = {
        Font = Enum.Font.SourceSans,
        RelativeSize = 1.5,
        RelativeMinSize = 1.5
    },
    SubHeader1 = {
        Font = Enum.Font.SourceSans,
        RelativeSize = 1,
        RelativeMinSize = 0.75
    },
    Body = {
        Font = Enum.Font.SourceSans,
        RelativeSize = 1,
        RelativeMinSize = 0.75
    },
    CaptionHeader = {
        Font = Enum.Font.SourceSansSemibold,
        RelativeSize = 0.9375,
        RelativeMinSize = 1
    },
    CaptionSubHeader = {
        Font = Enum.Font.SourceSans,
        RelativeSize = 0.75,
        RelativeMinSize = 0.5625
    },
    CaptionBody = {
        Font = Enum.Font.SourceSansLight,
        RelativeSize = 0.75,
        RelativeMinSize = 0.5625
    },
    Footer = {
        Font = Enum.Font.SourceSans,
        RelativeSize = 0.625,
        RelativeMinSize = 0.5
    }
};
return function(v6)
    return v1.createElement(l_Provider_0, {
        style = {
            Font = v5,
            Theme = l_DarkTheme_0
        }
    }, v6.children);
end;


local v0 = require(game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell").Flags.GetFFlagXboxFixPrimaryNavABEvents);
return ((function()
    local v1 = {};
    local v2 = nil;
    v1.setLastSelectedContent = function(_, v4)
        v2 = v4;
    end;
    v1.getLastContentName = function(_)
        local l_status_0, l_result_0 = pcall(function()
            if not v0() then
                return v2:GetName();
            else
                return v2:GetId();
            end;
        end);
        if not l_status_0 then
            return ;
        else
            return l_result_0;
        end;
    end;
    return v1;
end)());


local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local v1 = require(l_RobloxGui_0.Modules.Common.Create);
local l_TweenService_0 = game:GetService("TweenService");
local v3 = require(l_RobloxGui_0.Modules.Common.Constants);
local v4 = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, -1, false, 0);
local v5 = {};
v5.__index = v5;
local v7 = {
    PrimaryButton = function(v6)
        return v1("ImageLabel")({
            Name = "ShimmerFrame",
            BackgroundColor3 = Color3.fromRGB(0, 0, 0),
            BackgroundTransparency = 0.7,
            ClipsDescendants = true,
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            Visible = false,
            Parent = v6,
            ZIndex = 8;
            v1("ImageLabel")({
                Name = "Shimmer",
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 2, 0),
                Position = UDim2.new(-1, 0, 0, 0),
                Image = v3.SHIMMER_TEXTURE,
                BorderSizePixel = 0,
                ZIndex = 8
            }),
            v1("ImageLabel")({
                Name = "ShimmerOverlay",
                ScaleType = Enum.ScaleType.Slice,
                SliceCenter = Rect.new(8, 8, 9, 9),
                ImageColor3 = v3.COLORS.FLINT,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Image = v3.OVERLAY_TEXTURE,
                Size = UDim2.new(1, 0, 1, 0),
                ZIndex = 9
            })
        });
    end
};
v5.new = function(v8, v9)
    if v9 and v7[v9] then
        local v10 = setmetatable({}, v5);
        v10._shimmer = v7[v9](v8);
        v10._shimmerAnimation = l_TweenService_0:Create(v10._shimmer.Shimmer, v4, {
            Position = UDim2.new(1, 0, 0, 0)
        });
        return v10;
    else
        return ;
    end;
end;
v5.play = function(v11)
    v11._shimmer.Visible = true;
    v11._shimmerAnimation:Play();
end;
v5.stop = function(v12)
    v12._shimmerAnimation:Cancel();
    v12._shimmer.Visible = false;
end;
return v5;


local v0 = {};
local l_CorePackages_0 = game:GetService("CorePackages");
local l_getRbxthumbWithTypeSizeAndOptions_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.getRbxthumbWithTypeSizeAndOptions;
local l_Constants_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.Constants;
local l_Size100x100_0 = Enum.ThumbnailSize.Size100x100;
local l_AvatarThumbnail_0 = Enum.ThumbnailType.AvatarThumbnail;
v0.GetPlayerImage = function(v6, v7, v8, _)
    if not v7 then
        v7 = l_Size100x100_0;
    end;
    if not v8 then
        v8 = l_AvatarThumbnail_0;
    end;
    local v10 = 0;
    if not (v8 ~= Enum.ThumbnailType.HeadShot) or v8 == Enum.ThumbnailType.AvatarBust then
        return l_getRbxthumbWithTypeSizeAndOptions_0(v6, l_Constants_0.RbxthumbTypes.AvatarHeadShot, v7 == Enum.ThumbnailSize.Size48x48 and 48 or (v7 == Enum.ThumbnailSize.Size60x60 and 60 or 150));
    elseif v8 == Enum.ThumbnailType.AvatarThumbnail then
        if not (v7 ~= Enum.ThumbnailSize.Size48x48 and v7 ~= Enum.ThumbnailSize.Size60x60) or v7 == Enum.ThumbnailSize.Size100x100 then
            v10 = 100;
        elseif not (v7 ~= Enum.ThumbnailSize.Size150x150 and v7 ~= Enum.ThumbnailSize.Size180x180) or v7 == Enum.ThumbnailSize.Size352x352 then
            v10 = 352;
        elseif v7 == Enum.ThumbnailSize.Size420x420 then
            v10 = 720;
        end;
        return l_getRbxthumbWithTypeSizeAndOptions_0(v6, l_Constants_0.RbxthumbTypes.Avatar, v10);
    else
        return "ThumbnailErrorForSocialUtil.GetPlayerImage";
    end;
end;
return v0;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.Stats.StatsUtils);
local v1 = {};
v1.__index = v1;
v1.new = function(v2)
    local v3 = {};
    setmetatable(v3, v1);
    v3._barFrame = Instance.new("Frame");
    v3._barFrame.Name = "PS_BarFrame";
    v3._barFrame.BackgroundTransparency = 1;
    v3._lineFrame = Instance.new("Frame");
    v3._lineFrame.Name = "PS_LineFrame";
    v3._lineFrame.BackgroundTransparency = 1;
    v3._showExtras = v2;
    v3._values = {};
    v3._bars = {};
    v3._average = 0;
    v3._target = 0;
    if v3._showExtras then
        v3:_addGraphTarget();
        v3:_addGraphAverage();
    end;
    return v3;
end;
v1.SetZIndex = function(v4, v5)
    v4._barFrame.ZIndex = v5;
    v4._lineFrame.ZIndex = v5 + 1;
    if v4._showExtras then
        v4._targetLine.ZIndex = v4._lineFrame.ZIndex;
        v4._averageLine.ZIndex = v4._lineFrame.ZIndex;
    end;
end;
v1.PlaceInParent = function(v6, v7, v8, v9)
    v6._barFrame.Position = v9;
    v6._barFrame.Size = v8;
    v6._barFrame.Parent = v7;
    v6._lineFrame.Position = v9;
    v6._lineFrame.Size = v8;
    v6._lineFrame.Parent = v7;
end;
v1.SetAxisMax = function(v10, v11)
    v10._axisMax = v11;
end;
v1.SetValues = function(v12, v13)
    v12._values = v13;
end;
v1.SetAverage = function(v14, v15)
    v14._average = v15;
end;
v1.SetTarget = function(v16, v17)
    v16._target = v17;
    v16:_moveGraphTarget();
end;
v1._updateBarCount = function(v18, v19)
    local v20 = {};
    local v21 = #v18._bars;
    for v22 = 1, v21 do
        if v22 <= v21 then
            table.insert(v20, v18._bars[v22]);
        else
            v18._bars[v22].Destroy();
        end;
    end;
    for v23 = v21 + 1, v19 do
        table.insert(v20, v18:_makeNthBar(v23));
    end;
    v18._bars = v20;
end;
v1.Render = function(v24)
    local v25 = #v24._values;
    v24:_updateBarCount(v25);
    for v26, v27 in ipairs(v24._values) do
        v24:_updateBar(v26, v27, v25);
    end;
    if v24._showExtras then
        v24:_moveGraphAverage();
    end;
end;
v1._addGraphTarget = function(v28)
    local l_ImageLabel_0 = Instance.new("ImageLabel");
    l_ImageLabel_0.Name = "TargetLine";
    l_ImageLabel_0.Size = UDim2.new(1, 0, 0, v0.GraphTargetLineInnerThickness);
    l_ImageLabel_0.Image = "rbxasset://textures/ui/PerformanceStats/TargetLine.png";
    l_ImageLabel_0.BackgroundTransparency = 1;
    l_ImageLabel_0.Parent = v28._lineFrame;
    l_ImageLabel_0.ZIndex = v28._lineFrame.ZIndex;
    l_ImageLabel_0.BorderSizePixel = 0;
    l_ImageLabel_0.Changed:connect(function()
        v28:_updateTargetLineImageSize();
    end);
    v28._targetLine = l_ImageLabel_0;
    v28:_updateTargetLineImageSize();
end;
v1._updateTargetLineImageSize = function(v30)
    v30._targetLine.ImageRectSize = v30._targetLine.AbsoluteSize;
end;
v1._addGraphAverage = function(v31)
    local l_Frame_0 = Instance.new("Frame");
    l_Frame_0.Name = "AverageLine";
    l_Frame_0.Size = UDim2.new(1, 0, 0, v0.GraphAverageLineInnerThickness);
    l_Frame_0.Parent = v31._lineFrame;
    l_Frame_0.ZIndex = v31._lineFrame.ZIndex;
    v0.StyleAverageLine(l_Frame_0);
    v31._averageLine = l_Frame_0;
end;
v1._moveGraphTarget = function(v33)
    if v33._targetLine == nil then
        return ;
    else
        v33._targetLine.Position = UDim2.new(0, 0, (v33._axisMax - v33._target) / v33._axisMax, -v0.GraphTargetLineInnerThickness / 2);
        return ;
    end;
end;
v1._moveGraphAverage = function(v34)
    if v34._averageLine == nil then
        return ;
    else
        v34._averageLine.Position = UDim2.new(0, 0, (v34._axisMax - math.min(v34._average, v34._axisMax)) / v34._axisMax, -v0.GraphAverageLineTotalThickness / 2);
        return ;
    end;
end;
v1._makeNthBar = function(v35, v36)
    local v37 = v36 - 1;
    local l_Frame_1 = Instance.new("Frame");
    l_Frame_1.Name = string.format("Bar_%d", v37);
    l_Frame_1.Parent = v35._barFrame;
    l_Frame_1.ZIndex = v35._barFrame.ZIndex;
    l_Frame_1.BorderSizePixel = 0;
    return l_Frame_1;
end;
v1._updateBar = function(v39, v40, v41, v42)
    local v43 = v39._bars[v40];
    local v44 = v40 - 1;
    local v45 = math.max(0, (math.min(v41, v39._axisMax)));
    v43.Position = UDim2.new(v44 / v42, 0, (v39._axisMax - v45) / v39._axisMax, 0);
    v43.Size = UDim2.new(1 / v42, 0, v45 / v39._axisMax, 0);
    v43.BackgroundColor3 = v0.GetColorForValue(v41, v39._target);
end;
return v1;


local v0 = Color3.new(0.35, 0.55, 0.35);
local v1 = Color3.new(0.15, 0.35, 0.15);
local v2 = Color3.new(1, 1, 1);
local v3 = Color3.new(1, 1, 1);
local v4 = Color3.new(1, 1, 1);
local v5 = UDim2.new(0, 0, 0, 0);
local v6 = UDim2.new(1, -18, 0, 2);
local v7 = UDim2.new(0, 16, 0, 16);
local v8 = UDim2.new(1, -100, 0, 0);
local v9 = UDim2.new(0, 100, 0, 20);
local _ = game:GetService("CoreGui");
local function _(v11)
    v11.TextXAlignment = Enum.TextXAlignment.Center;
    v11.TextColor3 = v2;
    v11.BackgroundTransparency = 1;
    v11.BorderColor3 = v4;
    v11.BorderSizePixel = 1;
    v11.Position = v6;
    v11.Size = v7;
end;
local function _(v13)
    v13.TextXAlignment = Enum.TextXAlignment.Left;
    v13.TextColor3 = v2;
    v13.BackgroundTransparency = 1;
    v13.Position = UDim2.new(0, 5, 0, 0);
    v13.Size = UDim2.new(1, -10, 1, 0);
end;
local function _(v15)
    v15.BorderColor3 = v3;
    v15.BorderSizePixel = 1;
    v15.BackgroundTransparency = 0.6;
end;
local v17 = {};
v17.__index = v17;
v17.new = function(v18)
    local v19 = {};
    setmetatable(v19, v17);
    v19._treeViewItem = v18;
    v19._expanded = true;
    v19._expansionToggleCallback = nil;
    v19._frame = Instance.new("Frame");
    v19._frame.Name = "MemoryAnalyzerRowClassFrame";
    v19._frame.BackgroundTransparency = 1;
    v19._buttonFrame = Instance.new("Frame");
    v19._buttonFrame.Name = "ButtonFrame";
    v19._buttonFrame.Parent = v19._frame;
    v19._buttonFrame.Position = v5;
    local v20 = (1 + v18:getStackDepth()) * 20;
    v19._buttonFrame.Size = UDim2.new(0, v20, 0, 20);
    local l__buttonFrame_0 = v19._buttonFrame;
    l__buttonFrame_0.BorderColor3 = v3;
    l__buttonFrame_0.BorderSizePixel = 1;
    l__buttonFrame_0.BackgroundTransparency = 0.6;
    v19._button = Instance.new("TextButton");
    v19._button.Name = "Button";
    v19._button.Parent = v19._buttonFrame;
    l__buttonFrame_0 = v19._button;
    l__buttonFrame_0.TextXAlignment = Enum.TextXAlignment.Center;
    l__buttonFrame_0.TextColor3 = v2;
    l__buttonFrame_0.BackgroundTransparency = 1;
    l__buttonFrame_0.BorderColor3 = v4;
    l__buttonFrame_0.BorderSizePixel = 1;
    l__buttonFrame_0.Position = v6;
    l__buttonFrame_0.Size = v7;
    v19._button.MouseButton1Click:connect(function()
        v19:__toggleExpansion();
    end);
    v19:__updateButtonState();
    v19._labelFrame = Instance.new("Frame");
    v19._labelFrame.Name = "LabelFrame";
    v19._labelFrame.Parent = v19._frame;
    v19._labelFrame.Position = UDim2.new(0, v20, 0, 0);
    v19._labelFrame.Size = UDim2.new(1, -v20 - 100, 0, 20);
    l__buttonFrame_0 = v19._labelFrame;
    l__buttonFrame_0.BorderColor3 = v3;
    l__buttonFrame_0.BorderSizePixel = 1;
    l__buttonFrame_0.BackgroundTransparency = 0.6;
    v19._labelTextLabel = Instance.new("TextLabel");
    v19._labelTextLabel.Name = "Label";
    v19._labelTextLabel.Parent = v19._labelFrame;
    l__buttonFrame_0 = v19._labelTextLabel;
    l__buttonFrame_0.TextXAlignment = Enum.TextXAlignment.Left;
    l__buttonFrame_0.TextColor3 = v2;
    l__buttonFrame_0.BackgroundTransparency = 1;
    l__buttonFrame_0.Position = UDim2.new(0, 5, 0, 0);
    l__buttonFrame_0.Size = UDim2.new(1, -10, 1, 0);
    v19._labelTextLabel.Text = v18:getLabel();
    v19._valueFrame = Instance.new("Frame");
    v19._valueFrame.Name = "ValueFrame";
    v19._valueFrame.Parent = v19._frame;
    v19._valueFrame.Position = v8;
    v19._valueFrame.Size = v9;
    l__buttonFrame_0 = v19._valueFrame;
    l__buttonFrame_0.BorderColor3 = v3;
    l__buttonFrame_0.BorderSizePixel = 1;
    l__buttonFrame_0.BackgroundTransparency = 0.6;
    v19._valueTextLabel = Instance.new("TextLabel");
    v19._valueTextLabel.Name = "Value";
    v19._valueTextLabel.Parent = v19._valueFrame;
    l__buttonFrame_0 = v19._valueTextLabel;
    l__buttonFrame_0.TextXAlignment = Enum.TextXAlignment.Left;
    l__buttonFrame_0.TextColor3 = v2;
    l__buttonFrame_0.BackgroundTransparency = 1;
    l__buttonFrame_0.Position = UDim2.new(0, 5, 0, 0);
    l__buttonFrame_0.Size = UDim2.new(1, -10, 1, 0);
    v19._valueHasBeenNonZero = false;
    v19:updateValue();
    return v19;
end;
v17.isExpanded = function(v22)
    return v22._expanded;
end;
v17.valueHasBeenNonZero = function(v23)
    return v23._valueHasBeenNonZero;
end;
v17.setExpansionToggleCallback = function(v24, v25)
    v24._expansionToggleCallback = v25;
end;
v17.__toggleExpansion = function(v26)
    v26._expanded = not v26._expanded;
    v26:__updateButtonState();
    if v26._expansionToggleCallback ~= nil then
        v26._expansionToggleCallback();
    end;
end;
v17.__updateButtonState = function(v27)
    if #v27._treeViewItem:getChildren() == 0 then
        v27._button.Visible = false;
        return ;
    else
        v27._button.Visible = true;
        if not v27._expanded then
            v27._button.Text = "+";
            return ;
        else
            v27._button.Text = "-";
            return ;
        end;
    end;
end;
v17.updateValue = function(v28)
    if v28._treeViewItem:getValue() >= 0.001 then
        v28._valueHasBeenNonZero = true;
    end;
    v28._valueTextLabel.Text = string.format("%.3f", v28._treeViewItem:getValue());
end;
v17.setZIndex = function(v29, v30)
    v29._frame.ZIndex = v30;
    v29._labelTextLabel.ZIndex = v30;
    v29._valueTextLabel.ZIndex = v30;
end;
v17.setRowValue = function(v31, v32)
    v31._valueTextLabel.Text = string.format("%.3f", v32);
end;
v17.getFrame = function(v33)
    return v33._frame;
end;
v17.setRowNumber = function(v34, v35)
    if v35 % 2 == 1 then
        v34._buttonFrame.BackgroundColor3 = v0;
        v34._labelFrame.BackgroundColor3 = v0;
        v34._valueFrame.BackgroundColor3 = v0;
        return ;
    else
        v34._buttonFrame.BackgroundColor3 = v1;
        v34._labelFrame.BackgroundColor3 = v1;
        v34._valueFrame.BackgroundColor3 = v1;
        return ;
    end;
end;
local v36 = {};
v36.__index = v36;
v36.Indent = string.rep(" ", 4);
v36.new = function(v37)
    local v38 = {};
    setmetatable(v38, v36);
    v38._frame = Instance.new("Frame");
    v38._frame.Name = "MemoryAnalyzerClassFrame";
    v38._frame.ZIndex = v37.ZIndex;
    v38._frame.BackgroundTransparency = 1;
    v38._rowsByTreeViewItem = {};
    v38._layoutDirty = false;
    v38._heightChangedCallback = nil;
    v38._heightInPix = 0;
    v38._frame.Parent = v37;
    return v38;
end;
v36.getMemoryUsageTree = function(_)
    return nil;
end;
v36.setHeightChangedCallback = function(v40, v41)
    v40._heightChangedCallback = v41;
end;
v36.__getOrMakeRowForTreeViewItem = function(v42, v43)
    if v42._rowsByTreeViewItem[v43] == nil then
        local v44 = v17.new(v43);
        v44:setExpansionToggleCallback(function()
            v42:__layoutRows();
        end);
        v44:getFrame().Parent = v42._frame;
        v42._rowsByTreeViewItem[v43] = v44;
        v42._layoutDirty = true;
    end;
    return v42._rowsByTreeViewItem[v43];
end;
v36.__recursiveUpdateStatValue = function(v45, v46)
    v45:__getOrMakeRowForTreeViewItem(v46):updateValue();
    for _, v48 in ipairs((v46:getChildren())) do
        v45:__recursiveUpdateStatValue(v48);
    end;
end;
v36.renderUpdates = function(v49)
    local v50 = v49:getMemoryUsageTree();
    if v50 ~= nil then
        v49:__recursiveUpdateStatValue(v50);
    end;
    if v49._layoutDirty then
        v49:__layoutRows();
    end;
end;
v36.__layoutRows = function(v51)
    v51._layoutDirty = false;
    v51._heightInPix = 0;
    if v51:getMemoryUsageTree() ~= nil then
        v51:__recursiveLayoutTreeViewItem(v51:getMemoryUsageTree(), true);
    end;
    v51._frame.Size = UDim2.new(1, 0, 0, v51._heightInPix);
    v51._frame.Position = UDim2.new(0, 0, 0, 0);
    if v51._heightChangedCallback then
        v51._heightChangedCallback(v51._heightInPix);
    end;
end;
v36.__recursiveLayoutTreeViewItem = function(v52, v53, v54)
    local v55 = v52:__getOrMakeRowForTreeViewItem(v53);
    local v56 = v55:getFrame();
    v54 = v54 and v55:valueHasBeenNonZero();
    if not v54 then
        v56.Visible = false;
    else
        v56.Visible = true;
        v56.Size = UDim2.new(1, 0, 0, 20);
        v56.Position = UDim2.new(0, 0, 0, v52._heightInPix);
        v55:setZIndex(v52._frame.ZIndex);
        v55:setRowNumber(v52._heightInPix / 20);
        v52._heightInPix = v52._heightInPix + 20;
    end;
    for _, v58 in ipairs((v53:getChildren())) do
        v52:__recursiveLayoutTreeViewItem(v58, v55:isExpanded() and v54);
    end;
end;
v36.getHeightInPix = function(v59)
    return v59._heightInPix;
end;
return v36;


local l_Stats_0 = game:GetService("Stats");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CoreGui_0.RobloxGui.Modules.Stats.BaseMemoryAnalyzer);
local v3 = require(l_CoreGui_0.RobloxGui.Modules.Common.CommonUtil);
local v4 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsUtils);
local v5 = require(l_CoreGui_0.RobloxGui.Modules.Stats.TreeViewItem);
local function _()
    local v6 = l_Stats_0 and l_Stats_0:FindFirstChild("PerformanceStats");
    if v6 == nil then
        return nil;
    else
        return (v6:FindFirstChild(v4.StatNames[v4.StatType_Memory]));
    end;
end;
local function v8(v9, v10)
    v9:setLabelAndValue(v4.GetMemoryAnalyzerStatName(v10.Name), (v10:GetValue()));
    for _, v12 in ipairs((v3.SortByName((v10:GetChildren())))) do
        v8(v9:getOrMakeChildById(v12.Name), v12);
    end;
end;
local v13 = {};
setmetatable(v13, v2);
v13.__index = v13;
v13.new = function(v14)
    local v15 = v2.new(v14);
    setmetatable(v15, v13);
    v15._rootTreeViewItem = nil;
    v15._shouldListenForUpdates = false;
    v15._spawnedLoopScheduled = false;
    return v15;
end;
v13.startListeningForUpdates = function(v16)
    v16._shouldListenForUpdates = true;
    if not v16._spawnedLoopScheduled then
        v16._spawnedLoopScheduled = true;
        spawn(function()
            while v16._shouldListenForUpdates do
                v16:refreshMemoryUsageTree();
                v16:renderUpdates();
                wait(1);
            end;
            v16._spawnedLoopScheduled = false;
        end);
        return ;
    else
        return ;
    end;
end;
v13.stopListeningForUpdates = function(v17)
    v17._shouldListenForUpdates = false;
end;
v13.refreshMemoryUsageTree = function(v18)
    if v18._rootTreeViewItem == nil then
        v18._rootTreeViewItem = v5.new("root", nil);
    end;
    local v19 = l_Stats_0 and l_Stats_0:FindFirstChild("PerformanceStats");
    local v20 = if v19 == nil then nil else v19:FindFirstChild(v4.StatNames[v4.StatType_Memory]);
    if v20 == nil then
        return nil;
    else
        v8(v18._rootTreeViewItem, v20);
        return ;
    end;
end;
v13.getMemoryUsageTree = function(v21)
    return v21._rootTreeViewItem;
end;
return v13;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsUtils);
local v2 = require(l_CoreGui_0.RobloxGui.Modules.RobloxTranslator);
LocalizedGetKey = function(v3)
    local l_v3_0 = v3;
    pcall(function()
        l_v3_0 = v2:FormatByKey(v3);
    end);
    return l_v3_0;
end;
local l_status_0, l_result_0 = pcall(function()
    return settings():GetFFlag("UseNotificationsLocalization");
end);
local v7 = l_status_0 and l_result_0;
local v8 = {};
v8.__index = v8;
v8.new = function(v9, v10)
    local v11 = {};
    setmetatable(v11, v8);
    v11._frame = Instance.new("Frame");
    v11._frame.Name = "PS_DecoratedValueLabel";
    v11._frame.BackgroundTransparency = 1;
    if v7 == true then
        v11._valueName = LocalizedGetKey(v10);
    else
        v11._valueName = v10;
    end;
    v11._statType = v9;
    v11._decorationFrame = Instance.new("Frame");
    v11._decorationFrame.Name = "PS_Decoration";
    v11._decorationFrame.Parent = v11._frame;
    v11._decorationFrame.Position = UDim2.new(0, 0, 0.5, -v1.DecorationSize / 2);
    v11._decorationFrame.Size = UDim2.new(0, v1.DecorationSize, 0, v1.DecorationSize);
    v11._decorationFrame.BackgroundTransparency = 1;
    v11._label = Instance.new("TextLabel");
    v11._label.Name = "Label";
    v11._label.Parent = v11._frame;
    v11._label.Position = UDim2.new(0, v1.DecorationSize + v1.DecorationMargin, 0, 0);
    v11._label.Size = UDim2.new(1, -(v1.DecorationSize + v1.DecorationMargin), 1, 0);
    v11._label.FontSize = v1.PanelValueFontSize;
    v11._label.TextXAlignment = Enum.TextXAlignment.Left;
    v11._label.TextYAlignment = Enum.TextYAlignment.Center;
    v1.StyleTextWidget(v11._label);
    return v11;
end;
v8.SetZIndex = function(v12, v13)
    v12._frame.ZIndex = v13;
    v12._decorationFrame.ZIndex = v13;
    v12._label.ZIndex = v13;
end;
v8.PlaceInParent = function(v14, v15, v16, v17)
    v14._frame.Parent = v15;
    v14._frame.Size = v16;
    v14._frame.Position = v17;
end;
v8.GetDecorationFrame = function(v18)
    return v18._decorationFrame;
end;
v8.SetValue = function(v19, v20)
    v19._label.Text = string.format("%s: %s", v19._valueName, (v1.FormatTypedValue(v20, v19._statType)));
end;
return v8;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(l_CoreGui_0.RobloxGui.Modules.Stats.BaseMemoryAnalyzer);
local v2 = require(l_CoreGui_0.RobloxGui.Modules.Stats.TreeViewItem);
local _ = require(l_CoreGui_0.RobloxGui.Modules.Common.CommonUtil);
local function v10(v4, v5)
    local v6 = 0;
    for v7, v8 in pairs(v5) do
        local v9 = v8 / 1048576;
        v6 = v6 + v9;
        v4:getOrMakeChildById(v7):setLabelAndValue(v7, v9);
    end;
    return v6;
end;
local v11 = {};
setmetatable(v11, v1);
v11.__index = v11;
v11.new = function(v12)
    local v13 = v1.new(v12);
    setmetatable(v13, v11);
    v13._cachedRootTreeViewItem = nil;
    v13._coreTreeViewItem = nil;
    v13._placeTreeViewItem = nil;
    v13._untrackedTreeViewItem = nil;
    v13._isVisible = false;
    return v13;
end;
v11.filterServerMemoryTreeStats = function(_, v15)
    if v15.ServerMemoryTree == nil then
        return {};
    else
        return v15.ServerMemoryTree;
    end;
end;
v11.updateWithTreeStats = function(v16, v17)
    local v18 = 0;
    if v16._cachedRootTreeViewItem == nil then
        v16._cachedRootTreeViewItem = v2.new("root", nil);
        v16._coreTreeViewItem = v16._cachedRootTreeViewItem:getOrMakeChildById("CoreMemory");
        v16._placeTreeViewItem = v16._cachedRootTreeViewItem:getOrMakeChildById("PlaceMemory");
        v16._untrackedTreeViewItem = v16._cachedRootTreeViewItem:getOrMakeChildById("UntrackedMemory");
    end;
    for v19, v20 in pairs(v17) do
        if v19 == "totalServerMemory" then
            v18 = v20 / 1048576;
        elseif v19 == "developerTags" then
            v16._placeTreeViewItem:setLabelAndValue("PlaceMemory", (v10(v16._placeTreeViewItem, v20)));
        elseif v19 == "internalCategories" then
            v16._coreTreeViewItem:setLabelAndValue("CoreMemory", (v10(v16._coreTreeViewItem, v20)));
        end;
    end;
    v16._cachedRootTreeViewItem:setLabelAndValue("Memory", v18);
    v16._untrackedTreeViewItem:setLabelAndValue("UntrackedMemory", v18 - (v16._coreTreeViewItem:getValue() + v16._placeTreeViewItem:getValue()));
    v16:renderUpdates();
end;
v11.getMemoryUsageTree = function(v21)
    return v21._cachedRootTreeViewItem;
end;
v11.setVisible = function(v22, v23)
    v22._isVisible = v23;
    if v22._isVisible then
        v22:renderUpdates();
    end;
end;
return v11;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.Stats.StatsUtils);
local v1 = {};
v1.__index = v1;
v1.new = function(v2, v3, v4)
    local v5 = {};
    setmetatable(v5, v1);
    v5._statType = v2;
    v5._numSamples = v3;
    v5._pauseBetweenSamples = v4;
    v5._statName = v0.StatNames[v5._statType];
    v5._statMaxName = v0.StatMaxNames[v5._statType];
    v5._samples = {};
    for v6 = 0, v3 - 1 do
        v5._samples[v6] = 0;
    end;
    v5._oldestIndex = 0;
    v5._listeners = {};
    v5._nextListenerId = 1001;
    return v5;
end;
v1.AddListener = function(v7, v8)
    local l__nextListenerId_0 = v7._nextListenerId;
    v7._nextListenerId = v7._nextListenerId + 1;
    v7._listeners[l__nextListenerId_0] = v8;
    return l__nextListenerId_0;
end;
v1.RemoveListener = function(v10, v11)
    v10._listeners[v11] = nil;
end;
v1._notifyAllListeners = function(v12)
    for _, v14 in pairs(v12._listeners) do
        v14();
    end;
end;
v1.StartListening = function(v15)
    if v15._listening == true then
        return ;
    else
        spawn(function()
            v15._listening = true;
            while v15._listening do
                v15:_storeStatValue((v15:_getStatValue()));
                v15:_notifyAllListeners();
                wait(v15._pauseBetweenSamples);
            end;
        end);
        return ;
    end;
end;
v1.StopListening = function(v16)
    v16._listening = false;
end;
v1.GetValues = function(v17)
    local v18 = {};
    local _ = nil;
    for v20 = 0, v17._numSamples - 1 do
        v18[v20 + 1] = v17._samples[(v17._oldestIndex + v20) % v17._numSamples];
    end;
    return v18;
end;
v1.GetAverage = function(v21)
    local v22 = 0;
    for v23 = 0, v21._numSamples - 1 do
        v22 = v22 + v21._samples[v23];
    end;
    return v22 / v21._numSamples;
end;
v1.GetLatestValue = function(v24)
    return v24._samples[((v24._oldestIndex + v24._numSamples) - 1) % v24._numSamples];
end;
v1._storeStatValue = function(v25, v26)
    v25._samples[v25._oldestIndex] = v26;
    v25._oldestIndex = (v25._oldestIndex + 1) % v25._numSamples;
end;
v1._getStatValue = function(v27)
    local l_Stats_0 = game:GetService("Stats");
    if l_Stats_0 == nil then
        return 0;
    else
        local l_PerformanceStats_0 = l_Stats_0:FindFirstChild("PerformanceStats");
        if l_PerformanceStats_0 == nil then
            return 0;
        else
            local l_l_PerformanceStats_0_FirstChild_0 = l_PerformanceStats_0:FindFirstChild(v27._statName);
            if l_l_PerformanceStats_0_FirstChild_0 == nil then
                return 0;
            else
                return l_l_PerformanceStats_0_FirstChild_0:GetValue();
            end;
        end;
    end;
end;
v1.GetTarget = function(v31)
    local l_Stats_1 = game:GetService("Stats");
    if l_Stats_1 == nil then
        return 0;
    else
        local l_PerformanceStats_1 = l_Stats_1:FindFirstChild("PerformanceStats");
        if l_PerformanceStats_1 == nil then
            return 0;
        else
            local l_l_PerformanceStats_1_FirstChild_0 = l_PerformanceStats_1:FindFirstChild(v31._statMaxName);
            if l_l_PerformanceStats_1_FirstChild_0 == nil then
                return 0;
            else
                return l_l_PerformanceStats_1_FirstChild_0:GetValue();
            end;
        end;
    end;
end;
return v1;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsUtils);
local v2 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsAggregator);
local v3 = {};
v3.__index = v3;
v3.SecondsBetweenUpdate = 1;
v3.NumSamplesToKeep = 20;
local v4 = nil;
v3.getSingleton = function()
    if v4 == nil then
        v4 = v3.__new();
        v4:StartListening();
    end;
    return v4;
end;
v3.__new = function()
    local v5 = {};
    setmetatable(v5, v3);
    v5._statsAggregators = {};
    for _, v7 in ipairs(v1.AllStatTypes) do
        v5._statsAggregators[v7] = v2.new(v7, v3.NumSamplesToKeep, v3.SecondsBetweenUpdate);
    end;
    return v5;
end;
v3.StartListening = function(v8)
    for _, v10 in pairs(v8._statsAggregators) do
        v10:StartListening();
    end;
end;
v3.StopListening = function(v11)
    for _, v13 in pairs(v11._statsAggregators) do
        v13:StopListening();
    end;
end;
v3.GetAggregator = function(v14, v15)
    return v14._statsAggregators[v15];
end;
return v3;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsUtils);
local v2 = require(l_CoreGui_0.RobloxGui.Modules.Stats.BarGraph);
local v3 = {};
v3.__index = v3;
v3.new = function(v4, v5)
    local v6 = {};
    setmetatable(v6, v3);
    v6._statType = v4;
    v6._statMaxName = v1.StatMaxNames[v4];
    v6._isMaximized = v5;
    v6._values = {};
    v6._average = 0;
    v6._target = 0;
    v6._axisMax = 0;
    v6._frame = Instance.new("Frame");
    v6._frame.Name = "PS_AnnotatedGraph";
    v6._frame.BackgroundTransparency = 1;
    v6._frame.ZIndex = v1.GraphZIndex;
    v6._topLabel = Instance.new("TextLabel");
    v6._topLabel.Name = "PS_TopAxisLabel";
    v6._topLabel.Parent = v6._frame;
    v6._topLabel.TextXAlignment = Enum.TextXAlignment.Left;
    v6._topLabel.TextYAlignment = Enum.TextYAlignment.Top;
    v6._topLabel.FontSize = v1.PanelGraphFontSize;
    v6._bottomLabel = Instance.new("TextLabel");
    v6._bottomLabel.Name = "PS_BottomAxisLabel";
    v6._bottomLabel.Parent = v6._frame;
    v6._bottomLabel.TextXAlignment = Enum.TextXAlignment.Left;
    v6._bottomLabel.TextYAlignment = Enum.TextYAlignment.Bottom;
    v6._bottomLabel.FontSize = v1.PanelGraphFontSize;
    v6._graph = v2.new(v5);
    v1.StyleTextWidget(v6._topLabel);
    v1.StyleTextWidget(v6._bottomLabel);
    v6:_layoutElements();
    return v6;
end;
v3.SetZIndex = function(v7, v8)
    v7._frame.ZIndex = v8;
    v7._topLabel.ZIndex = v8;
    v7._bottomLabel.ZIndex = v8;
    v7._graph:SetZIndex(v8);
end;
v3._layoutElements = function(v9)
    local v10 = nil;
    if not v9._isMaximized then
        v10 = 0;
        v9._topLabel.Visible = false;
        v9._bottomLabel.Visible = false;
    else
        v10 = 30;
        v9._topLabel.Visible = true;
        v9._bottomLabel.Visible = true;
    end;
    local v11 = UDim2.new(0, 10, 0, 10);
    local v12 = UDim2.new(1, -(20 + v10), 1, -20);
    local v13 = UDim2.new(1, -(10 + v10), 0, 10);
    local v14 = UDim2.new(0, v10, 0.333, -20);
    local v15 = UDim2.new(1, -(10 + v10), 0.666, 10);
    local v16 = UDim2.new(0, v10, 0.333, -20);
    v9._topLabel.Size = v14;
    v9._topLabel.Position = v13;
    v9._bottomLabel.Size = v16;
    v9._bottomLabel.Position = v15;
    v9._graph:PlaceInParent(v9._frame, v12, v11);
end;
v3.PlaceInParent = function(v17, v18, v19, v20)
    v17._frame.Position = v20;
    v17._frame.Size = v19;
    v17._frame.Parent = v18;
end;
v3._getTarget = function(v21)
    if v21._performanceStats == nil then
        return 0;
    else
        local l_FirstChild_0 = v21._performanceStats:FindFirstChild(v21._statMaxName);
        if l_FirstChild_0 == nil then
            return 0;
        else
            return l_FirstChild_0:GetValue();
        end;
    end;
end;
v3._render = function(v23)
    v23._graph:SetAxisMax(v23._axisMax);
    v23._graph:SetValues(v23._values);
    v23._graph:SetAverage(v23._average);
    v23._graph:SetTarget(v23._target);
    v23._graph:Render();
    v23._topLabel.Text = string.format("%.2f", v23._axisMax);
    v23._bottomLabel.Text = string.format("%.2f", 0);
end;
v3._calculateAxisMax = function(v24)
    local v25 = v24._target * 2;
    local v26 = v24:_recursiveGetOrderOfMagnitude(1, v25);
    v24._axisMax = math.floor(0.5 + v25 / v26) * v26;
end;
v3.SetStatsAggregator = function(v27, v28)
    if v27._aggregator then
        v27._aggregator:RemoveListener(v27._listenerId);
        v27._listenerId = nil;
        v27._aggregator = nil;
    end;
    v27._aggregator = v28;
    v27:_refreshVisibility();
end;
v3._stopListening = function(v29)
    if v29._aggregator == nil then
        return ;
    elseif v29._listenerId == nil then
        return ;
    else
        v29._aggregator:RemoveListener(v29._listenerId);
        v29._listenerId = nil;
        return ;
    end;
end;
v3._startListening = function(v30)
    if v30._aggregator == nil then
        return ;
    elseif v30._listenerId ~= nil then
        return ;
    else
        v30._listenerId = v30._aggregator:AddListener(function()
            v30:_updateValuesAndRender();
        end);
        return ;
    end;
end;
v3._shouldBeVisible = function(v31)
    if not v1.PerformanceStatsShouldBeVisible() then
        return false;
    else
        return v31._frame.Visible;
    end;
end;
v3.SetVisible = function(v32, v33)
    v32._frame.Visible = v33;
    v32:_refreshVisibility();
end;
v3._refreshVisibility = function(v34)
    if not v34:_shouldBeVisible() then
        v34:_stopListening();
        return ;
    else
        v34:_startListening();
        v34:_updateValuesAndRender();
        return ;
    end;
end;
v3.OnPerformanceStatsShouldBeVisibleChanged = function(v35)
    v35:_refreshVisibility();
end;
v3._recursiveGetOrderOfMagnitude = function(v36, v37, v38)
    if v38 < v37 then
        return v36:_recursiveGetOrderOfMagnitude(v37 / 10, v38);
    elseif v38 <= v37 * 10 then
        return v37;
    else
        return v36:_recursiveGetOrderOfMagnitude(v37 * 10, v38);
    end;
end;
v3._updateValuesAndRender = function(v39)
    v39._values = {};
    v39._average = 0;
    v39._target = 0;
    if v39._aggregator ~= nil then
        v39._values = v39._aggregator:GetValues();
        v39._average = v39._aggregator:GetAverage();
        v39._target = v39._aggregator:GetTarget();
    end;
    v39:_calculateAxisMax();
    v39:_render();
end;
return v3;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(l_CoreGui_0.RobloxGui.Modules.StyleWidgets);
local v2 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsUtils);
local v3 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsMiniTextPanel);
local v4 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsAnnotatedGraph);
local v5 = UDim2.new(0, 0, 0, 0);
local v6 = UDim2.new(0.5, 0, 1, -v1.TabSelectionHeight);
local v7 = UDim2.new(0.5, 0, 0, 0);
local v8 = UDim2.new(0.5, 0, 1, -v1.TabSelectionHeight);
local v9 = {};
v9.__index = v9;
v9.new = function(v10)
    local v11 = {};
    setmetatable(v11, v9);
    v11._statType = v10;
    v11._button = Instance.new("TextButton");
    v11._button.Name = "PS_Button";
    v11._button.Text = "";
    v2.StyleButton(v11._button);
    v11._textPanel = v3.new(v10);
    v11._textPanel:PlaceInParent(v11._button, v6, v5);
    v11._graph = v4.new(v10, false);
    v11._graph:PlaceInParent(v11._button, v8, v7);
    v11._textPanel:SetZIndex(v2.TextZIndex);
    v11._graph:SetZIndex(v2.GraphZIndex);
    v11._tabSelection = v1.MakeTabSelectionWidget(v11._button);
    v11._isSelected = false;
    v11:_updateTabSelectionState();
    return v11;
end;
v9.OnPerformanceStatsShouldBeVisibleChanged = function(v12)
    if v12._graph then
        v12._graph:OnPerformanceStatsShouldBeVisibleChanged();
    end;
    if v12._textPanel then
        v12._textPanel:OnPerformanceStatsShouldBeVisibleChanged();
    end;
end;
v9.SetToggleCallbackFunction = function(v13, v14)
    v13._button.MouseButton1Click:connect(function()
        v14(v13._statType);
    end);
end;
v9.SetSizeAndPosition = function(v15, v16, v17)
    v15._button.Size = v16;
    v15._button.Position = v17;
end;
v9.SetIsSelected = function(v18, v19)
    v18._isSelected = v19;
    v18:_updateTabSelectionState();
end;
v9._updateTabSelectionState = function(v20)
    v20._tabSelection.Visible = v20._isSelected;
end;
v9.SetParent = function(v21, v22)
    v21._button.Parent = v22;
end;
v9.SetStatsAggregator = function(v23, v24)
    v23._textPanel:SetStatsAggregator(v24);
    v23._graph:SetStatsAggregator(v24);
end;
return v9;


local v0 = UDim2.new(0, 10, 0.15, 0);
local v1 = UDim2.new(1, -20, 0.4, 0);
local v2 = UDim2.new(0, 10, 0.55, 0);
local v3 = UDim2.new(1, -20, 0.3, 0);
local l_CoreGui_0 = game:GetService("CoreGui");
local v5 = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsUtils);
local _ = require(l_CoreGui_0.RobloxGui.Modules.Stats.StatsAggregator);
local v7 = {};
v7.__index = v7;
v7.new = function(v8)
    local v9 = {};
    setmetatable(v9, v7);
    v9._statType = v8;
    v9._frame = Instance.new("Frame");
    v9._frame.Name = "StatsMiniTextPanelClass";
    v9._frame.BackgroundTransparency = 1;
    v9._frame.ZIndex = v5.TextZIndex;
    v9._titleLabel = Instance.new("TextLabel");
    v9._titleLabel.Name = "TitleLabel";
    v9._valueLabel = Instance.new("TextLabel");
    v9._valueLabel.Name = "ValueLabel";
    v5.StyleTextWidget(v9._titleLabel);
    v5.StyleTextWidget(v9._valueLabel);
    v9._titleLabel.FontSize = v5.MiniPanelTitleFontSize;
    v9._titleLabel.Text = v9:_getTitle();
    v9._titleLabel.Parent = v9._frame;
    v9._titleLabel.Size = v1;
    v9._titleLabel.Position = v0;
    v9._titleLabel.TextXAlignment = Enum.TextXAlignment.Left;
    v9._valueLabel.FontSize = v5.MiniPanelValueFontSize;
    v9._valueLabel.Text = "0";
    v9._valueLabel.Parent = v9._frame;
    v9._valueLabel.Size = v3;
    v9._valueLabel.Position = v2;
    v9._valueLabel.TextXAlignment = Enum.TextXAlignment.Left;
    return v9;
end;
v7.SetZIndex = function(v10, v11)
    v10._frame.ZIndex = v11;
    v10._titleLabel.ZIndex = v11;
    v10.ZIndex = v11;
end;
v7._getTitle = function(v12)
    return v5.TypeToShortName[v12._statType];
end;
v7.PlaceInParent = function(v13, v14, v15, v16)
    v13._frame.Position = v16;
    v13._frame.Size = v15;
    v13._frame.Parent = v14;
end;
v7.SetStatsAggregator = function(v17, v18)
    if v17._aggregator then
        v17._aggregator:RemoveListener(v17._listenerId);
        v17._listenerId = nil;
        v17._aggregator = nil;
    end;
    v17._aggregator = v18;
    v17:_refreshVisibility();
end;
v7.SetVisible = function(v19, v20)
    v19.frame.Visible = v20;
    v19:_refreshVisibility();
end;
v7._shouldBeVisible = function(v21)
    if not v5.PerformanceStatsShouldBeVisible() then
        return false;
    else
        return v21._frame.Visible;
    end;
end;
v7._refreshVisibility = function(v22)
    if not v22:_shouldBeVisible() then
        v22:_stopListening();
        return ;
    else
        v22:_startListening();
        v22:_updateFromAggregator();
        return ;
    end;
end;
v7._stopListening = function(v23)
    if v23._aggregator == nil then
        return ;
    elseif v23._listenerId == nil then
        return ;
    else
        v23._aggregator:RemoveListener(v23._listenerId);
        v23._listenerId = nil;
        return ;
    end;
end;
v7._startListening = function(v24)
    if v24._aggregator == nil then
        return ;
    elseif v24._listenerId ~= nil then
        return ;
    else
        v24._listenerId = v24._aggregator:AddListener(function()
            v24:_updateFromAggregator();
        end);
        return ;
    end;
end;
v7.OnPerformanceStatsShouldBeVisibleChanged = function(v25)
    v25:_refreshVisibility();
end;
v7._updateFromAggregator = function(v26)
    local _ = nil;
    v26._valueLabel.Text = v5.FormatTypedValue(if v26._aggregator ~= nil then v26._aggregator:GetLatestValue() else 0, v26._statType);
end;
return v7;