local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v4 = require(l_CorePackages_0.Cryo);
local _ = require(l_CorePackages_0.Packages.React);
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.RoactNavigation);
local v8 = require(l_CorePackages_0.RoactRodux);
local v9 = require(l_CorePackages_0.Packages.RoactGamepad);
local l_Focusable_0 = v9.Focusable;
local v11 = require(l_CorePackages_0.UIBlox);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v13 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local v14 = require(l_Modules_0.LuaApp.Constants);
local l_DeviceOrientationMode_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).DeviceOrientationMode;
local l_getSafeAreaSize_0 = require(l_CorePackages_0.Workspace.Packages.InputUi).getSafeAreaSize;
local l_SpringAnimatedItem_0 = v11.Utility.SpringAnimatedItem;
local l_withStyle_0 = v11.Style.withStyle;
local v19 = require(l_Modules_0.AvatarExperience.Common.Context.withNamedRefs);
local v20 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v21 = require(l_Modules_0.AvatarExperience.Common.NamedRefConstants);
local v22 = require(l_Modules_0.AvatarExperience.Common.Components.Scene.SceneGamepadHandler);
local v23 = require(l_Modules_0.AvatarExperience.Common.Components.Scene.VRAvatarRotateHandler);
local v24 = require(l_Modules_0.AvatarExperience.Common.Components.Scene.SceneInteractionFrame);
local v25 = require(l_Modules_0.AvatarExperience.Common.Components.Scene.AvatarLoadingSpinner);
local v26 = require(l_Modules_0.AvatarExperience.Common.Components.Scene.SceneUIContainer);
local v27 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.withAppRoute);
local v28 = require(l_Modules_0.AvatarExperience.Common.Components.SceneButtons);
local v29 = require(l_Modules_0.AvatarExperience.Common.Components.BottomInsetBackground);
local v30 = require(l_Modules_0.AvatarExperience.Common.Components.NavBar.VRAvatarEditorNavBar);
local v31 = require(l_Modules_0.AvatarExperience.Common.Components.withLastInputGroup);
local v32 = require(l_Modules_0.AvatarExperience.Common.Components.AvatarVRPanelWrapper);
local v33 = require(l_Modules_0.AvatarExperience.Common.Components.AdaptiveScrollingView);
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local v35 = require(l_Modules_0.AvatarExperience.Catalog.Components.ActionBar.MultiTryOnBottomBar);
local v36 = require(l_Modules_0.AvatarExperience.Common.Components.QuickButtons);
local v37 = require(l_Modules_0.AvatarExperience.Common.Util.IXPUtils);
local l_IsVRAppBuild_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).IsVRAppBuild;
local v39 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAllowAvatarLandingPageSearch);
local v40 = require(l_Modules_0.AvatarExperience.Flags.UniversalAppCameraIXPTest);
local v41 = game:DefineFastFlag("RobuxCounterVRFix", false);
local v42 = {
    dampingRatio = 1,
    frequency = 3.5
};
local v43 = (v20.PeekHeaderHeight + v20.MainNavHeight) + v20.SubNavHeight;
local v44 = l_GuiService_0:IsTenFootInterface();
local v45 = v6.PureComponent:extend("AvatarExperienceView");
v45.defaultProps = {
    bottomBarEnabled = false,
    isDisabled = false,
    showRobuxBalance = true
};
local function v48(v46, v47)
    return {
        globalGuiInset = v46.GlobalGuiInset,
        isPortrait = v46.DeviceOrientation == l_DeviceOrientationMode_0.Portrait,
        screenSize = v46.ScreenSize,
        topBarHeight = not not v47.topBar and v46.TopBar.topBarHeight or 0,
        tryOnItems = v46.AvatarExperience.AvatarScene.OutfitTryOn.TryOnItems,
        lookId = v46.AvatarExperience.AvatarScene.OutfitTryOn.LookId
    };
end;
local function v50(v49)
    return {
        Size = UDim2.new(0, v49.width, 0, v49.height)
    };
end;
v45.init = function(v51)
    local v52, v53 = v51:calculateSceneSize();
    v51.state = {
        sceneShowing = true,
        isVerticallyOffscreen = false,
        animatedValues = {
            height = v52,
            width = v53
        }
    };
    v51.navItemsFrameRef = v6.createRef();
    v51.sceneFrameRef = v6.createRef();
    v51.onTransitionComplete = function(v54)
        local l_props_0 = v51.props;
        local l_name_0 = l_props_0.avatarRoute.current.name;
        local l_isPortrait_0 = l_props_0.isPortrait;
        local l_isSceneFullView_0 = l_props_0.isSceneFullView;
        local l_isUIFullView_0 = l_props_0.isUIFullView;
        local l_sceneShowing_0 = v51.state.sceneShowing;
        if not ((not l_isUIFullView_0 or not l_isPortrait_0) or not l_sceneShowing_0) then
            v51:setState({
                sceneShowing = false
            });
        end;
        if not (l_isPortrait_0 or not l_isSceneFullView_0) and l_name_0 == v13.AvatarExperienceLandingPage then
            if not v51.state.isVerticallyOffscreen then
                v51:setState({
                    isVerticallyOffscreen = true
                });
            end;
        elseif v51.state.isVerticallyOffscreen then
            v51:setState({
                isVerticallyOffscreen = false
            });
        end;
        local l_routeName_0 = l_props_0.navigation.state.routeName;
        local v62 = false;
        if l_routeName_0 == l_name_0 then
            v62 = not l_props_0.avatarRoute.isOverlayVisible;
        end;
        if not (not (not (not v54 or not v62) and l_props_0.lastInputGroup == v14.InputType.Gamepad) or l_isSceneFullView_0) then
            v54.captureFocus();
        end;
    end;
    v51.onNavItemsFrameResized = function(_)
        if v51.sceneFrameRef.current then
            v51.onSceneResized(v51.sceneFrameRef.current);
        end;
    end;
    v51.onSceneResized = function(v64)
        local l_current_0 = v51.navItemsFrameRef.current;
        if l_current_0 then
            local l_props_1 = v51.props;
            local l_name_1 = l_props_1.avatarRoute.current.name;
            local l_isDisabled_0 = l_props_1.isDisabled;
            local l_isPortrait_1 = l_props_1.isPortrait;
            local l_screenSize_0 = l_props_1.screenSize;
            local l_allowAdaptiveScrolling_0 = l_props_1.allowAdaptiveScrolling;
            local v72 = v51:getTopBarHeight();
            local v73 = v51.state.isVerticallyOffscreen or l_name_1 == v13.AvatarExperienceLandingPage;
            if not l_isPortrait_1 then
                l_current_0.Size = UDim2.fromScale(if not l_isDisabled_0 then v20.LandscapeNavWidth else 1, 1);
                local l_X_0 = l_current_0.AbsoluteSize.X;
                local v75 = l_screenSize_0.X - v64.AbsoluteSize.X;
                local v76 = 0;
                if v75 < l_X_0 then
                    v76 = v75 - l_X_0;
                end;
                if not v73 then
                    l_current_0.Position = UDim2.fromOffset(v76, 0);
                    return ;
                else
                    l_current_0.Position = UDim2.fromOffset(0, l_screenSize_0.Y * (-v76 / l_X_0));
                    return ;
                end;
            elseif not l_allowAdaptiveScrolling_0 then
                l_current_0.Position = UDim2.new(0, 0, 0, v64.AbsoluteSize.Y + v72);
                l_current_0.Size = UDim2.new(1, 0, 1, -v64.AbsoluteSize.Y - v72);
                return ;
            else
                l_current_0.Position = UDim2.new(0, 0, 0, v72);
                l_current_0.Size = UDim2.new(1, 0, 1, -v72);
                return ;
            end;
        else
            return ;
        end;
    end;
end;
v45.getTopBarHeight = function(v77)
    return v77.props.topBarHeight;
end;
v45.instantResize = function(v78)
    local l_current_1 = v78.sceneFrameRef.current;
    if l_current_1 then
        local v80, v81 = v78:calculateSceneSize();
        l_current_1.Size = UDim2.new(0, v81, 0, v80);
        v78.onSceneResized(l_current_1);
        return ;
    else
        return ;
    end;
end;
v45.calculatePortraitSceneHeight = function(v82)
    local l_props_2 = v82.props;
    local l_globalGuiInset_0 = l_props_2.globalGuiInset;
    local l_screenSize_1 = l_props_2.screenSize;
    local l_isLandingPage_0 = l_props_2.isLandingPage;
    local l_Offset_0 = l_getSafeAreaSize_0(l_screenSize_1, l_globalGuiInset_0).Y.Offset;
    local v88 = l_Offset_0 * v20.PortraitSceneHeight;
    if l_isLandingPage_0 then
        v88 = l_Offset_0 * v20.LandingPagePortraitSceneHeight;
        if l_Offset_0 - v88 < v20.LandingPagePortraitMinItemsHeightPix then
            v88 = l_Offset_0 - v20.LandingPagePortraitMinItemsHeightPix;
        end;
    end;
    return v88;
end;
v45.calculateFullHeight = function(v89)
    local l_props_3 = v89.props;
    return (l_props_3.screenSize.Y - l_props_3.globalGuiInset.bottom) - (not not l_props_3.isPortrait and v89:getTopBarHeight() or 0);
end;
v45.calculateSceneSize = function(v91)
    local l_props_4 = v91.props;
    local l_globalGuiInset_1 = l_props_4.globalGuiInset;
    local l_isDisabled_1 = l_props_4.isDisabled;
    local l_isSceneFullView_1 = l_props_4.isSceneFullView;
    local l_isPortrait_2 = l_props_4.isPortrait;
    local l_isUIFullView_1 = l_props_4.isUIFullView;
    local l_screenSize_2 = l_props_4.screenSize;
    local v99 = v91:getTopBarHeight();
    local l_bottom_0 = l_globalGuiInset_1.bottom;
    local v101 = not not l_isPortrait_2 and v99 or 0;
    local v102 = l_screenSize_2.Y - l_bottom_0;
    local v103 = l_screenSize_2.X * v20.LandscapeSceneWidth;
    local v104 = not not l_isPortrait_2 and v91:calculatePortraitSceneHeight() or v102;
    local v105 = not not l_isPortrait_2 and l_screenSize_2.X or v103;
    if not l_isUIFullView_1 or not l_isPortrait_2 then
        if l_isSceneFullView_1 then
            v105 = l_screenSize_2.X;
            v104 = (l_screenSize_2.Y - l_bottom_0) - v101;
        end;
    else
        v104 = 0;
    end;
    if l_isDisabled_1 then
        v104 = 0;
        v105 = 0;
    end;
    return v104, v105;
end;
v45.isConsoleWithGamepad = function(v106)
    return v44 and v106.props.lastInputGroup == v14.InputType.Gamepad;
end;
v45.renderSceneFrame = function(v107)
    local l_props_5 = v107.props;
    local l_isDisabled_2 = l_props_5.isDisabled;
    local l_isSceneFullView_2 = l_props_5.isSceneFullView;
    local l_isUIFullView_2 = l_props_5.isUIFullView;
    local l_isPortrait_3 = l_props_5.isPortrait;
    local v113 = v107:getTopBarHeight();
    local l_name_2 = l_props_5.avatarRoute.opaque.name;
    local v115 = v107.state.sceneShowing or not l_isPortrait_3;
    if l_isDisabled_2 then
        v115 = false;
    end;
    return v9.withFocusController(function(v116)
        local l_forwardRef_0 = l_props_5.forwardRef;
        local v118 = not l_isSceneFullView_2 and not l_isUIFullView_2;
        if v39() then
            v118 = not not v118 and (l_props_5.showRobuxBalance or false);
        end;
        if l_IsVRAppBuild_0() then
            v118 = if not v41 then v118 and l_name_2 == v13.Catalog else v118 and l_name_2 ~= v13.LayeredClothingSort;
        end;
        return v6.createElement(l_SpringAnimatedItem_0.AnimatedFrame, {
            regularProps = {
                AnchorPoint = Vector2.new(1, 0),
                BackgroundTransparency = 1,
                Position = UDim2.new(1, 0, 0, not not l_isPortrait_3 and v113 or 0),
                ZIndex = -1,
                [v6.Change.AbsoluteSize] = v107.onSceneResized,
                [v6.Event.AncestryChanged] = v107.onSceneResized,
                [v6.Ref] = v107.sceneFrameRef
            },
            animatedValues = v107.state.animatedValues,
            mapValuesToProps = v50,
            springOptions = v42,
            onComplete = function()
                v107.onTransitionComplete(v116);
            end
        }, {
            SceneUIContainer = v6.createElement(l_Focusable_0[v26], {
                changeViewFunction = l_props_5.changeViewFunction,
                isVisible = v115,
                row1ChildrenVisible = v118,
                [v6.Ref] = l_forwardRef_0,
                NextSelectionDown = l_props_5.NextSelectionDown,
                NextSelectionLeft = l_props_5.NextSelectionLeft,
                NextSelectionUp = l_props_5.NextSelectionUp
            }),
            SceneInteractionFrame = if not l_IsVRAppBuild_0() then v6.createElement(v24) else nil,
            AvatarLoadingSpinner = if not l_IsVRAppBuild_0() then v6.createElement(v25) else nil,
            VRAvatarEditorNavBar = if not l_IsVRAppBuild_0() then nil else v6.createElement(v30, {
                currentPage = l_name_2,
                navigation = l_props_5.navigation
            })
        });
    end);
end;
v45.renderWithStyle = function(v119, _)
    local l_props_6 = v119.props;
    local l_allowAdaptiveScrolling_1 = l_props_6.allowAdaptiveScrolling;
    local l_bottomBarEnabled_0 = l_props_6.bottomBarEnabled;
    local l_globalGuiInset_2 = l_props_6.globalGuiInset;
    local l_isPortrait_4 = l_props_6.isPortrait;
    local v126 = v119:getTopBarHeight();
    local v127 = not l_bottomBarEnabled_0 and l_globalGuiInset_2.bottom > 0;
    local v128 = v119:calculateSceneSize();
    local l_avatarRoute_0 = l_props_6.avatarRoute;
    local v130 = not v4.isEmpty(l_props_6.tryOnItems) and (not l_props_6.isSceneFullView or false);
    if l_props_6.lookId ~= nil then
        v130 = false;
    end;
    local v131 = nil;
    local v132 = nil;
    if l_allowAdaptiveScrolling_1 then
        v131 = v119:calculateFullHeight();
        v132 = v131 - v119:calculatePortraitSceneHeight();
    end;
    local v133 = {
        TopBar = not l_isPortrait_4 and l_props_6.topBar,
        Items = v6.createElement("Frame", {
            AnchorPoint = Vector2.new(0, 1),
            BackgroundTransparency = 1,
            Position = UDim2.new(0, 0, 1, 0),
            Size = UDim2.new(1, 0, 1, if not l_isPortrait_4 then -v126 else 0),
            ZIndex = 2
        }, if not not l_allowAdaptiveScrolling_1 and l_isPortrait_4 then {
            AdaptiveScrollingView = v6.createElement(v33, {
                fullHeight = v131,
                midHeight = v132,
                alwaysShowingHeight = v43
            }, l_props_6.children)
        } else l_props_6.children)
    };
    local v134 = v119:renderSceneFrame();
    local v135 = if not not l_allowAdaptiveScrolling_1 and l_isPortrait_4 then nil else v6.createElement(v28, {
        sceneHeight = v128,
        isUIFullView = l_props_6.isUIFullView,
        isSceneFullView = l_props_6.isSceneFullView,
        changeViewFunction = l_props_6.changeViewFunction,
        ZIndex = 3
    });
    local v136 = v6.createElement(v36, {
        isUIFullView = l_props_6.isUIFullView,
        isSceneFullView = l_props_6.isSceneFullView,
        ref = l_props_6.quickButtonsRef,
        NextSelectionLeft = l_props_6.defaultChildRef
    });
    local _ = nil;
    return v6.createElement("Frame", {
        BackgroundTransparency = 1,
        Position = UDim2.fromOffset(0, 0),
        Size = UDim2.fromScale(1, 1),
        ZIndex = l_props_6.ZIndex
    }, {
        TopBar = l_isPortrait_4 and l_props_6.topBar,
        ItemsFrame = if not l_IsVRAppBuild_0() then v6.createElement("Frame", {
            BackgroundTransparency = 1,
            ZIndex = (not l_isPortrait_4 or l_allowAdaptiveScrolling_1) and 2 or nil,
            [v6.Change.AbsoluteSize] = v119.onNavItemsFrameResized,
            [v6.Ref] = v119.navItemsFrameRef
        }, v133) else v6.createElement(v32, {
            visible = l_avatarRoute_0.current.name ~= v13.LayeredClothingSort,
            roundedCornersFrame = true,
            panelPlacement = "Left"
        }, v133),
        OverlayedUI = if not l_IsVRAppBuild_0() then v6.createFragment({
            SceneFrame = v134,
            QuickButtons = v136,
            SceneButtons = v135
        }) else v6.createElement(v32, {
            roundedCornersFrame = false,
            panelPlacement = "Center"
        }, {
            SceneFrame = v134,
            QuickButtons = v136,
            SceneButtons = v135,
            GamepadHandler = if l_avatarRoute_0.current.name ~= v13.LayeredClothingSort then v6.createElement(v23) else nil
        }),
        BottomInsetBackground = if not v127 then nil else v6.createElement(v29, {
            globalGuiInset = l_globalGuiInset_2
        }),
        MultiTryOnBottomBar = v6.createElement(v35, {
            bottomBarRef = l_props_6.multiTryOnBottomBarRef,
            NextSelectionLeft = l_props_6.namedRefs[l_props_6.avatarRoute.opaque.name .. v21.ItemsList],
            Visible = v130,
            isConsoleWithGamepad = v119:isConsoleWithGamepad()
        })
    });
end;
v45.render = function(v138)
    return l_withStyle_0(function(v139)
        return v6.createElement(v22, nil, {
            AvatarExperienceView = v138:renderWithStyle(v139)
        });
    end);
end;
v45.didUpdate = function(v140, v141)
    local l_props_7 = v140.props;
    local l_isUIFullView_3 = l_props_7.isUIFullView;
    local l_sceneShowing_1 = v140.state.sceneShowing;
    if not (l_isUIFullView_3 or l_sceneShowing_1) then
        v140:setState({
            sceneShowing = true
        });
    end;
    local l_isPortrait_5 = v141.isPortrait;
    local l_isPortrait_6 = l_props_7.isPortrait;
    if l_isPortrait_6 ~= l_isPortrait_5 then
        if not l_isPortrait_6 or not l_isUIFullView_3 then
            if not (l_isPortrait_5 or not l_isUIFullView_3) then
                v140:setState({
                    sceneShowing = true
                });
            end;
        else
            v140:setState({
                sceneShowing = false
            });
        end;
        v140:instantResize();
    end;
    if l_props_7.isDisabled then
        v140:instantResize();
    end;
    if l_props_7.screenSize ~= v141.screenSize then
        v140:instantResize();
    end;
    if l_props_7.topBarHeight ~= v141.topBarHeight then
        v140:instantResize();
    end;
    local v147, v148 = v140:calculateSceneSize();
    if not (v147 == v140.state.animatedValues.height) or v148 ~= v140.state.animatedValues.width then
        v140:setState({
            animatedValues = {
                height = v147,
                width = v148
            }
        });
    end;
end;
v45.didMount = function(v149)
    v149:instantResize();
    local v150, v151 = v149:calculateSceneSize();
    v149:setState({
        animatedValues = {
            height = v150,
            width = v151
        }
    });
end;
v45 = v37.connectTestVariables({
    universalAppCameraEnabled = v40.EnabledForUser
})((v19((v27((v7.withNavigation((v31((v8.connect(v48, nil)(v45)))))))))));
return (v6.forwardRef(function(v152, v153)
    return v6.createElement(v45, v4.Dictionary.join(v152, {
        forwardRef = v153
    }));
end));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.t);
local v4 = require(l_CorePackages_0.UIBlox);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local l_withStyle_0 = v4.Style.withStyle;
local l_LoadableImage_0 = v4.App.Loading.LoadableImage;
local l_ShimmerPanel_0 = v4.App.Loading.ShimmerPanel;
local v11 = require(l_Modules_0.AvatarExperience.Flags.FFlagEnableAvatarHeadshotLocalIconBackgroundFix);
local v12 = v2.PureComponent:extend("AvatarHeadshotLocalIcon");
v12.defaultProps = {
    Size = 36,
    LayoutOrder = 1
};
v12.validateProps = v3.strictInterface({
    Size = v3.optional(v3.number),
    ZIndex = v3.number,
    LayoutOrder = v3.optional(v3.integer),
    localUserId = v3.string
});
v12.init = function(v13)
    v13.getLoadingImage = function()
        return v2.createElement(l_ShimmerPanel_0, {
            cornerRadius = UDim.new(0.5, 0),
            Size = UDim2.fromScale(1, 1),
            Position = UDim2.fromScale(0.5, 0.5),
            AnchorPoint = Vector2.new(0.5, 0.5)
        });
    end;
end;
v12.render = function(v14)
    return l_withStyle_0(function(v15)
        return v14:renderWithProviders(v15);
    end);
end;
v12.makeLoadableImage = function(v16)
    if not (v16.props.localUserId ~= nil) or v16.props.localUserId == "" then
        return nil;
    else
        return v2.createElement(l_LoadableImage_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.fromScale(0.5, 0.5),
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1,
            Image = string.format("rbxthumb://type=AvatarHeadShot&id=%s&w=%d&h=%d&filters=circular", v16.props.localUserId, 48, 48),
            useShimmerAnimationWhileLoading = true,
            cornerRadius = UDim.new(0.5, 0),
            shouldHandleReloads = true
        });
    end;
end;
v12.renderWithProviders = function(v17, v18)
    local l_Theme_0 = v18.Theme;
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        Size = UDim2.fromOffset(v17.props.Size, v17.props.Size),
        ZIndex = v17.props.ZIndex,
        LayoutOrder = v17.props.LayoutOrder
    }, {
        Background = v2.createElement("Frame", {
            ZIndex = v17.props.ZIndex,
            BorderSizePixel = 0,
            BackgroundColor3 = l_Theme_0.PlaceHolder.Color,
            BackgroundTransparency = if not v11 then nil else l_Theme_0.PlaceHolder.Transparency,
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.fromScale(0.5, 0.5),
            AnchorPoint = Vector2.new(0.5, 0.5)
        }, {
            UICorner = v2.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            }),
            LoadableImage = v17:makeLoadableImage()
        })
    });
end;
return v5.connect(function(v20)
    return {
        localUserId = v20.LocalUserId
    };
end)(v12);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.t);
local v4 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v4.Style.withStyle;
local l_withAnimation_0 = v4.Core.Animation.withAnimation;
local l_Placement_0 = v4.App.Navigation.Enum.Placement;
local v8 = require(l_CoreGui_0.RobloxGui.Modules.AvatarExperience.Common.Components.AvatarHeadshotLocalIcon);
local v9 = {
    frequency = 3
};
local v10 = v2.PureComponent:extend("AvatarHeadshotSystemBarIcon");
v10.validateProps = v3.strictInterface({
    placement = l_Placement_0.isEnumValue,
    hovered = v3.boolean,
    selected = v3.boolean,
    pressed = v3.boolean,
    badgeValue = v3.optional(v3.union(v3.number, v3.string)),
    size = v3.optional(v3.number)
});
v10.render = function(v11)
    local v12 = v11.props.size or 42;
    return l_withStyle_0(function(_)
        local v14 = 0;
        local v15 = 0;
        if v11.props.hovered then
            if v11.props.placement == l_Placement_0.Bottom then
                v15 = -4;
            else
                v14 = 4;
            end;
        end;
        return l_withAnimation_0({
            hoverOffsetX = v14,
            hoverOffsetY = v15
        }, function(v16)
            return v2.createElement("Frame", {
                BackgroundTransparency = 1,
                Position = UDim2.new(0.5, math.floor(v16.hoverOffsetX + 0.5), 0.5, (math.floor(v16.hoverOffsetY + 0.5))),
                AnchorPoint = Vector2.new(0.5, 0.5),
                Size = UDim2.fromOffset(42, 42)
            }, {
                AvatarHeadshotLocalIcon = v2.createElement(v8, {
                    ZIndex = 2,
                    Size = v12
                })
            });
        end, v9);
    end);
end;
return v10;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Packages.React);
local l_useStyle_0 = require(l_CorePackages_0.UIBlox).Core.Style.useStyle;
local v5 = require(l_Modules_0.LuaApp.Util.SystemBarLabelTextSizeBinding);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.AvatarHeadshotLocalIcon);
local l_useLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).Hooks.useLocalization;
return function(v8)
    local l_selected_0 = v8.selected;
    local l_pressed_0 = v8.pressed;
    local v11 = v5.default:getBinding();
    local v12 = l_useStyle_0();
    local v13 = l_useLocalization_0({
        label = v8.label
    }).label or "";
    v3.useEffect(function()
        v5.default:getMinTextSize(v13, v12.Font.Header2.Font, Vector2.new(62, 12));
    end, {
        v13,
        v11,
        v12
    });
    return v3.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.fromScale(1, 1)
    }, {
        Layout = v3.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, 4)
        }),
        Padding = v3.createElement("UIPadding", {
            PaddingTop = UDim.new(0, 10),
            PaddingBottom = UDim.new(0, 10)
        }),
        AvatarCanvasGroup = v3.createElement("CanvasGroup", {
            Size = UDim2.fromOffset(28, 28),
            GroupTransparency = not l_pressed_0 and 0 or 0.5
        }, {
            UICorner = v3.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            }),
            Icon = v3.createElement("Frame", {
                LayoutOrder = 1,
                BackgroundTransparency = 1,
                AnchorPoint = Vector2.new(0, 0),
                Size = UDim2.fromOffset(28, 28)
            }, {
                AvatarHeadshotLocalIcon = v3.createElement(v6, {
                    ZIndex = 2,
                    Size = 28
                })
            })
        }),
        IconText = v3.createElement("TextLabel", {
            LayoutOrder = 2,
            Text = v13,
            Size = UDim2.new(1, 0, 0, 12),
            TextColor3 = not not l_selected_0 and v12.Theme.TextEmphasis.Color or v12.Theme.TextDefault.Color,
            Font = v12.Font.Header2.Font,
            BackgroundTransparency = 1,
            TextSize = v11,
            TextYAlignment = Enum.TextYAlignment.Top,
            TextTransparency = v12.Theme.TextDefault.Transparency,
            BorderSizePixel = 0
        })
    });
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_Modules_0.AvatarExperience.Common.Actions.SetAvatarSceneRoute);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarRoute);
local v7 = v2.PureComponent:extend("AvatarRouteUpdater");
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
v7.validateProps = v4.strictInterface({
    avatarRoute = v6.Interface,
    setAvatarSceneRoute = v4.callback
});
v7.render = function(_)
    return nil;
end;
v7.didMount = function(v10)
    v10.props.setAvatarSceneRoute(v10.props.avatarRoute);
end;
v7.didUpdate = function(v11, v12)
    local l_avatarRoute_0 = v11.props.avatarRoute;
    if l_avatarRoute_0 ~= v12.avatarRoute then
        v11.props.setAvatarSceneRoute(l_avatarRoute_0);
    end;
end;
return (v3.connect(nil, function(v14)
    return {
        setAvatarSceneRoute = function(v15)
            v14(v5(v15));
        end
    };
end)(v7));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.UIBlox);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_useStyle_0 = v4.Core.Style.useStyle;
local v7 = require(l_CorePackages_0.Workspace.Packages.SharedFlags);
local v8 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local l_AppPanel3D_0 = require(l_CorePackages_0.Workspace.Packages.VrCompatibility).AppPanel3D;
local l_Panel3D_0 = v4.Core.VR.Panel3D;
local v11 = require(l_Modules_0.AvatarExperience.Common.Hooks.useAvatarRoute);
local v12 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreenProperties);
local v13 = require(l_Modules_0.LuaApp.Navigation.CurrentTabContext);
local v14 = require(l_Modules_0.LuaApp.Navigation.SwitchNavigatorVisibleContext);
local v15 = require(l_Modules_0.AvatarExperience.Common.Constants);
local l_RoundedCornersFrame_0 = require(l_CorePackages_0.Workspace.Packages.VrCompatibility).RoundedCornersFrame;
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v18 = if not v7.GetFFlagAdjustVRFloor() then l_Panel3D_0 else l_AppPanel3D_0;
local function v27(v19, v20)
    local v21 = {};
    local v22 = v19.previousPages or {};
    for _, v24 in v22, nil, nil do
        local l_VRPanelPlacement_0 = v12[v24.name].VRPanelPlacement;
        if l_VRPanelPlacement_0 == "None" then
            l_VRPanelPlacement_0 = "Left";
        end;
        l_VRPanelPlacement_0 = l_VRPanelPlacement_0 or "Left";
        v21[l_VRPanelPlacement_0] = (v21[l_VRPanelPlacement_0] or 0) + 1;
    end;
    local v26 = v21[v20] or 0;
    if v19.isOverlayVisible then
        v26 = v26 + 1;
    end;
    return (Vector3.new(0, 0, v26 * v15.VR.SPACE_BETWEEN_STACKED_PANELS));
end;
return function(v28)
    local v29 = v11();
    local v30 = l_useStyle_0();
    local v31 = v15.VR.PanelInfo[v28.panelPlacement or "Left"];
    if v28.panelPlacement ~= "None" then
        local v32 = v2.useMemo(function()
            return (v27(v29, v28.panelPlacement));
        end, {});
        return v2.createElement(v13.Consumer, {
            render = function(v33)
                return v3.createElement(v14.Consumer, {
                    render = function(v34)
                        local l_createElement_0 = v2.createElement;
                        local l_v18_0 = v18;
                        local v37 = {};
                        local v38 = not v34;
                        if not v38 then
                            v38 = true;
                            if v28.visible ~= false then
                                v38 = v33 ~= v8.AvatarExperienceRoot;
                            end;
                        end;
                        v37.hidden = v38;
                        v37.partSize = v31.PartSize;
                        v37.offset = v31.Offset + v32;
                        v37.virtualScreenSize = v31.VirtualScreenSize;
                        v37.panelName = v28.panelPlacement;
                        return l_createElement_0(l_v18_0, v37, if not v28.roundedCornersFrame then v28[v3.Children] else v2.createElement(l_RoundedCornersFrame_0, {
                            cornerRadius = 10,
                            backgroundColor = v30.Theme.BackgroundDefault.Color,
                            backgroundTransparency = 0
                        }, v28[v3.Children]));
                    end
                });
            end
        });
    else
        return v2.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1,
            ClipsDescendants = false,
            BorderSizePixel = 0
        }, v28[v3.Children]);
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local v3 = require(l_CorePackages_0.Packages.t);
local v4 = v1.PureComponent:extend("BottomInsetBackground");
v4.validateProps = v3.strictInterface({
    globalGuiInset = v3.strictInterface({
        left = v3.integer,
        top = v3.integer,
        right = v3.integer,
        bottom = v3.integer
    })
});
v4.renderWithStyle = function(v5, v6)
    local l_Theme_0 = v6.Theme;
    return v1.createElement("Frame", {
        BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
        BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
        BorderSizePixel = 0,
        Position = UDim2.new(0, 0, 1, 0),
        Size = UDim2.new(1, 0, 0, v5.props.globalGuiInset.bottom),
        ZIndex = 3
    });
end;
v4.render = function(v8)
    return l_withStyle_0(function(v9)
        return v8:renderWithStyle(v9);
    end);
end;
return v4;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.Packages.RoactGamepad);
local v6 = require(l_CorePackages_0.RoactRodux);
local v7 = require(l_CorePackages_0.Packages.t);
local v8 = require(l_Modules_0.LuaApp.Actions.SetBoundInputs);
local v9 = require(l_Modules_0.LuaApp.Actions.MaybeClearBoundInputs);
local v10 = v4.PureComponent:extend("BoundInputsUpdater");
v10.validateProps = v7.strictInterface({
    focusController = v7.table,
    setBoundInputs = v7.callback,
    maybeClearBoundInputs = v7.callback
});
v10.disconnectEvent = function(v11)
    if v11.disconnect ~= nil then
        v11.disconnect();
        v11.disconnect = nil;
    end;
end;
v10.subscribeEvent = function(v12)
    v12.disconnect = v12.props.focusController.subscribeToBoundInputsChanged(function(v13)
        if next(v13) ~= nil then
            v12.props.setBoundInputs(v13, v12.props.focusController);
        end;
    end);
    local v14 = v12.props.focusController.getBoundInputs();
    if next(v14) ~= nil then
        v12.props.setBoundInputs(v14, v12.props.focusController);
    end;
end;
v10.didMount = function(v15)
    v15:subscribeEvent();
end;
v10.render = function(_)
    return nil;
end;
v10.didUpdate = function(v17, v18)
    if v17.props.focusController ~= v18.focusController then
        v17:disconnectEvent();
        v17:subscribeEvent();
    end;
end;
v10.willUnmount = function(v19)
    v19:disconnectEvent();
    v19.props.maybeClearBoundInputs(v19.props.focusController);
end;
v10 = v6.connect(nil, function(v20)
    return {
        setBoundInputs = function(v21, v22)
            v20(v8(v21, v22));
        end,
        maybeClearBoundInputs = function(v23)
            v20(v9(v23));
        end
    };
end)(v10);
return function(v24)
    return v5.withFocusController(function(v25)
        return v4.createElement(v10, v3.Dictionary.join(v24, {
            focusController = v25
        }));
    end);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.UIBlox);
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local l_getSafeAreaSize_0 = require(l_CorePackages_0.Workspace.Packages.InputUi).getSafeAreaSize;
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local v8 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagCenteredModalViewAbsorbsInputs);
local l_withStyle_0 = v4.Style.withStyle;
local _ = require(l_CorePackages_0.Packages.React);
local function v12(v11)
    if not v11.wideMode then
        return UDim2.fromScale(1, 1);
    else
        return UDim2.new(0, math.min(l_getSafeAreaSize_0(v11.screenSize, v11.globalGuiInset).X.Offset, 640), 1, 0);
    end;
end;
return (v3.connect(function(v13, _)
    return {
        wideMode = v13.FormFactor == l_FormFactor_0.WIDE,
        screenSize = v13.ScreenSize,
        globalGuiInset = v13.GlobalGuiInset
    };
end, nil)(function(v15)
    local v16 = v12(v15);
    local v17 = v15[v2.Children];
    if v15.wideMode then
        return l_withStyle_0(function(v18)
            if not v8() then
                return v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = v18.Theme.Overlay.Transparency,
                    BackgroundColor3 = v18.Theme.Overlay.Color,
                    Active = true
                }, {
                    Window = v2.createElement("Frame", {
                        AnchorPoint = Vector2.new(0.5, 0),
                        Position = UDim2.new(0.5, 0, 0, 0),
                        Size = v16,
                        BackgroundTransparency = if not v15.backgroundTransparency then v18.Theme.BackgroundDefault.Transparency else v15.backgroundTransparency,
                        BackgroundColor3 = v18.Theme.BackgroundDefault.Color,
                        BorderSizePixel = 0
                    }, v17)
                });
            else
                return v2.createElement("TextButton", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = v18.Theme.Overlay.Transparency,
                    BackgroundColor3 = v18.Theme.Overlay.Color,
                    Active = true,
                    AutoButtonColor = false,
                    Text = " "
                }, {
                    Window = v2.createElement("Frame", {
                        AnchorPoint = Vector2.new(0.5, 0),
                        Position = UDim2.new(0.5, 0, 0, 0),
                        Size = v16,
                        BackgroundTransparency = if not v15.backgroundTransparency then v18.Theme.BackgroundDefault.Transparency else v15.backgroundTransparency,
                        BackgroundColor3 = v18.Theme.BackgroundDefault.Color,
                        BorderSizePixel = 0
                    }, v17)
                });
            end;
        end);
    else
        return v2.createFragment(v17);
    end;
end));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_AnimatedFrame_0 = require(l_CorePackages_0.UIBlox).Utility.SpringAnimatedItem.AnimatedFrame;
local v3 = require(l_CorePackages_0.Packages.Dash);
local v4 = {
    dampingRatio = 1,
    frequency = 3.5
};
local function v7(v5)
    return v1.createElement(l_AnimatedFrame_0, {
        regularProps = {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            LayoutOrder = v5.LayoutOrder,
            ClipsDescendants = true,
            ref = v5.frameRef,
            NextSelectionUp = v5.NextSelectionUp,
            NextSelectionDown = v5.NextSelectionDown,
            NextSelectionLeft = v5.NextSelectionLeft,
            NextSelectionRight = v5.NextSelectionRight,
            [v1.Change.AbsoluteSize] = v5.onAbsoluteSizeChanged
        },
        animatedValues = {
            yOffset = not v5.isExpanded and 0 or v5.Size.Y.Offset,
            yScale = not v5.isExpanded and 0 or v5.Size.Y.Scale
        },
        mapValuesToProps = function(v6)
            return {
                Size = UDim2.new(v5.Size.X.Scale, v5.Size.X.Offset, v6.yScale, v6.yOffset)
            };
        end,
        springOptions = v4
    }, v5.children);
end;
return v1.forwardRef(function(v8, v9)
    return v1.createElement(v7, v3.join(v8, {
        frameRef = v9
    }));
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_CorePackages_0.UIBlox);
local l_Images_0 = v3.App.ImageSet.Images;
local l_ImageSetLabel_0 = v3.Core.ImageSet.ImageSetLabel;
local l_ImageSetButton_0 = v3.Core.ImageSet.ImageSetButton;
local l_IconSize_0 = v3.App.Constant.IconSize;
local l_withStyle_0 = v3.Style.withStyle;
local v9 = l_Images_0["icons/actions/previewShrink"];
local v10 = l_Images_0["icons/actions/previewExpand"];
local v11 = Vector2.new(8, 8);
local v12 = l_Images_0["component_assets/circle_17"];
local v13 = l_Images_0["component_assets/dropshadow_24_6"];
local v14 = v1.PureComponent:extend("FullViewEntryButton");
v14.validateProps = v2.strictInterface({
    isUIFullView = v2.optional(v2.boolean),
    isSceneFullView = v2.optional(v2.boolean),
    changeViewFunction = v2.optional(v2.callback),
    LayoutOrder = v2.number
});
v14.renderExpandButton = function(v15, v16)
    return v1.createElement(l_ImageSetButton_0, {
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        BackgroundTransparency = 1,
        Size = UDim2.new(0, l_IconSize_0.Regular, 0, l_IconSize_0.Regular),
        Image = v9,
        ImageColor3 = v16.IconEmphasis.Color,
        ImageTransparency = v16.IconEmphasis.Transparency,
        LayoutOrder = v15.props.LayoutOrder,
        [v1.Event.Activated] = v15.props.changeViewFunction
    });
end;
v14.renderCollapseButton = function(v17, v18)
    return v1.createElement(l_ImageSetLabel_0, {
        AnchorPoint = Vector2.new(1, 1),
        Position = UDim2.new(1, 0, 1, 0),
        Size = UDim2.new(0, (l_IconSize_0.Regular + v11.X) + 14, 0, (l_IconSize_0.Regular + v11.Y) + 14),
        BackgroundTransparency = 1,
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(16, 16, 18, 18),
        Image = v13,
        ImageColor3 = v18.DropShadow.Color,
        ImageTransparency = v18.DropShadow.Transparency,
        LayoutOrder = v17.props.LayoutOrder,
        ZIndex = 2
    }, {
        BackgroundImage = v1.createElement(l_ImageSetButton_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            Size = UDim2.new(0, l_IconSize_0.Regular + v11.X, 0, l_IconSize_0.Regular + v11.Y),
            BackgroundTransparency = 1,
            Image = v12,
            ImageColor3 = v18.BackgroundContrast.Color,
            ImageTransparency = 0,
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = Rect.new(8, 8, 9, 9),
            [v1.Event.Activated] = v17.props.changeViewFunction
        }, {
            FullViewImageButton = v1.createElement(l_ImageSetLabel_0, {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.new(0.5, 0, 0.5, 0),
                Image = v10,
                ImageColor3 = v18.IconEmphasis.Color,
                ImageTransparency = v18.IconEmphasis.Transparency,
                Size = UDim2.new(0, -l_IconSize_0.Regular, 0, -l_IconSize_0.Regular),
                BackgroundTransparency = 1
            })
        })
    });
end;
v14.render = function(v19)
    return l_withStyle_0(function(v20)
        local l_Theme_0 = v20.Theme;
        if v19.props.isUIFullView then
            return v19:renderCollapseButton(l_Theme_0);
        else
            return v19:renderExpandButton(l_Theme_0);
        end;
    end);
end;
return v14;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.AvatarExperienceDeps);
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local v6 = require(l_CorePackages_0.Packages.t);
local v7 = require(l_CorePackages_0.Cryo);
local l_Text_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Text;
local v9 = require(l_CorePackages_0.UIBlox);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local l_FitFrameHorizontal_0 = v3.RoactFitComponents.FitFrameHorizontal;
local l_withStyle_0 = v9.Style.withStyle;
local l_SpringAnimatedItem_0 = v9.Utility.SpringAnimatedItem;
local v14 = require(l_Modules_0.AvatarExperience.Common.Components.GamepadBottomBarContent);
local v15 = require(l_Modules_0.AvatarExperience.Common.Components.GamepadBottomBarElement);
local v16 = require(l_Modules_0.LuaApp.Constants);
local v17 = require(l_Modules_0.LuaApp.Components.ScreenGuiWithBlurControl);
local v18 = require(l_Modules_0.AvatarExperience.Common.Utils);
local v19 = {
    dampingRatio = 1,
    frequency = 2.5
};
local v20 = v4.PureComponent:extend("GamepadBottomBar");
v20.validateProps = v6.strictInterface({
    displayOrder = v6.number,
    hideGamepadBottomBar = v6.optional(v6.boolean),
    boundInputs = v6.table,
    screenSize = v6.Vector2
});
v20.defaultProps = {
    hideGamepadBottomBar = false
};
v20.getDerivedStateFromProps = function(v21, _)
    local v23 = v18.getNumElementsWithKeyField(v21.boundInputs) > 0;
    return {
        showBar = v23,
        height = not not v23 and v16.GAMEPAD_BOTTOM_BAR_SIZE or v16.GAMEPAD_BOTTOM_BAR_SIZE / 2
    };
end;
v20.renderWithLocalization = function(v24, v25)
    if v24.state.showBar then
        return l_withStyle_0(function(v26)
            local l_Theme_0 = v26.Theme;
            local l_Font_0 = v26.Font;
            local l_Font_1 = l_Font_0.Header2.Font;
            local v30 = l_Font_0.BaseSize * l_Font_0.Header2.RelativeSize;
            local v31 = v25.bText or v25.backText;
            local v32 = (24 + ((v9.App.Constant.IconSize.Regular + l_Text_0.GetTextWidth(v31, l_Font_1, v30)) + 8)) + 36;
            return v4.createElement(v4.Portal, {
                target = l_CoreGui_0
            }, {
                PortalUIForGamepadBottomBar = v4.createElement(v17, {
                    ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
                    DisplayOrder = v24.props.displayOrder,
                    Enabled = not v24.props.hideGamepadBottomBar
                }, {
                    AnimatedFrame = v4.createElement(l_SpringAnimatedItem_0.AnimatedFrame, {
                        regularProps = {
                            AnchorPoint = Vector2.new(0, 0),
                            Position = UDim2.new(0, 0, 0, 0),
                            BackgroundColor3 = l_Theme_0.BackgroundUIContrast.Color,
                            BackgroundTransparency = l_Theme_0.BackgroundUIContrast.Transparency,
                            Size = UDim2.new(1, 0, 0, v16.GAMEPAD_BOTTOM_BAR_SIZE),
                            ZIndex = 3
                        },
                        animatedValues = {
                            positionY = v24.state.height
                        },
                        mapValuesToProps = function(v33)
                            return {
                                Position = UDim2.new(0, 0, 1, -v33.positionY)
                            };
                        end,
                        springOptions = v19
                    }, {
                        BackElement = v4.createElement(v15, {
                            elementIcon = "rbxasset://textures/ui/Controls/DesignSystem/ButtonB.png",
                            elementText = v31,
                            position = UDim2.new(0, 24, 0, 0)
                        }),
                        UIElementsFrame = v4.createElement("Frame", {
                            Position = UDim2.new(0, v32, 0, 0),
                            Size = UDim2.new(1, -v32, 1, 0),
                            BackgroundTransparency = 1,
                            ClipsDescendants = true
                        }, {
                            UIElements = v4.createElement(l_FitFrameHorizontal_0, {
                                height = UDim.new(1, 0),
                                FillDirection = Enum.FillDirection.Horizontal,
                                AnchorPoint = Vector2.new(1, 0),
                                BackgroundTransparency = 1,
                                Position = UDim2.new(1, -24, 0, 0),
                                contentPadding = UDim.new(0, 36)
                            }, {
                                GamepadBottomBarElements = v4.createElement(v14, {
                                    width = v24.props.screenSize.X - v32,
                                    boundInputs = v24.props.boundInputs
                                })
                            })
                        })
                    })
                })
            });
        end);
    else
        return nil;
    end;
end;
v20.render = function(v34)
    local v35 = {
        backText = "CommonUI.Controls.Action.Back"
    };
    local v36 = v34.props.boundInputs[Enum.KeyCode.ButtonB];
    if not (not v36 or not v36.key) then
        v35 = v7.Dictionary.join(v35, {
            bText = v36.key
        });
    end;
    return l_withLocalization_0(v35)(function(v37)
        return v34:renderWithLocalization(v37);
    end);
end;
return (v5.connect(function(v38, _)
    return {
        boundInputs = v38.GamepadBottomBar.boundInputs,
        screenSize = v38.ScreenSize
    };
end)(v20));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Roact);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.GamepadBottomBarElement);
local v7 = {
    [Enum.KeyCode.ButtonA] = "rbxasset://textures/ui/Controls/DesignSystem/ButtonA.png",
    [Enum.KeyCode.ButtonB] = "rbxasset://textures/ui/Controls/DesignSystem/ButtonB.png",
    [Enum.KeyCode.ButtonX] = "rbxasset://textures/ui/Controls/DesignSystem/ButtonX.png",
    [Enum.KeyCode.ButtonY] = "rbxasset://textures/ui/Controls/DesignSystem/ButtonY.png",
    [Enum.KeyCode.ButtonL3] = "rbxasset://textures/ui/Controls/DesignSystem/ButtonL3.png",
    [Enum.KeyCode.ButtonR3] = "rbxasset://textures/ui/Controls/DesignSystem/ButtonR3.png",
    [Enum.KeyCode.Thumbstick1] = "rbxasset://textures/ui/Controls/DesignSystem/Thumbstick1Directional.png",
    [Enum.KeyCode.Thumbstick2] = "rbxasset://textures/ui/Controls/DesignSystem/Thumbstick2Directional.png"
};
local v8 = {
    [Enum.KeyCode.Thumbstick1] = {
        vertical = "rbxasset://textures/ui/Controls/DesignSystem/Thumbstick1Vertical.png",
        horizontal = "rbxasset://textures/ui/Controls/DesignSystem/Thumbstick1Horizontal.png"
    },
    [Enum.KeyCode.Thumbstick2] = {
        vertical = "rbxasset://textures/ui/Controls/DesignSystem/Thumbstick2Vertical.png",
        horizontal = "rbxasset://textures/ui/Controls/DesignSystem/Thumbstick2Horizontal.png"
    }
};
local v9 = {
    ["Feature.Catalog.Action.ItemOptions"] = 1,
    ["CommonUI.Messages.Action.Apply"] = 1,
    ["CommonUI.Messages.Action.Reset"] = 2,
    ["Feature.Catalog.Action.OpenDetails"] = 2,
    ["Feature.Catalog.Action.CloseDetails"] = 2,
    ["Feature.Catalog.Action.Buy"] = 3,
    ["Feature.Avatar.Heading.WearConfirmation"] = 4,
    ["CommonUI.Controls.Action.Confirm"] = 5,
    ["Feature.Catalog.Action.Remove"] = 6,
    ["Feature.Avatar.Title.Move"] = 7,
    ["Feature.Avatar.Action.Pan"] = 1,
    ["Feature.Avatar.Action.Zoom"] = 2,
    ["Feature.Avatar.Action.Rotate"] = 3,
    ["Feature.Avatar.Action.DefaultView"] = 4
};
local v10 = v3.PureComponent:extend("GamepadBottomBarContent");
v10.validateProps = v5.strictInterface({
    boundInputs = v5.table,
    width = v5.number
});
v10.renderElements = function(v11, v12, v13)
    local l_width_0 = v11.props.width;
    local v15 = {};
    local v16 = #v12;
    if v16 > 0 and l_width_0 > 0 then
        local v17 = ((l_width_0 - 36 * (v16 - 1)) - 24) / v16;
        for v18 = 1, v16 do
            local v19 = v12[v18];
            local v20 = v13[v18];
            v15[v18] = v3.createElement(v6, {
                elementIcon = v20.elementIcon,
                elementText = v19,
                layoutOrder = v20.layoutOrder,
                disabled = v20.disabled,
                width = v17
            });
        end;
    end;
    return v3.createFragment(v15);
end;
v10.render = function(v21)
    local l_boundInputs_0 = v21.props.boundInputs;
    local v23 = {};
    local v24 = {};
    if l_boundInputs_0 then
        for v25, v26 in l_boundInputs_0, nil, nil do
            if typeof(v26) == "table" and v25 ~= Enum.KeyCode.ButtonB then
                if not v26.axes then
                    if v26.key then
                        table.insert(v23, v26.key);
                        table.insert(v24, {
                            elementIcon = v7[v25],
                            layoutOrder = v9[v26.key] or 0,
                            disabled = v26.disabled
                        });
                    end;
                else
                    local l_vertical_0 = v26.axes.vertical;
                    local l_horizontal_0 = v26.axes.horizontal;
                    local v29 = v8[v25];
                    if l_vertical_0 then
                        table.insert(v23, l_vertical_0.key);
                        table.insert(v24, {
                            elementIcon = v29.vertical,
                            layoutOrder = v9[l_vertical_0.key] or 0,
                            disabled = l_vertical_0.disabled
                        });
                    end;
                    if l_horizontal_0 then
                        table.insert(v23, l_horizontal_0.key);
                        table.insert(v24, {
                            elementIcon = v29.horizontal,
                            layoutOrder = v9[l_horizontal_0.key] or 0,
                            disabled = l_horizontal_0.disabled
                        });
                    end;
                end;
            end;
        end;
    end;
    return l_withLocalization_0(v23)(function(v30)
        return v21:renderElements(v30, v24);
    end);
end;
return v10;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Cryo);
local v2 = require(l_CorePackages_0.Roact);
local l_Text_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Text;
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v5.Style.withStyle;
local l_ImageSetLabel_0 = v5.Core.ImageSet.ImageSetLabel;
local v8 = v2.PureComponent:extend("GamepadBottomBarElement");
v8.validateProps = v4.strictInterface({
    elementIcon = v4.string,
    elementText = v4.string,
    position = v4.optional(v4.UDim2),
    layoutOrder = v4.optional(v4.number),
    forwardRef = v4.optional(v4.table),
    width = v4.optional(v4.number),
    disabled = v4.optional(v4.boolean)
});
v8.defaultValue = {
    position = UDim2.new(0, 0, 0, 0),
    layoutOrder = 1
};
v8.render = function(v9)
    return l_withStyle_0(function(v10)
        local l_Theme_0 = v10.Theme;
        local l_Font_0 = v10.Font;
        local l_Font_1 = l_Font_0.Header2.Font;
        local v14 = l_Font_0.BaseSize * l_Font_0.Header2.RelativeSize;
        local l_Regular_0 = v5.App.Constant.IconSize.Regular;
        local v16 = l_Text_0.GetTextWidth(v9.props.elementText, l_Font_1, v14);
        local v17 = nil;
        if v9.props.width and v9.props.width < v16 then
            v16 = v9.props.width - (l_Regular_0 + 8);
            v17 = v9.props.width;
        else
            v17 = (v16 + l_Regular_0) + 8;
        end;
        return v2.createElement("Frame", {
            Size = UDim2.new(0, v17, 1, 0),
            BackgroundTransparency = 1,
            Position = v9.props.position,
            LayoutOrder = v9.props.layoutOrder,
            [v2.Ref] = v9.props.forwardRef
        }, {
            Icon = v2.createElement(l_ImageSetLabel_0, {
                AnchorPoint = Vector2.new(0, 0.5),
                Position = UDim2.new(0, 0, 0.5, 0),
                BackgroundTransparency = 1,
                Size = UDim2.new(0, l_Regular_0, 0, l_Regular_0),
                Image = v9.props.elementIcon,
                ImageColor3 = l_Theme_0.IconEmphasis.Color,
                ImageTransparency = if not v9.props.disabled then l_Theme_0.IconEmphasis.Transparency else 0.5
            }),
            TextFrame = v2.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.new(0, v16, 1, 0),
                Position = UDim2.new(0, l_Regular_0 + 8, 0, 0)
            }, {
                Text = v2.createElement("TextLabel", {
                    Text = v9.props.elementText,
                    AnchorPoint = Vector2.new(0, 0.5),
                    Position = UDim2.new(0, 0, 0.5, 0),
                    Size = UDim2.new(1, 0, 0, v14),
                    BackgroundTransparency = 1,
                    TextColor3 = l_Theme_0.TextEmphasis.Color,
                    TextTransparency = if not v9.props.disabled then l_Theme_0.TextEmphasis.Transparency else 0.5,
                    Font = l_Font_1,
                    TextSize = v14,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextScaled = true
                })
            })
        });
    end);
end;
return v2.forwardRef(function(v18, v19)
    return v2.createElement(v8, v1.Dictionary.join(v18, {
        forwardRef = v19
    }));
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local l_withNavigation_0 = require(l_CorePackages_0.RoactNavigation).withNavigation;
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.withAvatarRoute);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarRoute);
local v7 = require(l_Modules_0.AvatarExperience.Common.Debug.LogTree).logger("ax.gamepad");
local v8 = require(l_Modules_0.AvatarExperience.Common.Components.GamepadFocusRecovery);
local l_withIsGamepadInput_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).withIsGamepadInput;
local v10 = v2.PureComponent:extend("GamepadFocusHandlerForPage");
v10.validateProps = v4.strictInterface({
    focusController = v4.table,
    captureFocusOnMount = v4.optional(v4.boolean),
    isGamepadInput = v4.optional(v4.boolean),
    navigation = v4.table,
    avatarRoute = v6.Interface
});
v10.defaultProps = {
    captureFocusOnMount = false
};
v10.debugName = function(v11)
    local l_state_0 = v11.props.navigation.state;
    return (l_state_0.routeName or "") .. ":" .. (l_state_0.key or "");
end;
v10.render = function(v13)
    return v2.createElement(v8, {
        focusController = v13.props.focusController,
        isGamepadInput = v13.props.isGamepadInput,
        debugName = v13:debugName()
    });
end;
local function _(v14)
    return v14.navigation.state.key == v14.avatarRoute.current.key;
end;
v10.canCaptureFocus = function(v16, v17)
    local l_avatarRoute_0 = v16.props.avatarRoute;
    local l_isGamepadInput_0 = v16.props.isGamepadInput;
    local l_props_0 = v16.props;
    local v21 = l_props_0.navigation.state.key == l_props_0.avatarRoute.current.key;
    l_props_0 = ((v21 and l_avatarRoute_0.isVisible) and not l_avatarRoute_0.isOverlayVisible) and l_isGamepadInput_0;
    if v17 then
        v7:trace("{} {} canCapture: {}, isCurrentScreen: {}, currentRoute: {}, " .. "isVisible: {}, isOverlayVisible: {}, isGamepadInput: {}", v16:debugName(), v17, l_props_0, v21, l_avatarRoute_0.current, l_avatarRoute_0.isVisible, l_avatarRoute_0.isOverlayVisible, l_isGamepadInput_0);
    end;
    return l_props_0;
end;
v10.didMount = function(v22)
    if not (not v22.props.captureFocusOnMount or not v22:canCaptureFocus("didMount")) then
        v7:debug("captureFocusOnMount page: {}", v22:debugName());
        v22.props.focusController.captureFocus();
    end;
end;
v10.didUpdate = function(v23, v24)
    if not v23:canCaptureFocus("didUpdate") then
        if v24.isGamepadInput and not v23.props.isGamepadInput then
            v7:debug("releaseFocus {}", v23:debugName());
            v23.props.focusController.releaseFocus();
        end;
    else
        local v25 = not (v24.navigation.state.key == v24.avatarRoute.current.key);
        local v26 = not v24.isGamepadInput;
        local v27 = not v24.avatarRoute.isVisible;
        if not (not (v25 or v26) and not v27) then
            v7:debug("captureFocus {}, navigatedToThisPage: {}, acquiredVisibility: {}", v23:debugName(), v25, v27);
            v23.props.focusController.captureFocus();
            return ;
        end;
    end;
end;
return (l_withNavigation_0((v5((l_withIsGamepadInput_0(v10))))));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactNavigation);
local l_withNavigation_0 = v4.withNavigation;
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarRoute);
local v7 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.withAvatarRoute);
local v8 = require(l_Modules_0.LuaApp.mutedError);
local v9 = require(l_CorePackages_0.Packages.t);
local v10 = require(l_Modules_0.AvatarExperience.Common.Debug.LogTree).logger("ax.gamepad");
local v11 = v3.PureComponent:extend("GamepadFocusRecovery");
v11.defaultProps = {
    debugName = "Unspecified"
};
v11.validateProps = v9.strictInterface({
    focusController = v9.table,
    isGamepadInput = v9.boolean,
    debugName = v9.optional(v9.string),
    avatarRoute = v6.Interface,
    navigation = v9.table
});
v11.init = function(v12)
    v12:setState({
        isFocused = v12.props.navigation.isFocused()
    });
    v12.onWillFocus = function()
        v12.selectedCoreObjectConnection = l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):Connect(function()
            v12:startTrackingSelectedCoreObject();
        end);
        v12:startTrackingSelectedCoreObject();
        v12:setState({
            isFocused = true
        });
    end;
    v12.onWillBlur = function()
        v12:onBlurOrUnmount();
        v12:setState({
            isFocused = false
        });
    end;
end;
v11.onBlurOrUnmount = function(v13)
    v13:stopTrackingSelectedCoreObject();
    if v13.selectedCoreObjectConnection then
        v13.selectedCoreObjectConnection:Disconnect();
        v13.selectedCoreObjectConnection = nil;
    end;
end;
v11.handleFocusLost = function(v14, v15)
    wait();
    local l_SelectedCoreObject_0 = l_GuiService_0.SelectedCoreObject;
    if not (l_SelectedCoreObject_0 ~= nil) or not l_SelectedCoreObject_0:IsDescendantOf(game) then
        if v14:canCaptureFocus() then
            v14.props.focusController:captureFocus();
            if v15 ~= nil then
                v8(string.format("[GamepadFocusRecovery] Lost focus on object: %s, screen: %s, %s", tostring(v15), v14.props.debugName, (tostring(v14.props.avatarRoute))), nil);
            end;
        end;
        return ;
    else
        return ;
    end;
end;
v11.startTrackingSelectedCoreObject = function(v17)
    v17:stopTrackingSelectedCoreObject();
    local l_SelectedCoreObject_1 = l_GuiService_0.SelectedCoreObject;
    v10:trace("SelectedCoreObject: {}", not not l_SelectedCoreObject_1 and l_SelectedCoreObject_1:GetFullName() or "nil");
    if l_SelectedCoreObject_1 ~= nil and l_SelectedCoreObject_1:IsDescendantOf(game) then
        v17.selectedCoreObjectAncestryConnection = l_SelectedCoreObject_1.AncestryChanged:Connect(function(_, v20)
            if not v20 then
                v17:stopTrackingSelectedCoreObject();
                v17:handleFocusLost(l_SelectedCoreObject_1);
            end;
        end);
        return ;
    else
        v17:handleFocusLost(l_SelectedCoreObject_1);
        return ;
    end;
end;
v11.stopTrackingSelectedCoreObject = function(v21)
    if v21.selectedCoreObjectAncestryConnection then
        v21.selectedCoreObjectAncestryConnection:Disconnect();
        v21.selectedCoreObjectAncestryConnection = nil;
    end;
end;
v11.render = function(v22)
    return v3.createElement(v4.NavigationEvents, {
        onWillFocus = v22.onWillFocus,
        onWillBlur = v22.onWillBlur
    });
end;
v11.willUnmount = function(v23)
    v23:onBlurOrUnmount();
end;
v11.canCaptureFocus = function(v24)
    return ((v24.props.avatarRoute and v24.props.avatarRoute.isVisible) and v24.props.isGamepadInput) and v24.state.isFocused;
end;
return l_withNavigation_0(v7(v11), nil);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_Modules_0.LuaApp.getCurrentPage);
local v7 = v2.PureComponent:extend("AvatarExperienceImpressionsDetector");
v7.validateProps = v5.strictInterface({
    scanDebounceSeconds = v5.optional(v5.number),
    viewFillPercent = v5.optional(v5.number),
    parentRef = v5.optional(v5.table),
    onRequestImpressionsSignal = v5.table,
    viewPortBounds = v5.strictInterface({
        min = v5.Vector2,
        max = v5.Vector2
    }),
    appPage = v5.optional(v5.string),
    currentPage = v5.optional(v5.string),
    pageFilter = v5.optional(v5.callback),
    collectObjectsFunc = v5.optional(v5.callback),
    filterImpressionFunc = v5.optional(v5.callback),
    onImpressionsDetected = v5.union(v5.callback, v5.table)
});
v7.defaultProps = {
    scanDebounceSeconds = 1,
    viewFillPercent = 0.25
};
v7.init = function(v8)
    v8.isMounted = false;
    v8.lastImpressionTick = nil;
    v8.nextImpressionTick = nil;
end;
v7._isInstanceVisible = function(v9, v10)
    if v10 then
        local l_viewPortBounds_0 = v9.props.viewPortBounds;
        v4.assert(l_viewPortBounds_0 ~= nil);
        if l_viewPortBounds_0 then
            local v12 = nil;
            local v13 = l_viewPortBounds_0.max - l_viewPortBounds_0.min;
            v4.assert(v13.X > 0);
            v4.assert(v13.Y > 0);
            v12 = v13 * v9.props.viewFillPercent;
            v13 = v4.assert;
            local v14 = false;
            if v12.X > 0 then
                v14 = v12.Y > 0;
            end;
            v13(v14);
            if not (v12.X > 0) or v12.Y <= 0 then
                return false;
            else
                v13 = v10.AbsolutePosition;
                v14 = v13 + v10.AbsoluteSize / 2;
                local v15 = v13 + v10.AbsoluteSize;
                local v16 = false;
                if l_viewPortBounds_0.min.X < v14.X then
                    v16 = v14.X < l_viewPortBounds_0.max.X;
                end;
                local v17 = false;
                if l_viewPortBounds_0.min.Y < v14.Y then
                    v17 = v14.Y < l_viewPortBounds_0.max.Y;
                end;
                if not v16 or not v17 then
                    local v18 = v15:Min(l_viewPortBounds_0.max) - v13:Max(l_viewPortBounds_0.min);
                    local v19 = v12.X <= v18.X;
                    if not v17 or not v19 then
                        local v20 = v12.Y <= v18.Y;
                        if not v16 or not v20 then
                            if not v19 or not v20 then
                                return false;
                            else
                                return true;
                            end;
                        else
                            return true;
                        end;
                    else
                        return true;
                    end;
                else
                    return true;
                end;
            end;
        else
            return false;
        end;
    else
        return false;
    end;
end;
v7._defaultObjectCollector = function(v21)
    return v21:GetChildren();
end;
v7._calculateImpressions = function(v22)
    if v22.isMounted then
        if not v22.props.pageFilter then
            if v22.props.appPage ~= v22.props.currentPage then
                return ;
            end;
        elseif not v22.props.pageFilter(v22.props.currentPage) then
            return ;
        end;
        local v23 = v22.props.parentRef and v22.props.parentRef.current;
        if v23 and v22:_isInstanceVisible(v23) then
            v22.lastImpressionTick = tick();
            local v24 = {};
            local v25 = (v22.props.collectObjectsFunc or v22._defaultObjectCollector)(v23);
            if v25 then
                for _, v27 in v25, nil, nil do
                    if not ((not v27:isA("GuiObject") or not v22:_isInstanceVisible(v27)) or v22.props.filterImpressionFunc ~= nil and not v22.props.filterImpressionFunc(v27)) then
                        table.insert(v24, v27);
                    end;
                end;
            end;
            if #v24 > 0 then
                v4.assert(v22.props.onImpressionsDetected ~= nil);
                v22.props.onImpressionsDetected(v24);
            end;
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v7._requestImpressions = function(v28)
    if v28.isMounted then
        if v28.nextImpressionTick ~= nil then
            return ;
        elseif v28.props.parentRef and v28.props.parentRef.current then
            local v29 = 0;
            if v28.lastImpressionTick ~= nil then
                v28.nextImpressionTick = v28.lastImpressionTick + v28.props.scanDebounceSeconds;
                v29 = v28.nextImpressionTick - tick();
            end;
            if v29 > 0 then
                task.delay(v29, function()
                    local l_assert_0 = v4.assert;
                    local v31 = false;
                    if v28.nextImpressionTick ~= nil then
                        v31 = v28.nextImpressionTick < tick();
                    end;
                    l_assert_0(v31);
                    v28.nextImpressionTick = nil;
                    v28:_calculateImpressions();
                end);
                return ;
            else
                v28.nextImpressionTick = nil;
                v28:_calculateImpressions();
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v7.render = function(_)
    return nil;
end;
v7.didMount = function(v33)
    v33.isMounted = true;
    v33:_requestImpressions();
    if v33.props.onRequestImpressionsSignal then
        v33.onRequestImpressionsConnection = v33.props.onRequestImpressionsSignal:connect(function()
            v33:_requestImpressions();
        end);
    end;
end;
v7.willUnmount = function(v34)
    v34.isMounted = false;
    if v34.onRequestImpressionsConnection ~= nil then
        v34.onRequestImpressionsConnection:disconnect();
        v34.onRequestImpressionsConnection = nil;
    end;
end;
v7.didUpdate = function(v35, _, _)
    v35:_requestImpressions();
end;
return (v3.connect(function(v38, _)
    return {
        currentPage = v6(v38)
    };
end)(v7));


local l_default_0 = require(game:GetService("CorePackages").Workspace.Packages.LoggingProtocol).default;
local v1 = game:DefineFastInt("AXPointsEventHundredthsPercent", 0);
local function _(v2)
    return {
        eventName = "AvatarExperience" .. v2,
        backends = {
            l_default_0.TelemetryBackends.Points
        },
        throttlingPercentage = v1
    };
end;
return {
    sendTelemetryEvent = function(v4, v5)
        l_default_0:logRobloxTelemetryEvent({
            eventName = "AvatarExperience" .. v4,
            backends = {
                l_default_0.TelemetryBackends.Points
            },
            throttlingPercentage = v1
        }, nil, v5);
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.AvatarExperienceImpressionsDetector);
local v6 = v2.PureComponent:extend("AvatarExperienceScreenSizeImpressionsDetector");
v6.validateProps = v4.strictInterface({
    parentRef = v4.table,
    onRequestImpressionsSignal = v4.table,
    appPage = v4.optional(v4.string),
    pageFilter = v4.optional(v4.callback),
    collectObjectsFunc = v4.optional(v4.callback),
    filterImpressionFunc = v4.optional(v4.callback),
    onImpressionsDetected = v4.callback,
    screenSize = v4.Vector2,
    globalGuiInset = v4.table,
    topBarHeight = v4.number
});
v6.render = function(v7)
    local l_screenSize_0 = v7.props.screenSize;
    return v2.createElement(v5, {
        parentRef = v7.props.parentRef,
        onRequestImpressionsSignal = v7.props.onRequestImpressionsSignal,
        viewPortBounds = {
            min = Vector2.new(0, v7.props.topBarHeight),
            max = Vector2.new(l_screenSize_0.X, l_screenSize_0.Y - v7.props.globalGuiInset.bottom)
        },
        appPage = v7.props.appPage,
        pageFilter = v7.props.pageFilter,
        collectObjectsFunc = v7.props.collectObjectsFunc,
        filterImpressionFunc = v7.props.filterImpressionFunc,
        onImpressionsDetected = v7.props.onImpressionsDetected
    });
end;
return (v3.connect(function(v9, _)
    return {
        topBarHeight = v9.TopBar.topBarHeight,
        globalGuiInset = v9.GlobalGuiInset,
        screenSize = v9.ScreenSize
    };
end)(v6));


return {
    MarketplaceItemType = {
        ASSET = 0,
        BUNDLE = 1,
        LOOK = 2
    },
    MarketplaceSurfaceType = {
        HOMEPAGE = 0,
        SEARCH = 1,
        ITEM_DETAIL = 2,
        MARKETPLACE_USER_INVENTORY = 3
    },
    ActionType = {
        IMPRESSION = 0,
        ITEM_CLICK = 1,
        WIDGET_CLICK = 2,
        PURCHASE_SUCCESS = 3,
        ITEM_DESELECTED = 4,
        PURCHASE_ATTEMPT = 5,
        ITEM_IMPRESSION = 6,
        CLICK_ITEM_DETAIL = 7,
        SEE_ALL = 8
    }
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CollectionService_0 = game:GetService("CollectionService");
local v3 = require(l_CorePackages_0.Packages.React);
local v4 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v5 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.ImpressionsUtil);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.ImpressionsSchema);
local v7 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.ImpressionsEnums);
local v8 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.AvatarExperienceScreenSizeImpressionsDetector);
local v9 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.AvatarExperiencePointsTelemetry);
local v10 = require(l_Modules_0.AvatarExperience.Catalog.Services.Analytics);
local v11 = game:DefineFastFlag("EnableImpressionReporterCounter3", false);
local v12 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local v13 = require(l_Modules_0.LuaApp.Hooks.useRoactService);
local l_ITEM_IMPRESSION_0 = v7.ActionType.ITEM_IMPRESSION;
return function(v15)
    local v16 = v13(v12);
    local v17 = if not v11 then nil else v13(v10);
    local v18, v19 = v3.useState(0);
    local v20 = v3.useState({});
    v3.useEffect(function()
        task.delay(1, function()
            v19(v18 + v4.ImpressionsDetectionInterval);
        end);
    end, {
        v18
    });
    return v3.createElement(v8, {
        parentRef = v15.parentRef,
        pageFilter = v15.pageFilter,
        onRequestImpressionsSignal = v15.onRequestImpressionsSignal,
        collectObjectsFunc = function(_)
            return l_CollectionService_0:GetTagged(v15.impressionsTag);
        end,
        filterImpressionFunc = function(v22)
            local l_v22_Attribute_0 = v22:GetAttribute(v15.impressionsTag);
            return l_v22_Attribute_0 and not v20[l_v22_Attribute_0];
        end,
        onImpressionsDetected = function(v24)
            for _, v26 in v24, nil, nil do
                v20[v26:GetAttribute(v15.impressionsTag)] = true;
            end;
            local v27 = v5.packEvents(v6[v15.impressionsSchema], v24);
            if v27 then
                for _, v29 in v27, nil, nil do
                    local v30 = nil;
                    v30 = if not v15.eventNamePrefix then v15.eventName else v15.eventNamePrefix .. v15.eventName;
                    v29.requestId = v15.requestId;
                    v29.actionType = l_ITEM_IMPRESSION_0;
                    if v11 then
                        v17.sendCounter("AvatarCatalogImpressionReported");
                        v9.sendTelemetryEvent("Impression", {
                            id = v15.requestId
                        });
                    end;
                    v16:sendEventDeferred(v15.eventContext, v30, v29);
                end;
            end;
        end
    });
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Constants);
local v2 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.ImpressionsEnums);
local v3 = require(l_Modules_0.AvatarExperience.Common.Components.Impressions.ImpressionsUtil);
local v4 = {};
local v10 = {
    __newindex = function(_, v6)
        error("Attempt to insert into impressions schemas: " .. v6);
    end,
    __index = function(v7, v8)
        if v8 then
            local v9 = rawget(v7, v8);
            if not v9 then
                warn("No such impressions schema: " .. v8);
            end;
            return v9;
        else
            warn("Nil ImpressionsSchema lookup");
            return ;
        end;
    end
};
v4.defaultItem = v3.buildSchema(v1.ImpressionsEvents.AvatarItems, {
    enumMap = {
        contentType = {
            Asset = v2.MarketplaceItemType.ASSET,
            Bundle = v2.MarketplaceItemType.BUNDLE
        }
    },
    mapping = {
        {
            prop = "index",
            out = "absPositions"
        },
        {
            prop = "itemId",
            out = "itemId"
        },
        {
            prop = "itemType",
            out = "contentType"
        },
        {
            prop = "impressionsGroup",
            out = "group"
        },
        {
            prop = "impressionsSearch",
            out = "keyword"
        }
    },
    groupBy = {
        "itemId"
    }
});
setmetatable(v4, v10);
return v4;


return {
    writeItemAttributes = function(v0, v1, v2)
        if v0 then
            for v3, v4 in v0.mapping, nil, nil do
                local v5 = v2[v3];
                if v5 then
                    v1:SetAttribute(v4.attribute, v5);
                end;
            end;
            return ;
        else
            warn("Impressions schema is nil");
            return ;
        end;
    end,
    buildSchema = function(v6, v7)
        local v8 = {};
        local l_groupBy_0 = v7.groupBy;
        for _, v11 in v7.mapping, nil, nil do
            v8[v11.prop] = {
                attribute = string.format("%s_%s", v6, v11.prop),
                out = v11.out,
                isGrouping = not not l_groupBy_0 and table.find(l_groupBy_0, v11.out) ~= nil
            };
        end;
        if l_groupBy_0 then
            for _, v13 in l_groupBy_0, nil, nil do
                local v14 = false;
                for _, v16 in v7.mapping, nil, nil do
                    if v16.out == v13 then
                        v14 = true;
                    end;
                    if v14 then
                        break;
                    end;
                end;
                if not v14 then
                    error(string.format("Impression schema groupBy field '%s' not specified in output mapping", v13));
                end;
            end;
        end;
        return {
            mapping = v8,
            enumMap = v7.enumMap
        };
    end,
    packEvents = function(v17, v18)
        if v17 then
            local v19 = {};
            local v20 = {};
            for v21, v22 in v18, nil, nil do
                local l_v22_Attributes_0 = v22:GetAttributes();
                local v24 = "";
                for _, v26 in v17.mapping, nil, nil do
                    if v26.isGrouping then
                        v24 = v24 .. (l_v22_Attributes_0[v26.attribute] or "_");
                    end;
                end;
                local v27 = v19[v24] or {};
                v19[v24] = v27;
                for _, v29 in v17.mapping, nil, nil do
                    local v30 = l_v22_Attributes_0[v29.attribute];
                    local l_out_0 = v29.out;
                    if not v29.isGrouping then
                        local v32 = v27[l_out_0] or {};
                        v27[l_out_0] = v32;
                        v32[v21] = v30 or "";
                        if not (not v17.enumMap or not v17.enumMap[l_out_0]) then
                            v32[v21] = v17.enumMap[l_out_0][v30];
                        end;
                    else
                        v27[l_out_0] = v30;
                    end;
                end;
            end;
            for _, v34 in v19, nil, nil do
                local v35 = {};
                table.insert(v20, v35);
                for _, v37 in v17.mapping, nil, nil do
                    local l_out_1 = v37.out;
                    local v39 = v34[l_out_1];
                    if typeof(v39) == "table" then
                        for _, v41 in v39, nil, nil do
                            if not v35[l_out_1] then
                                v35[l_out_1] = tostring(v41);
                            else
                                v35[l_out_1] = v35[l_out_1] .. "," .. tostring(v41);
                            end;
                        end;
                    else
                        v35[l_out_1] = v39;
                    end;
                end;
            end;
            return v20;
        else
            warn("Impressions schema nil");
            return ;
        end;
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.React);
local v4 = require(l_CorePackages_0.Packages.RoactGamepad);
local v5 = require(l_CorePackages_0.AvatarExperienceDeps);
local v6 = require(l_CorePackages_0.Packages.Dash);
local v7 = require(l_CorePackages_0.UIBlox);
local l_PeekViewState_0 = require(l_CorePackages_0.Workspace.Packages.PeekView).PeekViewState;
local l_useNavigation_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.useNavigation;
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local v11 = require(l_Modules_0.AvatarExperience.Common.Hooks.useItemInfo);
local l_Focusable_0 = v4.Focusable;
local v13 = require(l_Modules_0.LuaApp.Hooks.useLocalization);
local v14 = require(l_Modules_0.LuaApp.Hooks.useAppPolicy);
local l_AvatarExperience_0 = l_Modules_0.AvatarExperience;
local l_Common_0 = l_AvatarExperience_0.Common;
local l_Catalog_0 = l_AvatarExperience_0.Catalog;
local _ = require(l_Common_0.Types);
local v19 = require(l_Common_0.Components.RoactNavigation.AvatarScreen);
local v20 = require(l_Common_0.Constants);
local v21 = require(l_Common_0.Components.ItemDetails.ItemDescription);
local v22 = require(l_Common_0.Components.ItemDetails.ItemStatistics);
local v23 = require(l_Common_0.Components.ItemDetails.ItemOwnershipButton);
local v24 = require(l_Common_0.Components.ItemDetails.ItemInfo.ItemInfoList);
local v25 = require(l_Common_0.Components.ItemDetails.RecommendedItemsGrid);
local v26 = require(l_Common_0.Components.ItemDetails.IncludedItemsGrid);
local v27 = require(l_Common_0.Components.ItemDetails.ItemImageAndName);
local v28 = require(l_Catalog_0.CatalogUtils);
local l_GetCanExpand_0 = v7.Core.Text.ExpandableText.GetCanExpand;
local l_useStyle_0 = v7.Core.Style.useStyle;
local l_Flags_0 = l_AvatarExperience_0.Flags;
local v32 = require(l_Flags_0.FFlagAXFixItemTypeHandling);
local v33 = require(l_Flags_0.FFlagAEShowPremiumPolicy);
local v34 = require(l_Flags_0.GetFFlagRestrictLimited2ToSoothsayers);
local v35 = require(l_Flags_0.GetFFlagL2ControllerSupport);
local v36 = require(l_Flags_0.FFlagEnableAttributionItemRow);
local v37 = require(l_Flags_0.GetAXInExperienceItemLinking);
local l_RoactFitComponents_0 = v5.RoactFitComponents;
local l_FitFrameVertical_0 = l_RoactFitComponents_0.FitFrameVertical;
local l_FitTextLabel_0 = l_RoactFitComponents_0.FitTextLabel;
local v41 = {
    listPadding = 24
};
return function(v42)
    assert(v32, "Flag FFlagAXFixItemTypeHandling should be true");
    assert(v42.itemType ~= v20.ItemType.Outfit, "AssetOrBundleDetailsInnards does not support oufits");
    local v43 = v6.join(v41, v42);
    local v44 = v13({
        recommendedLabel = "Feature.Catalog.Label.Recommendations",
        resellLabel = "Feature.Catalog.Heading.Sellers",
        tryOn = "Feature.Avatar.Action.TryOn",
        inMultipleExperiences = "Feature.Catalog.Label.InMultipleExperiences",
        inSpecificExperience = "Feature.Catalog.Label.InSpecificExperience",
        soldOut = "Feature.Catalog.Label.SoldOut"
    });
    local v45 = l_useStyle_0();
    local v46 = l_useNavigation_0();
    local v48 = v14(function(v47)
        return v47.getShowCatalogPremiumContent();
    end);
    local l_Theme_0 = v45.Theme;
    local l_Font_0 = v45.Font;
    local v51 = v11(v43.itemId, v43.itemType);
    local v53 = l_useSelector_0(function(v52)
        return v52.AvatarExperience.Common.ItemDetailsPeekView.viewState;
    end);
    local v54 = nil;
    local v55 = nil;
    local v56 = nil;
    local v57 = nil;
    if v51 then
        v54 = v51.itemSubType;
        v55 = v51.name;
        v56 = if not v33 then v51.hasPremiumBenefits else v51.hasPremiumBenefits and v48;
        if v37() then
            v57 = v51.collectibleItemId;
        end;
    end;
    local v59 = l_useSelector_0((v3.useCallback(function(v58)
        if not v57 then
            return nil;
        else
            return v58.AvatarExperience.Common.Collectibles.CollectiblesItemInfo[v57];
        end;
    end, {
        v57
    })));
    local v61 = l_useSelector_0((v3.useCallback(function(v60)
        if not v34() then
            return false;
        else
            return v60.AvatarExperience.Catalog.Metadata.isCollectiblesEnabled;
        end;
    end, {})));
    local function _()
        if not v51 then
            return nil;
        else
            return v51.description;
        end;
    end;
    local function _()
        return v46.state.routeName == v19.TryOnItem;
    end;
    local function _()
        local v64 = true;
        if v53 ~= l_PeekViewState_0.Full then
            v64 = v53 == l_PeekViewState_0.Extended;
        end;
        return v64;
    end;
    local function _()
        if not v51 then
            return false;
        elseif not v51.isResellable then
            return false;
        else
            return true;
        end;
    end;
    local function _()
        if not v51 or not v51.isOwned then
            return false;
        elseif not v34() then
            if not v51 then
                return false;
            elseif not v51.isResellable then
                return false;
            else
                return true;
            end;
        else
            return (not not v51 and (v51.isResellable and true or false)) and v61;
        end;
    end;
    local function _()
        if not v51 then
            return false;
        elseif not v51.hasAttribution then
            return false;
        else
            return true;
        end;
    end;
    local function _()
        if not (v46.state.routeName == v19.TryOnItem) then
            if (not (v43.itemType == v20.ItemType.Asset) or not v54) or v28.doesAssetTypeHaveCatalogPage(v54) then
                if not (not v51 or not v51.receivedRecommendedData) and (not (v51.recommendedItemSummaries ~= nil) or #v51.recommendedItemSummaries == 0) then
                    return false;
                else
                    return true;
                end;
            else
                return false;
            end;
        else
            return false;
        end;
    end;
    local function v71()
        local v70 = if not v51 then nil else v51.description;
        if v70 then
            return l_GetCanExpand_0(l_Font_0, v43.width - 48, v70, 3);
        else
            return false;
        end;
    end;
    local function v73()
        local v72 = true;
        if v53 ~= l_PeekViewState_0.Full then
            v72 = v53 == l_PeekViewState_0.Extended;
        end;
        if v72 then
            v72 = (not not v51 and if v51.isOwned then if v34() then (not not v51 and (v51.isResellable and true or false)) and v61 else if v51 then v51.isResellable and true or false else false else false) and v35();
        end;
        return v72;
    end;
    local function v76()
        local v74 = not not v51 and (v51.isResellable and true or false);
        local v75 = true;
        if v53 ~= l_PeekViewState_0.Full then
            v75 = v53 == l_PeekViewState_0.Extended;
        end;
        if v75 then
            v75 = v74 and not (v46.state.routeName == v19.TryOnItem);
        end;
        return v75;
    end;
    local function v79()
        local v77 = not not v51 and (v51.hasAttribution and true or false);
        local v78 = true;
        if v53 ~= l_PeekViewState_0.Full then
            v78 = v53 == l_PeekViewState_0.Extended;
        end;
        if v78 then
            v78 = (v77 and not (v46.state.routeName == v19.TryOnItem)) and v36;
        end;
        return v78;
    end;
    local function v80()
        if not (v46.state.routeName == v19.TryOnItem) then
            if (not (v43.itemType == v20.ItemType.Asset) or not v54) or v28.doesAssetTypeHaveCatalogPage(v54) then
                if not (not v51 or not v51.receivedRecommendedData) and (not (v51.recommendedItemSummaries ~= nil) or #v51.recommendedItemSummaries == 0) then
                    return false;
                else
                    return true;
                end;
            else
                return false;
            end;
        else
            return false;
        end;
    end;
    local function _()
        if not (v46.state.routeName == v19.TryOnItem) then
            if v51 then
                assert(v51, "silence type checker");
                if v51.itemType ~= v20.ItemType.Bundle then
                    return false;
                else
                    return true;
                end;
            else
                return false;
            end;
        else
            return false;
        end;
    end;
    local v82 = v3.useRef(nil);
    local v83 = if not v35() then nil else v3.useRef(nil);
    local v84 = v3.useRef(nil);
    local v85 = if not v36 then nil else v3.useRef(nil);
    local v86 = v3.useRef(nil);
    local v87 = {};
    table.insert(v87, {
        ref = v82,
        shouldCareAboutRef = v71
    });
    if v83 then
        table.insert(v87, {
            ref = v83,
            shouldCareAboutRef = v73
        });
    end;
    table.insert(v87, {
        ref = v84,
        shouldCareAboutRef = v76
    });
    if v85 then
        table.insert(v87, {
            ref = v85,
            shouldCareAboutRef = v79
        });
    end;
    table.insert(v87, {
        ref = v86,
        shouldCareAboutRef = v80
    });
    local _ = function()
        for _, v89 in v87, nil, nil do
            if v89.shouldCareAboutRef() then
                return v89.ref;
            end;
        end;
        return nil;
    end;
    local function v95(v91)
        local v92 = false;
        for _, v94 in v87, nil, nil do
            if v94.ref == v91 then
                v92 = true;
            elseif not (not v92 or not v94.shouldCareAboutRef()) then
                return v94.ref;
            end;
        end;
        return v43.NextSelectionDown;
    end;
    local function v100(v96)
        local l_NextSelectionUp_0 = v43.NextSelectionUp;
        for _, v99 in v87, nil, nil do
            if v99.ref == v96 then
                return l_NextSelectionUp_0;
            elseif v99.shouldCareAboutRef() then
                l_NextSelectionUp_0 = v99.ref;
            end;
        end;
        return l_NextSelectionUp_0;
    end;
    local function v101()
        v46.navigate(v19.ItemOwnershipPage, {
            itemId = v43.itemId,
            collectibleItemId = v57,
            itemType = v43.itemType
        });
    end;
    local function _()
        if not v51 then
            return nil;
        else
            return v51.favoriteCount;
        end;
    end;
    local function _()
        return v43.showFullWithNoPeekView and v43.bottomDockedContainerHeight > 0;
    end;
    local function _()
        return l_Font_0.BaseSize * l_Font_0.Header1.RelativeSize;
    end;
    local l_listPadding_0 = v43.listPadding;
    local v106;
    for _, v108 in v87, nil, nil do
        if v108.shouldCareAboutRef() then
            v106 = v108.ref;
            goto label0 --[[  true, false  ]];
        end;
    end;
    v106 = nil;
    ::label0::;
    local v109 = if not v51 then nil else v51.description;
    local v110 = if not v51 then nil else v51.favoriteCount;
    local v111;
    if not (v46.state.routeName == v19.TryOnItem) then
        if v51 then
            assert(v51, "silence type checker");
            v111 = v51.itemType == v20.ItemType.Bundle;
        else
            v111 = false;
        end;
    else
        v111 = false;
    end;
    return v3.createElement(l_Focusable_0[l_FitFrameVertical_0], {
        width = UDim.new(1, 0),
        contentPadding = UDim.new(0, l_listPadding_0),
        margin = l_RoactFitComponents_0.Rect.square(24),
        FillDirection = Enum.FillDirection.Vertical,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
        BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
        BorderSizePixel = 0,
        Position = UDim2.new(0, 0, 0, 0),
        defaultChild = v106,
        restorePreviousChildFocus = true,
        inputBindings = {
            MoveToTop = v4.Input.onBegin(Enum.KeyCode.ButtonL2, function()
                v43.peekViewFocusController.moveFocusTo(v106);
            end),
            MoveToRecItemsGrid = v4.Input.onBegin(Enum.KeyCode.ButtonR2, function()
                v43.peekViewFocusController.moveFocusTo(v86);
            end)
        }
    }, {
        ItemImageAndName = v2.createElement(v27, {
            name = v55,
            showPremiumBenefits = v56,
            actionBarHeaderRef = v43.actionBarHeaderRef,
            collectibleInfo = v59,
            width = v43.width,
            itemType = v43.itemType,
            itemId = v43.itemId,
            itemSubType = v54,
            itemDetailsPeekViewRefs = v43.itemDetailsPeekViewRefs,
            resultsListRef = v43.resultsListRef
        }),
        IncludedItems = if not v111 then nil else v2.createElement(v26, {
            itemId = v43.itemId,
            itemType = v43.itemType,
            LayoutOrder = 2
        }),
        ItemDescription = v2.createElement(v21, {
            compactNumberOfLines = 3,
            descriptionText = v109,
            LayoutOrder = 3,
            [v2.Ref] = v82,
            NextSelectionUp = if not v35() then nil else v43.NextSelectionUp,
            NextSelectionDown = v95(v82)
        }),
        ItemStatistics = if v46.state.routeName == v19.TryOnItem then nil else v2.createElement(v22, {
            favoritesCount = v110,
            LayoutOrder = 4,
            listPadding = 10,
            width = v43.width - 48
        }),
        ItemOwnershipButton = if not (not not v51 and if v51.isOwned then if v34() then (not not v51 and (v51.isResellable and true or false)) and v61 else if v51 then v51.isResellable and true or false else false else false) then nil else v2.createElement(v23, {
            size = UDim2.new(1, 0, 0, 0),
            automaticSize = Enum.AutomaticSize.Y,
            layoutOrder = 5,
            itemId = v43.itemId,
            collectibleItemId = v57,
            onActivated = v101,
            ref = if not v35() then nil else v83,
            NextSelectionUp = v100(v83),
            NextSelectionDown = v95(v83)
        }),
        ItemInfoList = if v46.state.routeName == v19.TryOnItem then nil else v2.createElement(v24, {
            itemId = v43.itemId,
            itemType = v43.itemType,
            LayoutOrder = 6,
            ref = if not v36 then v84 else nil,
            resellerRef = if not v36 then nil else v84,
            attributionRef = if not v36 then nil else v85,
            NextSelectionUp = v100(v84),
            NextSelectionDown = v95(v85)
        }),
        RecommendedLabel = if not if not (v46.state.routeName == v19.TryOnItem) then if not (v43.itemType == v20.ItemType.Asset and v54) or v28.doesAssetTypeHaveCatalogPage(v54) then (not v51 or not v51.receivedRecommendedData) or v51.recommendedItemSummaries ~= nil and #v51.recommendedItemSummaries ~= 0 else false else false then nil else v2.createElement(l_FitTextLabel_0, {
            width = l_FitTextLabel_0.Width.FitToText,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Font = l_Font_0.Header1.Font,
            LayoutOrder = 8,
            Position = UDim2.new(0, 0, 0, 0),
            Text = v44.recommendedLabel,
            TextSize = l_Font_0.BaseSize * l_Font_0.Header1.RelativeSize,
            TextColor3 = l_Theme_0.TextEmphasis.Color
        }),
        RecommendedItemsGrid = if not if not (v46.state.routeName == v19.TryOnItem) then if not (v43.itemType == v20.ItemType.Asset and v54) or v28.doesAssetTypeHaveCatalogPage(v54) then (not v51 or not v51.receivedRecommendedData) or v51.recommendedItemSummaries ~= nil and #v51.recommendedItemSummaries ~= 0 else false else false then nil else v2.createElement(v25, {
            itemId = v43.itemId,
            itemSubType = v54,
            itemType = v43.itemType,
            LayoutOrder = 9,
            [v2.Ref] = v86,
            NextSelectionUp = v100(v86),
            NextSelectionDown = v43.NextSelectionDown,
            itemDetailsPeekViewRefs = v43.itemDetailsPeekViewRefs,
            resultsListRef = v43.resultsListRef
        }),
        BottomContainerPlaceHolder = if not (v43.showFullWithNoPeekView and v43.bottomDockedContainerHeight > 0) then nil else v2.createElement("Frame", {
            LayoutOrder = 10,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, v43.bottomDockedContainerHeight),
            Active = false
        })
    });
end;