local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_TextService_0 = game:GetService("TextService");
local v3 = require(l_Parent_1.React);
local v4 = require(l_Parent_1.UIBlox);
local l_PartialPageModal_0 = v4.App.Dialog.Modal.PartialPageModal;
local l_ButtonType_0 = v4.App.Button.Enum.ButtonType;
local _ = v4.App.ImageSet.Images;
local _ = v4.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v4.Style.withStyle;
local v10 = require(l_Parent_0.Locale.MultiTextLocalizer);
local v11 = require(l_Parent_0.Subscription.SubscriptionTitle);
local v12 = require(l_Parent_0.Flags.GetFFlagEnableRobloxCreditPurchase);
local function v18(v13, v14, v15, v16, v17)
    if v13 then
        return v3.createElement("Frame", {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0, 16),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            LayoutOrder = 2,
            Size = UDim2.new(1, -48, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y
        }, {
            DisclaimerText = v3.createElement("TextLabel", {
                LayoutOrder = 1,
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, l_TextService_0:GetTextSize(v14, 12, v15.Footer.Font, Vector2.new(v17, math.huge)).Y + 2),
                Font = v15.Footer.Font,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextWrapped = true,
                Text = v14,
                TextSize = 12,
                TextColor3 = v16.TextDefault.Color
            })
        });
    else
        return nil;
    end;
end;
local function _(v19, v20, v21, v22)
    return v3.createElement("TextLabel", {
        LayoutOrder = 3,
        BackgroundTransparency = 1,
        Size = UDim2.new(0, v22, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        TextXAlignment = Enum.TextXAlignment.Left,
        Font = v20.Body.Font,
        Text = v19.description,
        TextSize = 16,
        TextWrapped = true,
        TextColor3 = v21.TextDefault.Color,
        TextTransparency = v21.TextDefault.Transparency,
        RichText = true
    });
end;
local function v30(v24, v25, v26, v27, v28)
    return v3.createElement("TextLabel", {
        LayoutOrder = 2,
        BackgroundTransparency = 1,
        Size = UDim2.new(0, v27, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        TextXAlignment = Enum.TextXAlignment.Left,
        Font = v25.Body.Font,
        Text = v24.description,
        TextSize = 16,
        TextWrapped = true,
        TextColor3 = v26.TextDefault.Color,
        TextTransparency = v26.TextDefault.Transparency,
        RichText = true,
        [v3.Change.AbsoluteSize] = function(v29)
            v28(l_TextService_0:GetTextSize(v29.Text, v29.TextSize, v29.Font, Vector2.new(v29.AbsoluteSize.X, math.huge)).Y);
        end
    });
end;
local function v34(v31, v32)
    if v12() then
        if not (v31.secondaryPaymentMethod ~= nil) or v31.secondaryPaymentMethod == "" then
            return {
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = function()
                            v31.purchaseSubscriptionActivated(v31.primaryPaymentMethod);
                        end,
                        text = v32.subscribe,
                        layoutOrder = 0
                    }
                }
            };
        else
            local v33 = nil;
            if v31.primaryPaymentMethod == "Stripe" then
                v33 = v32.subscribeWithCreditDebitCard;
            elseif v31.primaryPaymentMethod == "CreditBalance" then
                v33 = v32.subscribeWithRobloxCredit;
            end;
            return {
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = function()
                            v31.purchaseSubscriptionActivated(v31.primaryPaymentMethod);
                        end,
                        text = v33,
                        layoutOrder = 0
                    }
                },
                {
                    buttonType = l_ButtonType_0.Secondary,
                    props = {
                        onActivated = function()
                            v31.purchaseSubscriptionActivated(v31.secondaryPaymentMethod);
                        end,
                        text = v32.payAnotherWay,
                        layoutOrder = 1
                    }
                }
            };
        end;
    else
        return {
            {
                buttonType = l_ButtonType_0.PrimarySystem,
                props = {
                    onActivated = v31.purchaseSubscriptionActivated,
                    text = v32.subscribe,
                    layoutOrder = 0
                }
            }
        };
    end;
end;
return function(v35)
    local v36, v37 = v3.useState(0);
    local _, _ = v3.useState(false);
    local function v41(v40)
        v37(((24 + v11:getTitleHeight(v35.screenSize.Y - 240)) + 24) + v40);
    end;
    return v3.createElement(v10, {
        keys = {
            titleText = {
                key = "IAPExperience.SubscriptionPurchasePrompt.Label.GetSubscription"
            },
            subscribe = if not v12() then {
                key = "IAPExperience.PremiumUpsell.Action.Subscribe"
            } else {
                key = "Feature.Subscription.Action.Subscribe"
            },
            subscribeWithCreditDebitCard = {
                key = "Feature.Subscription.Action.SubscribeWithCreditDebitCard"
            },
            subscribeWithRobloxCredit = {
                key = "Feature.Subscription.Action.SubscribeWithRobloxCredit"
            },
            payAnotherWay = {
                key = "Feature.Subscription.Action.SubscribePayAnotherWay"
            },
            footerText = {
                key = "IAPExperience.SubscriptionPurchasePrompt.Label.TestFlowDisclaimer"
            }
        },
        render = function(v42)
            return l_withStyle_0(function(v43)
                local l_Theme_0 = v43.Theme;
                local l_Font_0 = v43.Font;
                local v46 = l_PartialPageModal_0:getMiddleContentWidth(v35.screenSize.X);
                local l_createElement_0 = v3.createElement;
                local l_l_PartialPageModal_0_0 = l_PartialPageModal_0;
                local v49 = {
                    title = v42.titleText,
                    screenSize = v35.screenSize,
                    contentPadding = UDim.new(0, 24),
                    buttonStackProps = {
                        buttons = v34(v35, v42),
                        buttonHeight = 48,
                        forcedFillDirection = if not v12() then nil else Enum.FillDirection.Vertical
                    },
                    onCloseClicked = v35.cancelPurchaseActivated,
                    footerContent = function()
                        return v18(v35.isTestingMode, v42.footerText, l_Font_0, l_Theme_0, v46);
                    end
                };
                local v50 = {};
                local l_createElement_1 = v3.createElement;
                local v52 = "Frame";
                local v53 = {
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y
                };
                local v54 = {};
                local l_createElement_2 = v3.createElement;
                local v56 = "ScrollingFrame";
                local v57 = {
                    BackgroundTransparency = 1,
                    LayoutOrder = 3,
                    Size = UDim2.new(1, 0, 0, (math.min(v36, v35.screenSize.Y - 240))),
                    BorderSizePixel = 0,
                    ZIndex = 2,
                    ScrollingEnabled = v35.screenSize.Y - 240 < v36
                };
                local v58 = false;
                if v35.screenSize.Y - 240 < v36 then
                    v58 = 5;
                end;
                v57.ScrollBarThickness = v58;
                v57.ScrollingDirection = Enum.ScrollingDirection.Y;
                v57.Selectable = false;
                v57.CanvasSize = UDim2.new(1, 0, 0, v36);
                v54.PromptScroll = l_createElement_2(v56, v57, {
                    Padding = v3.createElement("UIPadding", {
                        PaddingTop = UDim.new(0, 24),
                        PaddingBottom = UDim.new(0, 24)
                    }),
                    Layout = v3.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        Padding = UDim.new(0, 24)
                    }),
                    SubscriptionTitleSection = v3.createElement(v11, {
                        subscriptionProviderName = v35.subscriptionProviderName,
                        name = v35.name,
                        displayPrice = v35.displayPrice,
                        period = v35.period,
                        disclaimerText = v35.disclaimerText,
                        layoutOrder = 2,
                        contentHeight = v35.screenSize.Y - 240,
                        itemIcon = v35.itemIcon
                    });
                    v30(v35, l_Font_0, l_Theme_0, v46, v41)
                });
                ??? = l_createElement_1(v52, v53, v54);
                setlist { ['R007[1 to ???]'] = 'R008 to ???' };
                return l_createElement_0(l_l_PartialPageModal_0_0, v49, v50);
            end);
        end
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.UIBlox);
local v2 = require(l_Parent_0.React);
local l_withStyle_0 = v1.Style.withStyle;
local l_ImageSetLabel_0 = v1.Core.ImageSet.ImageSetLabel;
local v5 = require(l_Parent_0.Roact);
local v6 = require(l_Parent_0.t);
local v7 = v5.PureComponent:extend("SubscriptionTitle");
v7.validateProps = v6.strictInterface({
    name = v6.string,
    displayPrice = v6.string,
    subscriptionProviderName = v6.string,
    period = v6.string,
    disclaimerText = v6.string,
    layoutOrder = v6.number,
    contentHeight = v6.number,
    itemIcon = v6.any
});
local function _(v8, v9)
    return l_withStyle_0(function(v10)
        local l_Theme_0 = v10.Theme;
        local l_Font_0 = v10.Font.Body.Font;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v8.layoutOrder
        }, {
            Layout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = not not v9 and Enum.HorizontalAlignment.Left or Enum.HorizontalAlignment.Center,
                Padding = UDim.new(0, 8)
            })
        }, {
            AppName = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                Text = v8.subscriptionProviderName,
                TextSize = 16,
                TextColor3 = l_Theme_0.TextEmphasis.Color,
                TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                Font = l_Font_0,
                TextXAlignment = not not v9 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v8.layoutOrder
            })
        }, {
            Title = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                Text = v8.name,
                TextSize = 20,
                TextColor3 = l_Theme_0.TextEmphasis.Color,
                TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                Font = l_Font_0,
                TextXAlignment = not not v9 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v8.layoutOrder + 1
            })
        }, {
            PriceFrame = v2.createElement("Frame", {
                BorderSizePixel = 0,
                BackgroundColor3 = Color3.fromRGB(255, 0, 0),
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                LayoutOrder = v8.layoutOrder + 2
            }, {
                Layout = v2.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = not not v9 and Enum.HorizontalAlignment.Left or Enum.HorizontalAlignment.Center,
                    FillDirection = Enum.FillDirection.Horizontal
                }),
                Price = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1,
                    Text = v8.displayPrice,
                    TextSize = 16,
                    TextColor3 = l_Theme_0.TextEmphasis.Color,
                    TextTransparency = l_Theme_0.TextDefault.Transparency,
                    Font = l_Font_0,
                    RichText = true,
                    TextXAlignment = not not v9 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                    TextWrapped = true,
                    LayoutOrder = v8.layoutOrder + 1,
                    AutomaticSize = Enum.AutomaticSize.X
                }),
                Period = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1,
                    Text = v8.period,
                    TextSize = 16,
                    TextColor3 = l_Theme_0.TextDefault.Color,
                    TextTransparency = l_Theme_0.TextDefault.Transparency,
                    Font = l_Font_0,
                    RichText = true,
                    TextXAlignment = not not v9 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                    TextWrapped = true,
                    LayoutOrder = v8.layoutOrder + 1,
                    AutomaticSize = Enum.AutomaticSize.X
                })
            })
        }, {
            DisclaimerText = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 16),
                BackgroundTransparency = 1,
                Text = v8.disclaimerText,
                TextSize = 16,
                TextColor3 = l_Theme_0.TextDefault.Color,
                Font = l_Font_0,
                TextXAlignment = not not v9 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v8.layoutOrder + 3
            })
        });
    end);
end;
local function v24(v14)
    local l_createElement_0 = v2.createElement;
    local v16 = "Frame";
    local v17 = {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        LayoutOrder = 1
    };
    local v18 = {
        Layout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            FillDirection = Enum.FillDirection.Horizontal,
            Padding = UDim.new(0, 24)
        }),
        Icon = v2.createElement(l_ImageSetLabel_0, {
            LayoutOrder = 1,
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 96, 0, 96),
            ScaleType = Enum.ScaleType.Fit,
            AutomaticSize = Enum.AutomaticSize.X,
            Image = v14.itemIcon
        })
    };
    local l_l_withStyle_0_0 = l_withStyle_0;
    local v20 = true;
    v18.SubscriptionInfo = l_l_withStyle_0_0(function(v21)
        local l_Theme_1 = v21.Theme;
        local l_Font_1 = v21.Font.Body.Font;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v14.layoutOrder
        }, {
            Layout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = not not v20 and Enum.HorizontalAlignment.Left or Enum.HorizontalAlignment.Center,
                Padding = UDim.new(0, 8)
            })
        }, {
            AppName = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                Text = v14.subscriptionProviderName,
                TextSize = 16,
                TextColor3 = l_Theme_1.TextEmphasis.Color,
                TextTransparency = l_Theme_1.TextEmphasis.Transparency,
                Font = l_Font_1,
                TextXAlignment = not not v20 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v14.layoutOrder
            })
        }, {
            Title = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                Text = v14.name,
                TextSize = 20,
                TextColor3 = l_Theme_1.TextEmphasis.Color,
                TextTransparency = l_Theme_1.TextEmphasis.Transparency,
                Font = l_Font_1,
                TextXAlignment = not not v20 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v14.layoutOrder + 1
            })
        }, {
            PriceFrame = v2.createElement("Frame", {
                BorderSizePixel = 0,
                BackgroundColor3 = Color3.fromRGB(255, 0, 0),
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                LayoutOrder = v14.layoutOrder + 2
            }, {
                Layout = v2.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = not not v20 and Enum.HorizontalAlignment.Left or Enum.HorizontalAlignment.Center,
                    FillDirection = Enum.FillDirection.Horizontal
                }),
                Price = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1,
                    Text = v14.displayPrice,
                    TextSize = 16,
                    TextColor3 = l_Theme_1.TextEmphasis.Color,
                    TextTransparency = l_Theme_1.TextDefault.Transparency,
                    Font = l_Font_1,
                    RichText = true,
                    TextXAlignment = not not v20 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                    TextWrapped = true,
                    LayoutOrder = v14.layoutOrder + 1,
                    AutomaticSize = Enum.AutomaticSize.X
                }),
                Period = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1,
                    Text = v14.period,
                    TextSize = 16,
                    TextColor3 = l_Theme_1.TextDefault.Color,
                    TextTransparency = l_Theme_1.TextDefault.Transparency,
                    Font = l_Font_1,
                    RichText = true,
                    TextXAlignment = not not v20 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                    TextWrapped = true,
                    LayoutOrder = v14.layoutOrder + 1,
                    AutomaticSize = Enum.AutomaticSize.X
                })
            })
        }, {
            DisclaimerText = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 16),
                BackgroundTransparency = 1,
                Text = v14.disclaimerText,
                TextSize = 16,
                TextColor3 = l_Theme_1.TextDefault.Color,
                Font = l_Font_1,
                TextXAlignment = not not v20 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v14.layoutOrder + 3
            })
        });
    end);
    return l_createElement_0(v16, v17, v18);
end;
local function v35(v25)
    local l_createElement_1 = v2.createElement;
    local v27 = "Frame";
    local v28 = {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        LayoutOrder = 1
    };
    local v29 = {
        Layout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            FillDirection = Enum.FillDirection.Vertical,
            Padding = UDim.new(0, 24)
        }),
        Icon = v2.createElement(l_ImageSetLabel_0, {
            LayoutOrder = 1,
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 96, 0, 96),
            ScaleType = Enum.ScaleType.Fit,
            AutomaticSize = Enum.AutomaticSize.X,
            Image = v25.itemIcon
        })
    };
    local l_l_withStyle_0_1 = l_withStyle_0;
    local v31 = false;
    v29.SubscriptionInfo = l_l_withStyle_0_1(function(v32)
        local l_Theme_2 = v32.Theme;
        local l_Font_2 = v32.Font.Body.Font;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v25.layoutOrder
        }, {
            Layout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = not not v31 and Enum.HorizontalAlignment.Left or Enum.HorizontalAlignment.Center,
                Padding = UDim.new(0, 8)
            })
        }, {
            AppName = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                Text = v25.subscriptionProviderName,
                TextSize = 16,
                TextColor3 = l_Theme_2.TextEmphasis.Color,
                TextTransparency = l_Theme_2.TextEmphasis.Transparency,
                Font = l_Font_2,
                TextXAlignment = not not v31 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v25.layoutOrder
            })
        }, {
            Title = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                Text = v25.name,
                TextSize = 20,
                TextColor3 = l_Theme_2.TextEmphasis.Color,
                TextTransparency = l_Theme_2.TextEmphasis.Transparency,
                Font = l_Font_2,
                TextXAlignment = not not v31 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v25.layoutOrder + 1
            })
        }, {
            PriceFrame = v2.createElement("Frame", {
                BorderSizePixel = 0,
                BackgroundColor3 = Color3.fromRGB(255, 0, 0),
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                LayoutOrder = v25.layoutOrder + 2
            }, {
                Layout = v2.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = not not v31 and Enum.HorizontalAlignment.Left or Enum.HorizontalAlignment.Center,
                    FillDirection = Enum.FillDirection.Horizontal
                }),
                Price = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1,
                    Text = v25.displayPrice,
                    TextSize = 16,
                    TextColor3 = l_Theme_2.TextEmphasis.Color,
                    TextTransparency = l_Theme_2.TextDefault.Transparency,
                    Font = l_Font_2,
                    RichText = true,
                    TextXAlignment = not not v31 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                    TextWrapped = true,
                    LayoutOrder = v25.layoutOrder + 1,
                    AutomaticSize = Enum.AutomaticSize.X
                }),
                Period = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1,
                    Text = v25.period,
                    TextSize = 16,
                    TextColor3 = l_Theme_2.TextDefault.Color,
                    TextTransparency = l_Theme_2.TextDefault.Transparency,
                    Font = l_Font_2,
                    RichText = true,
                    TextXAlignment = not not v31 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                    TextWrapped = true,
                    LayoutOrder = v25.layoutOrder + 1,
                    AutomaticSize = Enum.AutomaticSize.X
                })
            })
        }, {
            DisclaimerText = v2.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, 16),
                BackgroundTransparency = 1,
                Text = v25.disclaimerText,
                TextSize = 16,
                TextColor3 = l_Theme_2.TextDefault.Color,
                Font = l_Font_2,
                TextXAlignment = not not v31 and Enum.TextXAlignment.Left or Enum.TextXAlignment.Center,
                TextWrapped = true,
                LayoutOrder = v25.layoutOrder + 3
            })
        });
    end);
    return l_createElement_1(v27, v28, v29);
end;
v7.getTitleHeight = function(_, v37)
    if v37 > 216 then
        return 216;
    else
        return 96;
    end;
end;
v7.render = function(v38)
    if v38.props.contentHeight > 216 then
        return v35(v38.props);
    else
        return v24(v38.props);
    end;
end;
return v7;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.UIBlox);
local v4 = require(l_Parent_0.Locale.LocaleProvider);
local l_status_0, l_result_0 = pcall(function()
    v3.init(require(l_Parent_0.Parent.UIBloxResources.UIBloxStorybookConfig));
end);
if not l_status_0 then
    warn("Error initializing UIBlox", l_result_0);
end;
local l_SelectionCursorProvider_0 = v3.App.SelectionImage.SelectionCursorProvider;
local l_CursorProvider_0 = v3.App.SelectionCursor.CursorProvider;
local l_AppStyleProvider_0 = v3.App.Style.AppStyleProvider;
local l_Constants_0 = v3.App.Style.Constants;
local l_Light_0 = l_Constants_0.ThemeName.Light;
local l_Dark_0 = l_Constants_0.ThemeName.Dark;
local l_Gotham_0 = l_Constants_0.FontName.Gotham;
local v14 = {
    Light = {
        themeName = l_Light_0,
        fontName = l_Gotham_0
    },
    Dark = {
        themeName = l_Dark_0,
        fontName = l_Gotham_0
    }
};
return function(v15)
    return function(v16)
        return v2.createElement(v4, {
            locale = "en-us"
        }, {
            AppStyleProvider = v2.createElement(l_AppStyleProvider_0, {
                style = v14[v16.theme]
            }, {
                CursorProvider = v2.createElement(l_SelectionCursorProvider_0, {}, {
                    NewCursorProvider = v2.createElement(l_CursorProvider_0, {}, {
                        Child = v2.createElement(v15, v16)
                    })
                })
            })
        });
    end;
end;


return function(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)
    local v11 = nil;
    local v12 = nil;
    for v13, v14 in string.gmatch(v5, "(%w+)-(%w+)") do
        v12 = string.upper(v13);
        v11 = v14;
    end;
    return {
        purchase_flow_uuid = v0,
        purchase_flow_event_type = v1,
        view_name = v2,
        input_type = v3,
        subscription_provider_id = v4,
        subscription_product_type_prefix = v12,
        subscription_id = v11,
        localized_subscription_name = v6,
        localized_subscription_description = v7,
        subscription_period = v8,
        price_in_cents_usd = v9,
        display_price = v10
    };
end;


return function()
    local l_Model_0 = Instance.new("Model");
    Instance.new("Humanoid").Parent = l_Model_0;
    local l_Part_0 = Instance.new("Part");
    l_Part_0.Name = "HumanoidRootPart";
    l_Part_0.Size = Vector3.new(2, 2, 1);
    l_Part_0.Position = Vector3.new(0, 2, 0);
    l_Part_0.Transparency = 1;
    l_Part_0.Parent = l_Model_0;
    local l_Part_1 = Instance.new("Part");
    l_Part_1.Name = "Head";
    l_Part_1.Size = Vector3.new(2, 1, 1);
    l_Part_1.Position = Vector3.new(0, 5, 0);
    l_Part_1.Shape = Enum.PartType.Ball;
    l_Part_1.Parent = l_Model_0;
    local l_Part_2 = Instance.new("Part");
    l_Part_2.Name = "Torso";
    l_Part_2.Size = Vector3.new(2, 2, 1);
    l_Part_2.Position = Vector3.new(0, 3.5, 0);
    l_Part_2.Parent = l_Model_0;
    l_Model_0.PrimaryPart = l_Part_0;
    return l_Model_0;
end;


return function(v0, v1, v2, v3)
    local l_v2_0 = v2;
    if v1 then
        l_v2_0 = v1 .. l_v2_0;
    end;
    return {
        purchase_flow_uuid = v0,
        purchase_flow = l_v2_0,
        view_name = v3,
        purchase_event_type = "ViewShown"
    };
end;


return function(v0, v1, v2, v3, v4)
    local l_v2_0 = v2;
    if v1 then
        l_v2_0 = v1 .. l_v2_0;
    end;
    return {
        purchase_flow_uuid = v0,
        purchase_flow = l_v2_0,
        view_name = v3,
        purchase_event_type = "UserInput",
        input_type = v4
    };
end;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.UIBlox);
local l_AppStyleProvider_0 = v3.App.Style.AppStyleProvider;
local l_Constants_0 = v3.App.Style.Constants;
local l_Dark_0 = l_Constants_0.ThemeName.Dark;
local l_Gotham_0 = l_Constants_0.FontName.Gotham;
local v8 = require(l_Parent_0.Locale.LocaleProvider);
return function(v9)
    return v2.createElement(v8, {
        locale = "en-us",
        render = function()
            return v2.createElement(l_AppStyleProvider_0, {
                style = {
                    themeName = l_Dark_0,
                    fontName = l_Gotham_0
                }
            }, {
                v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, 0)
                }, v9)
            });
        end
    });
end;


return {
    Animator = require(script.Generic.Animator),
    ProductPurchase = require(script.ProductPurchase.ProductPurchasePrompt),
    ProductPurchaseRobuxUpsell = require(script.ProductPurchaseRobuxUpsell.ProductPurchaseRobuxUpsell),
    LeaveRobloxAlert = require(script.Generic.LeaveRobloxPrompt),
    PurchaseFlow = {
        BuyRobuxFlow = require(script.PurchaseFlow.BuyRobux.BuyRobuxFlow),
        BuyRobuxFlowState = require(script.PurchaseFlow.BuyRobux.BuyRobuxFlowState),
        RobuxUpsellFlow = require(script.PurchaseFlow.RobuxUpsell.RobuxUpsellFlow),
        RobuxUpsellFlowState = require(script.PurchaseFlow.RobuxUpsell.RobuxUpsellFlowState),
        PremiumUpsellFlow = require(script.PurchaseFlow.PremiumUpsell.PremiumUpsellFlow),
        PremiumUpsellFlowState = require(script.PurchaseFlow.PremiumUpsell.PremiumUpsellFlowState),
        PurchaseErrorType = require(script.Generic.PurchaseErrorType),
        U13ConfirmType = require(script.Generic.U13ConfirmType),
        SubscriptionPurchaseFlow = require(script.PurchaseFlow.Subscription.SubscriptionPurchaseFlow),
        SubscriptionPurchaseFlowState = require(script.PurchaseFlow.Subscription.SubscriptionPurchaseFlowState)
    },
    Locale = {
        LocaleProvider = require(script.Locale.LocaleProvider)
    }
};


local l_Parent_0 = script.Parent;
return {
    Roact = require(l_Parent_0.Roact),
    Rodux = require(l_Parent_0.Rodux),
    RoactRodux = require(l_Parent_0.RoactRodux),
    UIBlox = require(l_Parent_0.UIBlox),
    Otter = require(l_Parent_0.Otter),
    Cryo = require(l_Parent_0.Cryo),
    t = require(l_Parent_0.t),
    PolicyProvider = require(l_Parent_0.PolicyProvider),
    Promise = require(l_Parent_0.Promise),
    Mock = require(l_Parent_0.Mock)
};


local _ = require(script.Parent.Parent.FocusNavigation);
local v1 = require(script.Parent.Heartbeat);
local function v5(v2, v3)
    local v4 = false;
    task.delay(v2, function()
        if not v4 then
            v3();
        end;
    end);
    return {
        cancel = function()
            v4 = true;
        end
    };
end;
return function(v6)
    local l_hold_0 = v6.hold;
    local v8 = nil;
    local v9 = nil;
    local v10 = false;
    local function _()
        if v8 then
            v8.cancel();
            v8 = nil;
        end;
        if v9 then
            v9:Disconnect();
            v9 = nil;
        end;
        v10 = false;
    end;
    return function(v12)
        local v13 = if not v12.eventData then nil else v12.eventData.UserInputState;
        if v13 == Enum.UserInputState.Begin then
            if v6.onPress then
                v6.onPress(v12);
            end;
            if v8 then
                v8.cancel();
                v8 = nil;
            end;
            if v9 then
                v9:Disconnect();
                v9 = nil;
            end;
            v10 = false;
            if l_hold_0 then
                v8 = v5(l_hold_0.durationSeconds, function()
                    if not l_hold_0.allowReleaseAfterHold then
                        v10 = false;
                    end;
                    l_hold_0.onComplete();
                    if v9 then
                        v9:Disconnect();
                        v9 = nil;
                    end;
                end);
                v9 = if not l_hold_0.onStep then nil else v1:Connect(l_hold_0.onStep);
            end;
            v10 = true;
        end;
        if v13 == Enum.UserInputState.End then
            if not (not v6.onRelease or not v10) then
                v6.onRelease(v12);
            end;
            if v8 then
                v8.cancel();
                v8 = nil;
            end;
            if v9 then
                v9:Disconnect();
                v9 = nil;
            end;
            v10 = false;
        end;
        if v13 == Enum.UserInputState.Cancel then
            if v8 then
                v8.cancel();
                v8 = nil;
            end;
            if v9 then
                v9:Disconnect();
                v9 = nil;
            end;
            v10 = false;
        end;
    end;
end;


return {
    onPress = require(script.onPress),
    onRelease = require(script.onRelease),
    onLongPress = require(script.onLongPress),
    handleInput = require(script.handleInput)
};


local _ = require(script.Parent.Parent.FocusNavigation);
local v1 = require(script.Parent.handleInput);
return function(v2, v3, v4)
    return v1({
        hold = {
            durationSeconds = v2,
            onComplete = v3,
            onStep = v4
        }
    });
end;


local _ = require(script.Parent.Parent.FocusNavigation);
local v1 = require(script.Parent.handleInput);
return function(v2)
    return v1({
        onPress = v2
    });
end;


local _ = require(script.Parent.Parent.FocusNavigation);
local v1 = require(script.Parent.handleInput);
return function(v2)
    return v1({
        onRelease = v2
    });
end;


local l___DEV___0 = _G.__DEV__;
return function(v1, v2)
    if l___DEV___0 then
        assert(typeof(v2) == "table", "Received a non-table as the second argument for instanceof");
    end;
    if typeof(v1) ~= "table" then
        return false;
    else
        local l_status_0, l_result_0 = pcall(function()
            local v3 = false;
            if v2.new ~= nil then
                v3 = v1.new == v2.new;
            end;
            return v3;
        end);
        if not l_status_0 or not l_result_0 then
            local v6 = {
                [v1] = true
            };
            while true do
                if v1 and typeof(v1) == "table" then
                    v1 = getmetatable(v1);
                    if typeof(v1) == "table" then
                        v1 = v1.__index;
                        if v1 == v2 then
                            return true;
                        end;
                    end;
                    if typeof(v1) == "table" then
                        if not v6[v1] then
                            v6[v1] = true;
                        else
                            return false;
                        end;
                    end;
                else
                    return false;
                end;
            end;
        else
            return true;
        end;
    end;
end;


local l_Parent_0 = script.Parent;
local l_ModuleMocker_0 = require(l_Parent_0.JestMock).ModuleMocker;
local v2 = require(l_Parent_0.JestFakeTimers).new();
local v3 = l_ModuleMocker_0.new();
return {
    fn = function(...)
        return v3:fn(...);
    end,
    clearAllMocks = function()
        return v3:clearAllMocks();
    end,
    resetAllMocks = function()
        return v3:resetAllMocks();
    end,
    _mock = v3,
    useFakeTimers = function()
        return v2:useFakeTimers();
    end,
    useRealTimers = function()
        return v2:useRealTimers();
    end,
    runAllTicks = function()
        return v2:runAllTicks();
    end,
    runAllTimers = function()
        return v2:runAllTimers();
    end,
    advanceTimersByTime = function(v4)
        v2:advanceTimersByTime(v4);
    end,
    runTimersToTime = function(v5)
        v2:advanceTimersByTime(v5);
    end,
    runOnlyPendingTimers = function()
        v2:runOnlyPendingTimers();
    end,
    advanceTimerstoNextTimer = function(v6)
        v2:advanceTimerstoNextTimer(v6);
    end,
    clearAllTimers = function()
        v2:clearAllTimers();
    end,
    getTimerCount = function()
        v2:getTimerCount();
    end,
    setSystemTime = function(v7)
        v2:setSystemTime(v7);
    end,
    getRealSystemTime = function()
        v2:getRealSystemTime();
    end,
    testEnv = {
        delay = v2.delayOverride,
        tick = v2.tickOverride,
        DateTime = v2.dateTimeOverride,
        os = v2.osOverride
    },
    _fakeTimers = v2
};


local l_Parent_0 = script.Parent;
local v1 = {};
local v2 = require(l_Parent_0.JestCore);
v1.SearchSource = v2.SearchSource;
v1.TestWatcher = v2.TestWatcher;
v1.createTestScheduler = v2.createTestScheduler;
v1.runCLI = v2.runCLI;
return v1;


local l_Object_0 = require(script:FindFirstAncestor("JestBenchmark").Parent.LuauPolyfill).Object;
local _ = require(script.Parent.reporters.Reporter);
local v2 = {
    customReporters = {}
};
v2.useCustomReporters = function(v3)
    l_Object_0.assign(v2.customReporters, v3);
end;
v2.useDefaultReporters = function()
    table.clear(v2.customReporters);
end;
return v2;


local l_console_0 = require(script:FindFirstAncestor("JestBenchmark").Parent.LuauPolyfill).console;
local function v3(v1, v2)
    l_console_0.log((("%*, %*"):format(v1, v2)));
end;
local v4 = {
    log = v3
};
v4.useCustomMetricLogger = function(v5)
    v4.log = v5;
end;
v4.useDefaultMetricLogger = function()
    v4.log = v3;
end;
return v4;


local l_Parent_0 = script:FindFirstAncestor("JestBenchmark").Parent;
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v2 = require(script.Parent.testModule);
local l_initializeProfiler_0 = require(script.Parent.Profiler).initializeProfiler;
local _ = require(script.Parent.reporters.Reporter);
local l_initializeSectionTimeReporter_0 = require(script.Parent.reporters.SectionTimeReporter).initializeSectionTimeReporter;
local l_initializeFpsReporter_0 = require(script.Parent.reporters.FpsReporter).initializeFpsReporter;
local v7 = require(script.Parent.MetricLogger);
local v8 = require(script.Parent.CustomReporters);
local v9 = {};
local _ = require(l_Parent_0.JestTypes);
local _ = function(v11, v12)
    local v13 = l_initializeSectionTimeReporter_0();
    local v14 = l_initializeFpsReporter_0();
    return function()
        local v15 = l_Object_0.assign({
            SectionTime = v13,
            FPS = v14
        }, v8.customReporters);
        local v16 = {};
        for _, v18 in v15, nil, nil do
            table.insert(v16, v18);
        end;
        local v19 = l_initializeProfiler_0(v16, v7.log, v11);
        v19.start("total");
        v12(v19, v15);
        v19.stop();
        v19.finish();
        task.wait();
    end;
end;
local v32 = setmetatable({}, {
    __call = function(_, v22, v23, v24)
        local v25 = l_initializeSectionTimeReporter_0();
        local v26 = l_initializeFpsReporter_0();
        return v2(v22, function()
            local v27 = l_Object_0.assign({
                SectionTime = v25,
                FPS = v26
            }, v8.customReporters);
            local v28 = {};
            for _, v30 in v27, nil, nil do
                table.insert(v28, v30);
            end;
            local v31 = l_initializeProfiler_0(v28, v7.log, v22);
            v31.start("total");
            v23(v31, v27);
            v31.stop();
            v31.finish();
            task.wait();
        end, v24);
    end
});
v32.only = function(v33, v34, v35)
    local v36 = l_initializeSectionTimeReporter_0();
    local v37 = l_initializeFpsReporter_0();
    return v2.only(v33, function()
        local v38 = l_Object_0.assign({
            SectionTime = v36,
            FPS = v37
        }, v8.customReporters);
        local v39 = {};
        for _, v41 in v38, nil, nil do
            table.insert(v39, v41);
        end;
        local v42 = l_initializeProfiler_0(v39, v7.log, v33);
        v42.start("total");
        v34(v42, v38);
        v42.stop();
        v42.finish();
        task.wait();
    end, v35);
end;
v32.skip = function(v43, v44, v45)
    local v46 = l_initializeSectionTimeReporter_0();
    local v47 = l_initializeFpsReporter_0();
    return v2.skip(v43, function()
        local v48 = l_Object_0.assign({
            SectionTime = v46,
            FPS = v47
        }, v8.customReporters);
        local v49 = {};
        for _, v51 in v48, nil, nil do
            table.insert(v49, v51);
        end;
        local v52 = l_initializeProfiler_0(v49, v7.log, v43);
        v52.start("total");
        v44(v52, v48);
        v52.stop();
        v52.finish();
        task.wait();
    end, v45);
end;
v9.benchmark = v32;
return v9;


return {
    benchmark = require(script.benchmark).benchmark,
    Profiler = require(script.Profiler),
    Reporter = require(script.reporters.Reporter),
    HeartbeatReporter = require(script.reporters.HeartbeatReporter),
    MetricLogger = require(script.MetricLogger),
    CustomReporters = require(script.CustomReporters)
};


local v0 = {};
local l_initializeHeartbeatReporter_0 = require(script.Parent.HeartbeatReporter).initializeHeartbeatReporter;
local function v6(v2)
    if #v2 == 0 then
        return math.huge;
    else
        local v3 = 0;
        for _, v5 in v2, nil, nil do
            v3 = v3 + v5;
        end;
        return 1 / (v3 / #v2);
    end;
end;
v0.initializeFpsReporter = function()
    return l_initializeHeartbeatReporter_0("FPS", v6);
end;
return v0;


local v0 = {};
local l_initializeReporter_0 = require(script.Parent.Reporter).initializeReporter;
local v2 = require(script.Parent.Parent.heartbeatModule);
v0.initializeHeartbeatReporter = function(v3, v4)
    local v5 = l_initializeReporter_0(v3, v4);
    local v6 = false;
    local v7 = nil;
    local v8 = 0;
    return {
        start = function(v9)
            v5.start(v9);
            v8 = v8 + 1;
            if not v6 then
                v6 = true;
                v7 = v2:Connect(function(v10)
                    if v8 > 0 then
                        v5.report(v10);
                    end;
                end);
            end;
        end,
        stop = function()
            v8 = v8 - 1;
            v5.stop();
        end,
        finish = function()
            if v7 then
                v7:Disconnect();
            end;
            return v5.finish();
        end,
        report = function(_)
            error((("Attempted to call %*Reporter.report. This reporter handles reporting internally."):format(v3)));
        end
    };
end;
return v0;


local v0 = {};
local l_initializeReporter_0 = require(script.Parent.Reporter).initializeReporter;
local function v3(v2)
    if #v2 == 0 then
        return 0;
    else
        return v2[#v2] - v2[1];
    end;
end;
v0.initializeSectionTimeReporter = function()
    local v4 = l_initializeReporter_0("SectionTime", v3);
    return {
        start = function(v5)
            v4.start(v5);
            v4.report(os.clock());
        end,
        stop = function()
            v4.report(os.clock());
            v4.stop();
        end,
        finish = v4.finish,
        report = function(_)
            error("Attempted to call SectionTimeReporter.report. This reporter handles reporting internally.");
        end
    };
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.JestTypes);
local v3 = nil;
local v4 = nil;
local _ = nil;
local _ = nil;
local v7 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v7.Array;
local l_Boolean_0 = v7.Boolean;
local l_Error_0 = v7.Error;
local v11 = require(l_Parent_0.RegExp);
local l_TEST_TIMEOUT_SYMBOL_0 = require(script.Parent.types).TEST_TIMEOUT_SYMBOL;
local v13 = require(script.Parent.utils);
local l_addErrorToEachTestUnderDescribe_0 = v13.addErrorToEachTestUnderDescribe;
local l_describeBlockHasTests_0 = v13.describeBlockHasTests;
local l_getTestDuration_0 = v13.getTestDuration;
local l_invariant_0 = v13.invariant;
local l_makeDescribe_0 = v13.makeDescribe;
local l_makeTest_0 = v13.makeTest;
local l_l_Error_0_0 = l_Error_0 --[[ copy: 11 -> 21 ]];
local l_l_invariant_0_0 = l_invariant_0 --[[ copy: 18 -> 22 ]];
local l_l_Boolean_0_0 = l_Boolean_0 --[[ copy: 10 -> 23 ]];
local l_l_describeBlockHasTests_0_0 = l_describeBlockHasTests_0 --[[ copy: 16 -> 24 ]];
local l_l_Array_0_0 = l_Array_0 --[[ copy: 9 -> 25 ]];
local l_l_addErrorToEachTestUnderDescribe_0_0 = l_addErrorToEachTestUnderDescribe_0 --[[ copy: 15 -> 26 ]];
local l_l_TEST_TIMEOUT_SYMBOL_0_0 = l_TEST_TIMEOUT_SYMBOL_0 --[[ copy: 13 -> 27 ]];
local l_v11_0 = v11 --[[ copy: 12 -> 28 ]];
v4 = function(_, v29, v30)
    if v29.name == "include_test_location_in_result" then
        v30.includeTestLocationInResult = true;
        return ;
    elseif v29.name == "hook_start" then
        v29.hook.seenDone = false;
        return ;
    elseif v29.name == "start_describe_definition" then
        local l_blockName_0 = v29.blockName;
        local l_mode_0 = v29.mode;
        local l_currentDescribeBlock_0 = v30.currentDescribeBlock;
        local l_currentlyRunningTest_0 = v30.currentlyRunningTest;
        if l_currentlyRunningTest_0 ~= nil then
            table.insert(l_currentlyRunningTest_0.errors, l_l_Error_0_0.new(("Cannot nest a describe inside a test. Describe block \"%s\" cannot run because it is nested within \"%s\"."):format(l_blockName_0, l_currentlyRunningTest_0.name)));
            return ;
        else
            local v35 = l_makeDescribe_0(l_blockName_0, l_currentDescribeBlock_0, l_mode_0);
            table.insert(l_currentDescribeBlock_0.children, v35);
            v30.currentDescribeBlock = v35;
            return ;
        end;
    else
        if v29.name == "finish_describe_definition" then
            local l_currentDescribeBlock_1 = v30.currentDescribeBlock;
            l_l_invariant_0_0(l_currentDescribeBlock_1, "currentDescribeBlock must be there");
            if not l_l_Boolean_0_0.toJSBoolean(l_l_describeBlockHasTests_0_0(l_currentDescribeBlock_1)) then
                l_l_Array_0_0.forEach(l_currentDescribeBlock_1.hooks, function(v37)
                    v37.asyncError.message = ("Invalid: %s() may not be used in a describe block containing no tests."):format(v37.type);
                    table.insert(v30.unhandledErrors, v37.asyncError);
                end);
            end;
            local v38 = false;
            if l_currentDescribeBlock_1.mode == "only" then
                v38 = l_l_Array_0_0.some(l_currentDescribeBlock_1.children, function(v39)
                    local v40 = false;
                    if v39.type == "test" then
                        v40 = v39.mode == "only";
                    end;
                    return v40;
                end);
            end;
            if not v38 then
                l_l_Array_0_0.forEach(l_currentDescribeBlock_1.children, function(v41)
                    if not (not (v41.type == "test") or l_l_Boolean_0_0.toJSBoolean(v41.mode)) then
                        v41.mode = l_currentDescribeBlock_1.mode;
                    end;
                end);
            end;
            if not (not (not l_l_Boolean_0_0.toJSBoolean(v30.hasFocusedTests) and l_currentDescribeBlock_1.mode ~= "skip") or not l_l_Array_0_0.some(l_currentDescribeBlock_1.children, function(v42)
                local v43 = false;
                if v42.type == "test" then
                    v43 = v42.mode == "only";
                end;
                return v43;
            end)) then
                v30.hasFocusedTests = true;
            end;
            if l_currentDescribeBlock_1.parent ~= nil then
                v30.currentDescribeBlock = l_currentDescribeBlock_1.parent;
                return ;
            end;
        elseif v29.name == "add_hook" then
            local l_currentDescribeBlock_2 = v30.currentDescribeBlock;
            local l_currentlyRunningTest_1 = v30.currentlyRunningTest;
            local l_hasStarted_0 = v30.hasStarted;
            local l_asyncError_0 = v29.asyncError;
            local l_fn_0 = v29.fn;
            local l_hookType_0 = v29.hookType;
            local l_timeout_0 = v29.timeout;
            if l_currentlyRunningTest_1 ~= nil then
                table.insert(l_currentlyRunningTest_1.errors, l_l_Error_0_0.new(("Hooks cannot be defined inside tests. Hook of type \"%s\" is nested within \"%s\"."):format(l_hookType_0, l_currentlyRunningTest_1.name)));
                return ;
            elseif not l_l_Boolean_0_0.toJSBoolean(l_hasStarted_0) then
                table.insert(l_currentDescribeBlock_2.hooks, {
                    asyncError = l_asyncError_0,
                    fn = l_fn_0,
                    parent = l_currentDescribeBlock_2,
                    seenDone = false,
                    timeout = l_timeout_0,
                    type = l_hookType_0
                });
                return ;
            else
                table.insert(v30.unhandledErrors, l_l_Error_0_0.new("Cannot add a hook after tests have started running. Hooks must be defined synchronously."));
                return ;
            end;
        elseif v29.name == "add_test" then
            local l_currentDescribeBlock_3 = v30.currentDescribeBlock;
            local l_currentlyRunningTest_2 = v30.currentlyRunningTest;
            local l_hasStarted_1 = v30.hasStarted;
            local l_asyncError_1 = v29.asyncError;
            local l_fn_1 = v29.fn;
            local l_mode_1 = v29.mode;
            local l_testName_0 = v29.testName;
            local l_timeout_1 = v29.timeout;
            if l_currentlyRunningTest_2 ~= nil then
                table.insert(l_currentlyRunningTest_2.errors, l_l_Error_0_0.new(("Tests cannot be nested. Test \"%s\" cannot run because it is nested within \"%s\"."):format(l_testName_0, l_currentlyRunningTest_2.name)));
                return ;
            elseif not l_l_Boolean_0_0.toJSBoolean(l_hasStarted_1) then
                local v59 = l_makeTest_0(l_fn_1, l_mode_1, l_testName_0, l_currentDescribeBlock_3, l_timeout_1, l_asyncError_1);
                if l_currentDescribeBlock_3.mode ~= "skip" and v59.mode == "only" then
                    v30.hasFocusedTests = true;
                end;
                table.insert(l_currentDescribeBlock_3.children, v59);
                table.insert(l_currentDescribeBlock_3.tests, v59);
                return ;
            else
                table.insert(v30.unhandledErrors, l_l_Error_0_0.new("Cannot add a test after tests have started running. Tests must be defined synchronously."));
                return ;
            end;
        elseif v29.name == "hook_failure" then
            local l_test_0 = v29.test;
            local l_describeBlock_0 = v29.describeBlock;
            local l_error_0 = v29.error;
            local l_hook_0 = v29.hook;
            local l_asyncError_2 = l_hook_0.asyncError;
            local l_type_0 = l_hook_0.type;
            if l_type_0 == "beforeAll" then
                l_l_invariant_0_0(l_describeBlock_0, "always present for `*All` hooks");
                l_l_addErrorToEachTestUnderDescribe_0_0(l_describeBlock_0, l_error_0, l_asyncError_2);
                return ;
            elseif l_type_0 == "afterAll" then
                table.insert(v30.unhandledErrors, {
                    l_error_0,
                    l_asyncError_2
                });
                return ;
            else
                l_l_invariant_0_0(l_test_0, "always present for `*Each` hooks");
                table.insert(l_test_0.errors, {
                    l_error_0,
                    l_asyncError_2
                });
                return ;
            end;
        elseif v29.name == "test_skip" then
            v29.test.status = "skip";
            return ;
        elseif v29.name == "test_todo" then
            v29.test.status = "todo";
            return ;
        elseif v29.name == "test_done" then
            v29.test.duration = l_getTestDuration_0(v29.test);
            v29.test.status = "done";
            v30.currentlyRunningTest = nil;
            return ;
        elseif v29.name == "test_start" then
            v30.currentlyRunningTest = v29.test;
            v29.test.startedAt = DateTime.now().UnixTimestampMillis;
            local l_test_1 = v29.test;
            l_test_1.invocations = l_test_1.invocations + 1;
            return ;
        elseif v29.name == "test_fn_start" then
            v29.test.seenDone = false;
            return ;
        elseif v29.name == "test_fn_failure" then
            table.insert(v29.test.errors, {
                v29.error,
                v29.test.asyncError
            });
            return ;
        elseif v29.name == "test_retry" then
            v29.test.errors = {};
            return ;
        elseif v29.name == "run_start" then
            v30.hasStarted = true;
            if l_l_Boolean_0_0.toJSBoolean(_G[l_l_TEST_TIMEOUT_SYMBOL_0_0]) then
                v30.testTimeout = _G[l_l_TEST_TIMEOUT_SYMBOL_0_0];
                return ;
            end;
        elseif v29.name == "run_finish" then
            return ;
        elseif v29.name == "setup" then
            if l_l_Boolean_0_0.toJSBoolean(v29.testNamePattern) then
                v30.testNamePattern = l_v11_0(v29.testNamePattern, "i");
                return ;
            end;
        elseif v29.name == "teardown" then
            return ;
        elseif v29.name == "error" then
            if v30.currentlyRunningTest ~= nil then
                table.insert(v30.currentlyRunningTest.errors, v29.error);
                return ;
            else
                table.insert(v30.unhandledErrors, v29.error);
                return ;
            end;
        end;
        return ;
    end;
end;
v0.eventHandler = v4;
l_Array_0 = require(l_Parent_0.LuauPolyfill).Array;
l_Boolean_0 = {
    listeners = function(_, ...)
        return {};
    end
};
l_Error_0 = nil;
l_Error_0 = function(v68)
    v3({
        error = v68,
        name = "error"
    });
end;
local l_l_Array_0_1 = l_Array_0 --[[ copy: 9 -> 29 ]];
local l_l_Boolean_0_1 = l_Boolean_0 --[[ copy: 10 -> 30 ]];
do
    local l_l_Error_0_1 = l_Error_0;
    v0.injectGlobalErrorHandlers = function(v72)
        local v73 = l_l_Array_0_1.slice(l_l_Boolean_0_1:listeners("uncaughtException"));
        local v74 = l_l_Array_0_1.slice(l_l_Boolean_0_1:listeners("unhandledRejection"));
        v72:removeAllListeners("uncaughtException");
        v72:removeAllListeners("unhandledRejection");
        v72:on("uncaughtException", l_l_Error_0_1);
        v72:on("unhandledRejection", l_l_Error_0_1);
        return {
            uncaughtException = v73,
            unhandledRejection = v74
        };
    end;
    v0.restoreGlobalErrorHandlers = function(v75, v76)
        v75:removeListener("uncaughtException", l_l_Error_0_1);
        v75:removeListener("unhandledRejection", l_l_Error_0_1);
        for _, v78 in ipairs(v76.uncaughtException) do
            v75:on("uncaughtException", v78);
        end;
        for _, v80 in ipairs(v76.unhandledRejection) do
            v75:on("unhandledRejection", v80);
        end;
    end;
end;
v7 = require(l_Parent_0.LuauPolyfill);
l_Array_0 = require(l_Parent_0.Promise);
l_Boolean_0 = require(script.Parent.formatNodeAssertErrors).default;
l_Error_0 = require(script.Parent.types).STATE_SYM;
v11 = require(script.Parent.utils).makeDescribe;
l_TEST_TIMEOUT_SYMBOL_0 = {
    v4,
    l_Boolean_0
};
v13 = require(script.Parent.state_);
l_addErrorToEachTestUnderDescribe_0 = v13.ROOT_DESCRIBE_BLOCK_NAME;
v0.ROOT_DESCRIBE_BLOCK_NAME = l_addErrorToEachTestUnderDescribe_0;
l_describeBlockHasTests_0 = function()
    local v81 = v11(l_addErrorToEachTestUnderDescribe_0);
    return {
        currentDescribeBlock = v81,
        currentlyRunningTest = nil,
        expand = nil,
        hasFocusedTests = false,
        hasStarted = false,
        includeTestLocationInResult = false,
        parentProcess = nil,
        rootDescribeBlock = v81,
        testNamePattern = nil,
        testTimeout = 5000,
        unhandledErrors = {}
    };
end;
v0.resetState = function()
    _G[l_Error_0] = l_describeBlockHasTests_0();
end;
_G[l_Error_0] = l_describeBlockHasTests_0();
l_invariant_0 = v13.getState;
v0.getState = l_invariant_0;
v0.setState = function(v82)
    _G[l_Error_0] = v82;
    return _G[l_Error_0];
end;
v0.dispatch = function(v83)
    return l_Array_0.resolve():andThen(function()
        for _, v85 in ipairs(l_TEST_TIMEOUT_SYMBOL_0) do
            local v86 = v85(nil, v83, l_invariant_0());
            if v86 ~= nil then
                v86:expect();
            end;
        end;
    end);
end;
v3 = function(v87)
    for _, v89 in ipairs(l_TEST_TIMEOUT_SYMBOL_0) do
        v89(nil, v87, l_invariant_0());
    end;
end;
v0.dispatchSync = v3;
v0.addEventHandler = function(v90)
    table.insert(l_TEST_TIMEOUT_SYMBOL_0, v90);
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_instanceof_0 = v1.instanceof;
local v5 = require(l_Parent_0.RobloxShared);
local l_escapePatternCharacters_0 = v5.escapePatternCharacters;
local l_normalizePromiseError_0 = v5.normalizePromiseError;
local l_Error_0 = v1.Error;
local v9 = {};
local l_AssertionError_0 = v1.AssertionError;
local v11 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local v13 = require(l_Parent_0.JestMatcherUtils);
local l_diff_0 = v13.diff;
local l_printExpected_0 = v13.printExpected;
local l_printReceived_0 = v13.printReceived;
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local v18 = nil;
local v19 = nil;
local v20 = nil;
local v21 = nil;
local v22 = nil;
local v23 = nil;
local v24 = nil;
local v25 = nil;
local v26 = {
    ["="] = "notEqual",
    ["=="] = "notStrictEqual",
    ["=="] = "equal",
    ["==="] = "strictEqual"
};
local v27 = {
    deepEqual = "to deeply equal",
    deepStrictEqual = "to deeply and strictly equal",
    equal = "to be equal",
    notDeepEqual = "not to deeply equal",
    notDeepStrictEqual = "not to deeply and strictly equal",
    notEqual = "to not be equal",
    notStrictEqual = "not be strictly equal",
    strictEqual = "to strictly be equal"
};
v18 = function(_, v29, v30)
    if v29.name == "test_done" then
        v29.test.errors = l_Array_0.map(v29.test.errors, function(v31)
            local v32 = nil;
            if not l_Array_0.isArray(v31) then
                v32 = v31;
            else
                local v33, v34 = table.unpack(v31, 1, 2);
                if v33 == nil then
                    v32 = v34;
                elseif v33.kind == "ExecutionError" then
                    v32 = l_normalizePromiseError_0(v33);
                elseif l_Boolean_0.toJSBoolean(v33.stack) then
                    v32 = v33;
                else
                    v32 = v34;
                    v32.message = if not l_Boolean_0.toJSBoolean(v33.message) then ("thrown: %s"):format(l_format_0(v33, {
                        maxDepth = 3
                    })) else v33.message;
                    l_Error_0.__recalculateStacktrace(v32);
                end;
            end;
            if not v24(v32) then
                return v31;
            else
                return {
                    message = v23(v32, {
                        expand = v30.expand
                    })
                };
            end;
        end);
    end;
end;
v19 = function(v35, v36)
    if typeof(v35) == "string" then
        if not l_Boolean_0.toJSBoolean(v26[v35]) then
            return v35;
        else
            return v26[v35];
        end;
    elseif v36:match("%.doesNotThrow") ~= nil then
        return "doesNotThrow";
    elseif v36:match("%.throws") ~= nil then
        return "throws";
    elseif v36:match("%.fail") ~= nil then
        return "fail";
    else
        return "";
    end;
end;
v20 = function(v37)
    local v38 = v19(v37, "");
    local v39 = v27[v38];
    if typeof(v37) == "string" then
        return (("%s to:\n"):format(if not l_Boolean_0.toJSBoolean(v39) then v38 else v39));
    else
        return "";
    end;
end;
v21 = function(v40)
    if not l_Boolean_0.toJSBoolean(v40) then
        return "";
    else
        return v11.dim("assert") .. v11.dim("." .. v40 .. "(") .. v11.red("function") .. v11.dim(")");
    end;
end;
v22 = function(v41, v42, v43)
    local v44 = "";
    if v41 == "==" and v43 == true then
        return v11.dim("assert") .. v11.dim("(") .. v11.red("received") .. v11.dim(")");
    else
        if l_Boolean_0.toJSBoolean(v42) then
            v44 = v11.dim("assert") .. v11.dim("." .. v42 .. "(") .. v11.red("received") .. v11.dim(", ") .. v11.green("expected") .. v11.dim(")");
        end;
        return v44;
    end;
end;
v23 = function(v45, v46)
    local l_expected_0 = v45.expected;
    local l_actual_0 = v45.actual;
    local l_generatedMessage_0 = v45.generatedMessage;
    local l_message_0 = v45.message;
    local l_operator_0 = v45.operator;
    local l_stack_0 = v45.stack;
    local v53 = l_diff_0(l_expected_0, l_actual_0, v46);
    local v54 = not l_Boolean_0.toJSBoolean(l_generatedMessage_0);
    local v55 = v19(l_operator_0, l_stack_0);
    local v56 = l_stack_0:gsub(l_escapePatternCharacters_0(l_message_0), "", 1):gsub("^AssertionError([^\n]*)", ""):gsub("^Error([^\n]*)", "");
    if v55 == "doesNotThrow" then
        return v25(v21(v55)) .. v11.reset("Expected the function not to throw an error.\n") .. v11.reset("Instead, it threw:\n") .. ("  %s"):format(l_printReceived_0(l_actual_0)) .. v11.reset(not l_Boolean_0.toJSBoolean(v54) and "" or "\n\nMessage:\n  " .. tostring(l_message_0)) .. v56;
    elseif v55 == "throws" then
        return v25(v21(v55)) .. v11.reset("Expected the function to throw an error.\n") .. v11.reset("But it didn't throw anything.") .. v11.reset(not v54 and "" or "\n\nMessage:\n  " .. l_message_0) .. v56;
    elseif v55 == "fail" then
        return v25(v22(l_operator_0, v55, l_expected_0)) .. v11.reset(not v54 and "" or "Message:\n  " .. tostring(l_message_0)) .. v56;
    else
        return v25(v22(l_operator_0, v55, l_expected_0)) .. v11.reset(("Expected value %s"):format(v20(l_operator_0))) .. ("  %s\n"):format(l_printExpected_0(l_expected_0)) .. v11.reset("Received:\n") .. ("  %s"):format(l_printReceived_0(l_actual_0)) .. v11.reset(not v54 and "" or "\n\nMessage:\n  " .. tostring(l_message_0)) .. if not not l_Boolean_0.toJSBoolean(v53) and v53 ~= nil then ("\n\nDifference:\n\n%s"):format(v53) else "" .. v56;
    end;
end;
v24 = function(v57)
    local l_v57_0 = v57;
    if l_v57_0 then
        l_v57_0 = l_instanceof_0(v57, l_AssertionError_0);
        if not l_v57_0 then
            l_v57_0 = true;
            if v57.name ~= l_AssertionError_0.name then
                l_v57_0 = v57.code == "ERR_ASSERTION";
            end;
        end;
    end;
    return l_v57_0;
end;
v25 = function(v59)
    if not l_Boolean_0.toJSBoolean(v59) then
        return "";
    else
        return tostring(v59) .. "\n\n";
    end;
end;
v9.default = v18;
return v9;


local v0 = require(script.Parent.combined);
return {
    injectGlobalErrorHandlers = v0.injectGlobalErrorHandlers,
    restoreGlobalErrorHandlers = v0.restoreGlobalErrorHandlers
};


local l_Parent_0 = script.Parent.Parent;
local v1 = nil;
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
local l_bind_0 = require(l_Parent_0.JestEach).bind;
local v5 = require(l_Parent_0.JestUtil);
local l_ErrorWithStack_0 = v5.ErrorWithStack;
local l_convertDescriptorToString_0 = v5.convertDescriptorToString;
local l_isPromise_0 = v5.isPromise;
local l_dispatchSync_0 = require(script.state).dispatchSync;
local v10 = require(script.state);
v2.setState = v10.setState;
v2.getState = v10.getState;
v2.resetState = v10.resetState;
v2.run = require(script.run).default;
local _ = require(l_Parent_0.LuauPolyfill);
local v24 = (function()
    local v12 = nil;
    v12 = setmetatable({}, {
        __call = function(_, v14, v15)
            return v1(v15, v14, v12);
        end
    });
    local v16 = nil;
    v16 = setmetatable({}, {
        __call = function(_, v18, v19)
            return v1(v19, v18, v16, "only");
        end
    });
    local v20 = nil;
    v20 = setmetatable({}, {
        __call = function(_, v22, v23)
            return v1(v23, v22, v20, "skip");
        end
    });
    v12.each = l_bind_0(v12, false);
    v16.each = l_bind_0(v16, false);
    v20.each = l_bind_0(v20, false);
    v12.only = v16;
    v12.skip = v20;
    return v12;
end)();
v1 = function(v25, v26, v27, v28)
    local v29 = l_ErrorWithStack_0.new(nil, v27);
    if v25 == nil then
        v29.message = "Missing second argument. It must be a callback function.";
        error(v29);
    end;
    if typeof(v25) ~= "function" then
        v29.message = ("Invalid second argument, %s. It must be a callback function."):format(v25);
        error(v29);
    end;
    local v31, v32, v33 = xpcall(function()
        v26 = l_convertDescriptorToString_0(v26);
    end, function(v30)
        v29.message = v30.message;
        error(v29);
    end);
    if not v33 then
        l_dispatchSync_0({
            asyncError = v29,
            blockName = v26,
            mode = v28,
            name = "start_describe_definition"
        });
        v31 = v25();
        if not l_isPromise_0(v31) then
            if v31 ~= nil then
                error(l_ErrorWithStack_0.new("A \"describe\" callback must not return a value.", v27));
            end;
        else
            error(l_ErrorWithStack_0.new("Returning a Promise from \"describe\" is not supported. Tests must be defined synchronously.", v27));
        end;
        l_dispatchSync_0({
            blockName = v26,
            mode = v28,
            name = "finish_describe_definition"
        });
        return ;
    else
        return v32;
    end;
end;
local function v39(v34, v35, v36, v37)
    local v38 = l_ErrorWithStack_0.new(nil, v36);
    if typeof(v34) ~= "function" then
        v38.message = "Invalid first argument. It must be a callback function.";
        error(v38);
    end;
    l_dispatchSync_0({
        asyncError = v38,
        fn = v34,
        hookType = v35,
        name = "add_hook",
        timeout = v37
    });
end;
local v40 = nil;
v40 = function(v41, v42)
    return v39(v41, "beforeEach", v40, v42);
end;
local v43 = nil;
v43 = function(v44, v45)
    return v39(v44, "beforeAll", v43, v45);
end;
local v46 = nil;
v46 = function(v47, v48)
    return v39(v47, "afterEach", v46, v48);
end;
local v49 = nil;
v49 = function(v50, v51)
    return v39(v50, "afterAll", v49, v51);
end;
local v80 = (function()
    local v52 = nil;
    local v53 = nil;
    v53 = setmetatable({}, {
        __call = function(_, v55, v56, v57)
            return v52(v55, nil, v56, v53, v57);
        end
    });
    local v58 = nil;
    v58 = setmetatable({}, {
        __call = function(_, v60, v61, v62)
            return v52(v60, "skip", v61, v58, v62);
        end
    });
    local v63 = nil;
    v63 = setmetatable({}, {
        __call = function(_, v65, v66, v67)
            return v52(v65, "only", v66, v53.only, v67);
        end
    });
    v53.todo = function(v68, ...)
        if not (#{
            ...
        } <= 0) or typeof(v68) ~= "string" then
            error(l_ErrorWithStack_0.new("Todo must be called with only a description.", v53.todo));
        end;
        return v52(v68, "todo", function()
        end, v53.todo);
    end;
    v52 = function(v69, v70, v71, v72, v73)
        local v74 = l_ErrorWithStack_0.new(nil, v72);
        local v75 = false;
        local _, v78, v79 = xpcall(function()
            v69 = l_convertDescriptorToString_0(v69);
        end, function(v76)
            v74.message = v76.message;
            v75 = true;
        end);
        if not v79 then
            if v75 then
                error(v74);
            end;
            if v71 == nil then
                v74.message = "Missing second argument. It must be a callback function. Perhaps you want to use `test.todo` for a test placeholder.";
                error(v74);
            end;
            if typeof(v71) ~= "function" then
                v74.message = ("Invalid second argument, %s. It must be a callback function."):format((tostring(v71)));
                error(v74);
            end;
            return l_dispatchSync_0({
                asyncError = v74,
                fn = v71,
                mode = v70,
                name = "add_test",
                testName = v69,
                timeout = v73
            });
        else
            return v78;
        end;
    end;
    v53.each = l_bind_0(v53);
    v63.each = l_bind_0(v63);
    v58.each = l_bind_0(v58);
    v53.only = v63;
    v53.skip = v58;
    return v53;
end)();
v2.afterAll = v49;
v2.afterEach = v46;
v2.beforeAll = v43;
v2.beforeEach = v40;
v2.describe = v24;
v2.it = v80;
v2.test = v80;
v2.default = {
    afterAll = v49,
    afterEach = v46,
    beforeAll = v43,
    beforeEach = v40,
    describe = v24,
    it = v80,
    test = v80
};
return v2;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = require(l_Parent_0.Promise);
local _ = require(l_Parent_0.JestEnvironment);
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.JestRuntime);
local l_deepCyclicCopy_0 = require(l_Parent_0.JestUtil).deepCyclicCopy;
local l_jestAdapterInit_0 = script.Parent.jestAdapterInit;
local v11 = nil;
local function v27(v12, v13, v14, v15, v16, v17)
    return v4.resolve():andThen(function()
        local v18 = v15:requireInternalModule(l_jestAdapterInit_0);
        local l_initialize_0 = v18.initialize;
        local l_runAndTransformResultsToJestFormat_0 = v18.runAndTransformResultsToJestFormat;
        local v21 = l_initialize_0({
            config = v13,
            environment = v14,
            globalConfig = v12,
            localRequire = function(...)
                return v15:requireModule(...);
            end,
            sendMessageToJest = v17,
            setGlobalsForRuntime = function(...)
                v15:setGlobalsForRuntime(...);
            end,
            testPath = v16
        }):expect();
        local l_globals_0 = v21.globals;
        local l_snapshotState_0 = v21.snapshotState;
        v14.fakeTimers:useFakeTimers();
        l_globals_0.beforeEach(function()
            if v13.resetModules then
                v15:resetModules();
            end;
            if v13.clearMocks then
                v15:clearAllMocks();
            end;
            if v13.resetMocks then
                v15:resetAllMocks();
                if l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(v13.fakeTimers.enableGlobally) then v13.fakeTimers.enableGlobally else v13.fakeTimers.legacyFakeTimers) then
                    v14.fakeTimers:useFakeTimers();
                end;
            end;
            if v13.restoreMocks then
                v15:restoreAllMocks();
            end;
        end);
        for _, v25 in v13.setupFilesAfterEnv, nil, nil do
            v15:requireModule(v25, nil, nil, nil, true);
        end;
        v15:requireModule(v16, nil, nil, nil, true);
        local v26 = l_runAndTransformResultsToJestFormat_0({
            config = v13,
            globalConfig = v12,
            testPath = v16
        }):expect();
        v11(v26, l_snapshotState_0);
        return l_deepCyclicCopy_0(v26, {
            keepPrototype = false
        });
    end);
end;
v11 = function(v28, v29)
    l_Array_0.forEach(v28.testResults, function(v30)
        local l_fullName_0 = v30.fullName;
        local l_status_0 = v30.status;
        if not (l_status_0 ~= "pending") or l_status_0 == "failed" then
            v29:markSnapshotsAsCheckedForTest(l_fullName_0);
        end;
    end);
    local v33 = v29:getUncheckedCount();
    local v34 = v29:getUncheckedKeys();
    if l_Boolean_0.toJSBoolean(v33) then
        v29:removeUncheckedKeys();
    end;
    local v35 = v29:save();
    v28.snapshot.fileDeleted = v35.deleted;
    v28.snapshot.added = v29.added;
    v28.snapshot.matched = v29.matched;
    v28.snapshot.unmatched = v29.unmatched;
    v28.snapshot.updated = v29.updated;
    v28.snapshot.unchecked = v35.deleted and 0 or v33;
    v28.snapshot.uncheckedKeys = l_Array_0.from(v34);
end;
return v27;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local v5 = require(l_Parent_0.Promise);
local v6 = {};
local l_default_0 = require(l_Parent_0.Throat).default;
local _ = require(l_Parent_0.JestEnvironment);
local l_createEmptyTestResult_0 = require(l_Parent_0.JestTestResult).createEmptyTestResult;
local _ = require(l_Parent_0.JestTypes);
local v11 = require(l_Parent_0.Expect);
local l_extractExpectedAssertionsErrors_0 = v11.extractExpectedAssertionsErrors;
local l_getState_0 = v11.getState;
local l_setState_0 = v11.setState;
local l_bind_0 = require(l_Parent_0.JestEach).bind;
local v16 = require(l_Parent_0.JestMessageUtil);
local l_formatExecError_0 = v16.formatExecError;
local l_formatResultsErrors_0 = v16.formatResultsErrors;
local v19 = require(l_Parent_0.JestSnapshot);
local l_SnapshotState_0 = v19.SnapshotState;
local l_addSerializer_0 = v19.addSerializer;
local l_buildSnapshotResolver_0 = v19.buildSnapshotResolver;
local l_default_1 = require(script.Parent.Parent).default;
local l_default_2 = require(script.Parent.Parent.run).default;
local v25 = require(script.Parent.Parent.state);
local l_ROOT_DESCRIBE_BLOCK_NAME_0 = v25.ROOT_DESCRIBE_BLOCK_NAME;
local l_addEventHandler_0 = v25.addEventHandler;
local l_dispatch_0 = v25.dispatch;
local l_getState_1 = v25.getState;
local l_default_3 = require(script.Parent.Parent.testCaseReportHandler).default;
local l_getTestID_0 = require(script.Parent.Parent.utils).getTestID;
local l_default_4 = require(script.Parent.jestExpect).default;
local l_getRelativePath_0 = require(l_Parent_0.RobloxShared).getRelativePath;
local v34 = nil;
local v35 = nil;
local v36 = nil;
local v37 = nil;
v6.initialize = function(v38)
    local l_config_0 = v38.config;
    local l_environment_0 = v38.environment;
    local l_globalConfig_0 = v38.globalConfig;
    local l_localRequire_0 = v38.localRequire;
    local l_parentProcess_0 = v38.parentProcess;
    local l_sendMessageToJest_0 = v38.sendMessageToJest;
    local l_setGlobalsForRuntime_0 = v38.setGlobalsForRuntime;
    local l_testPath_0 = v38.testPath;
    return v5.resolve():andThen(function()
        if l_globalConfig_0.testTimeout ~= nil and l_globalConfig_0.testTimeout > 0 then
            l_getState_1().testTimeout = l_globalConfig_0.testTimeout;
        end;
        local v47 = l_default_0(l_globalConfig_0.maxConcurrency);
        local v48 = l_Object_0.assign({}, l_default_1, {
            fdescribe = l_default_1.describe.only,
            fit = l_default_1.it.only,
            xdescribe = l_default_1.describe.skip,
            xit = l_default_1.it.skip,
            xtest = l_default_1.it.skip
        });
        v48.test.concurrent = (function(v49)
            local function v54(v50, v51, v52)
                local v53 = v47(function()
                    return v51();
                end);
                v53:catch(function()
                end);
                v48.test(v50, function()
                    return v53;
                end, v52);
            end;
            local v59 = setmetatable({}, {
                __call = function(_, v56, v57, v58)
                    v54(v56, v57, v58);
                end
            });
            local function v64(v60, v61, v62)
                local v63 = v47(function()
                    return v61();
                end);
                v49.only(v60, function()
                    return v63;
                end, v62);
            end;
            local v69 = setmetatable({}, {
                __call = function(_, v66, v67, v68)
                    return v64(v66, v67, v68);
                end
            });
            v59.only = v69;
            v59.skip = v49.skip;
            v59.each = l_bind_0(v49, false);
            v59.skip.each = l_bind_0(v49.skip, false);
            v69.each = l_bind_0(v49.only, false);
            return v59;
        end)(v48.test);
        l_addEventHandler_0(v35);
        if l_environment_0.handleTestEvent ~= nil then
            local l_handleTestEvent_0 = l_environment_0.handleTestEvent;
            local l_l_handleTestEvent_0_0 = l_handleTestEvent_0 --[[ copy: 2 -> 8 ]];
            l_addEventHandler_0(function(...)
                return l_l_handleTestEvent_0_0(l_environment_0, ...);
            end);
        end;
        local v72 = l_Object_0.assign({}, v48, {
            expect = l_default_4(l_globalConfig_0)
        });
        v72.expectExtended = v72.expect;
        l_setGlobalsForRuntime_0(v72);
        if l_config_0.injectGlobals then
            l_Object_0.assign(l_environment_0.global, v72);
        end;
        l_dispatch_0({
            name = "setup",
            parentProcess = l_parentProcess_0,
            runtimeGlobals = v72,
            testNamePattern = l_globalConfig_0.testNamePattern
        }):expect();
        if l_config_0.testLocationInResults then
            l_dispatch_0({
                name = "include_test_location_in_result"
            }):expect();
        end;
        l_Array_0.forEach(l_Array_0.reverse(l_Array_0.concat(l_config_0.snapshotSerializers)), function(v73)
            return l_addSerializer_0(l_localRequire_0(v73));
        end);
        local v74 = l_SnapshotState_0.new(l_buildSnapshotResolver_0(l_config_0, l_localRequire_0):expect():resolveSnapshotPath(l_testPath_0), {
            expand = l_globalConfig_0.expand,
            snapshotFormat = l_config_0.snapshotFormat,
            updateSnapshot = l_globalConfig_0.updateSnapshot
        });
        l_setState_0({
            snapshotState = v74,
            testPath = l_testPath_0
        });
        l_addEventHandler_0(v34(v74));
        if l_sendMessageToJest_0 ~= nil then
            l_addEventHandler_0(l_default_3(l_getRelativePath_0(l_testPath_0), l_sendMessageToJest_0));
        end;
        return {
            globals = v48,
            snapshotState = v74
        };
    end);
end;
v6.runAndTransformResultsToJestFormat = function(v75)
    local l_config_1 = v75.config;
    local l_globalConfig_1 = v75.globalConfig;
    local l_testPath_1 = v75.testPath;
    return v5.resolve():andThen(function()
        local v79 = v5.resolve(l_default_2()):expect();
        local v80 = 0;
        local v81 = 0;
        local v82 = 0;
        local v83 = 0;
        local v89 = l_Array_0.map(v79.testResults, function(v84)
            local v85 = nil;
            if v84.status == "skip" then
                v85 = "pending";
                v82 = v82 + 1;
            elseif v84.status == "todo" then
                v85 = "todo";
                v83 = v83 + 1;
            elseif #v84.errors ~= 0 then
                v85 = "failed";
                v80 = v80 + 1;
            else
                v85 = "passed";
                v81 = v81 + 1;
            end;
            local v87 = l_Array_0.filter(v84.testPath, function(v86)
                return v86 ~= l_ROOT_DESCRIBE_BLOCK_NAME_0;
            end);
            local v88 = table.remove(v87);
            return {
                ancestorTitles = v87,
                duration = v84.duration,
                failureDetails = v84.errorsDetailed,
                failureMessages = v84.errors,
                fullName = if not l_Boolean_0.toJSBoolean(v88) then l_Array_0.join(v87, " ") else l_Array_0.join(l_Array_0.concat(v87, v88), " "),
                invocations = v84.invocations,
                location = v84.location,
                numPassingAsserts = 0,
                retryReasons = v84.retryReasons,
                status = v85,
                title = v84.testPath[#v84.testPath]
            };
        end);
        local v90 = l_formatResultsErrors_0(v89, l_config_1, l_globalConfig_1, l_testPath_1);
        local v91 = nil;
        if #v79.unhandledErrors ~= 0 then
            v91 = {
                message = "",
                stack = l_Array_0.join(v79.unhandledErrors, "\n")
            };
            v90 = (not not l_Boolean_0.toJSBoolean(v90) and v90 or "") .. "\n\n" .. l_Array_0.join(l_Array_0.map(v79.unhandledErrors, function(v92)
                return l_formatExecError_0(v92, l_config_1, l_globalConfig_1);
            end), "\n");
        end;
        l_dispatch_0({
            name = "teardown"
        }):expect();
        return l_Object_0.assign({}, l_createEmptyTestResult_0(), {
            console = l_Object_0.None,
            displayName = l_config_1.displayName,
            failureMessage = v90,
            numFailingTests = v80,
            numPassingTests = v81,
            numPendingTests = v82,
            numTodoTests = v83,
            testExecError = v91,
            testFilePath = l_testPath_1,
            testResults = v89
        });
    end);
end;
v34 = function(v93)
    return function(_, v95)
        if v95.name == "test_retry" then
            v93:clear();
        end;
    end;
end;
v35 = function(_, v97)
    return v5.resolve():andThen(function()
        if v97.name == "test_start" then
            l_setState_0({
                currentTestName = l_getTestID_0(v97.test)
            });
            return ;
        elseif v97.name == "test_done" then
            v37(v97.test);
            v36(v97.test);
            return ;
        else
            return ;
        end;
    end);
end;
v36 = function(v98)
    v98.errors = l_Array_0.concat(v98.errors, (l_Array_0.map(l_extractExpectedAssertionsErrors_0(), function(v99)
        return v99.error;
    end)));
end;
v37 = function(v100)
    local l_suppressedErrors_0 = l_getState_0().suppressedErrors;
    l_setState_0({
        suppressedErrors = {}
    });
    if #l_suppressedErrors_0 ~= 0 then
        v100.errors = l_Array_0.concat(v100.errors, l_suppressedErrors_0);
    end;
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = {};
local _ = require(l_Parent_0.JestTypes);
local v3 = require(l_Parent_0.Expect);
local v4 = require(l_Parent_0.JestSnapshot);
local l_addSerializer_0 = v4.addSerializer;
local l_toMatchSnapshot_0 = v4.toMatchSnapshot;
local l_toThrowErrorMatchingSnapshot_0 = v4.toThrowErrorMatchingSnapshot;
v1.default = function(v8)
    v3.setState({
        expand = v8.expand
    });
    v3.extend({
        toMatchSnapshot = l_toMatchSnapshot_0,
        toThrowErrorMatchingSnapshot = l_toThrowErrorMatchingSnapshot_0
    });
    v3.addSnapshotSerializer = l_addSerializer_0;
    return v3;
end;
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local v2 = require(l_Parent_0.Promise);
local v3 = {};
local _ = require(l_Parent_0.JestTypes);
local v5 = require(script.Parent.state);
local l_dispatch_0 = v5.dispatch;
local l_getState_0 = v5.getState;
local l_RETRY_TIMES_0 = require(script.Parent.types).RETRY_TIMES;
local v9 = require(script.Parent.utils);
local l_callAsyncCircusFn_0 = v9.callAsyncCircusFn;
local l_getAllHooksForDescribe_0 = v9.getAllHooksForDescribe;
local l_getEachHooksForTest_0 = v9.getEachHooksForTest;
local l_getTestID_0 = v9.getTestID;
local l_invariant_0 = v9.invariant;
local l_makeRunResult_0 = v9.makeRunResult;
local v16 = nil;
local v17 = nil;
local v18 = nil;
local v19 = nil;
local function v21()
    return v2.resolve():andThen(function()
        local v20 = nil;
        v20 = l_getState_0().rootDescribeBlock;
        l_dispatch_0({
            name = "run_start"
        }):expect();
        v16(v20):expect();
        l_dispatch_0({
            name = "run_finish"
        }):expect();
        return l_makeRunResult_0(l_getState_0().rootDescribeBlock, l_getState_0().unhandledErrors);
    end);
end;
v16 = function(v22)
    return v2.resolve():andThen(function()
        l_dispatch_0({
            describeBlock = v22,
            name = "run_describe_start"
        }):expect();
        local v23 = l_getAllHooksForDescribe_0(v22);
        local l_beforeAll_0 = v23.beforeAll;
        local l_afterAll_0 = v23.afterAll;
        local v26 = v22.mode == "skip";
        if not v26 then
            for _, v28 in ipairs(l_beforeAll_0) do
                v18({
                    describeBlock = v22,
                    hook = v28
                }):expect();
            end;
        end;
        local v29 = tonumber(_G[l_RETRY_TIMES_0], 10);
        local v30 = if v29 ~= nil then v29 else 0;
        local v31 = {};
        for _, v33 in ipairs(v22.children) do
            if v33.type == "describeBlock" then
                v16(v33):expect();
            elseif v33.type == "test" then
                local v34 = #v33.errors > 0;
                v17(v33, v26):expect();
                if (v34 == false and v30 > 0) and #v33.errors > 0 then
                    table.insert(v31, v33);
                end;
            end;
        end;
        for _, v36 in ipairs(v31) do
            local l_v30_0 = v30;
            while l_v30_0 > 0 and #v36.errors > 0 do
                l_dispatch_0({
                    name = "test_retry",
                    test = v36
                }):expect();
                v17(v36, v26):expect();
                l_v30_0 = l_v30_0 - 1;
            end;
        end;
        if not v26 then
            for _, v39 in ipairs(l_afterAll_0) do
                v18({
                    describeBlock = v22,
                    hook = v39
                }):expect();
            end;
        end;
        l_dispatch_0({
            describeBlock = v22,
            name = "run_describe_finish"
        }):expect();
    end);
end;
v17 = function(v40, v41)
    return v2.resolve():andThen(function()
        l_dispatch_0({
            name = "test_start",
            test = v40
        }):expect();
        local v42 = {};
        local v43 = l_getState_0();
        local l_hasFocusedTests_0 = v43.hasFocusedTests;
        local l_testNamePattern_0 = v43.testNamePattern;
        local l_v41_0 = v41;
        if not l_v41_0 then
            l_v41_0 = true;
            if v40.mode ~= "skip" then
                if l_hasFocusedTests_0 then
                    l_v41_0 = true;
                    if not (v40.mode == "only") then
                        goto label0;
                    end;
                end;
                l_v41_0 = l_testNamePattern_0 and not l_testNamePattern_0:test(l_getTestID_0(v40));
            end;
        end;
        ::label0::;
        if not l_v41_0 then
            if v40.mode == "todo" then
                l_dispatch_0({
                    name = "test_todo",
                    test = v40
                }):expect();
                return ;
            else
                local v47 = l_getEachHooksForTest_0(v40);
                local l_afterEach_0 = v47.afterEach;
                for _, v50 in ipairs(v47.beforeEach) do
                    if #v40.errors <= 0 then
                        v18({
                            hook = v50,
                            test = v40,
                            testContext = v42
                        }):expect();
                    else
                        break;
                    end;
                end;
                v19(v40, v42):expect();
                for _, v52 in ipairs(l_afterEach_0) do
                    v18({
                        hook = v52,
                        test = v40,
                        testContext = v42
                    }):expect();
                end;
                l_dispatch_0({
                    name = "test_done",
                    test = v40
                }):expect();
                return ;
            end;
        else
            l_dispatch_0({
                name = "test_skip",
                test = v40
            }):expect();
            return ;
        end;
    end);
end;
v18 = function(v53)
    local l_hook_0 = v53.hook;
    local l_test_0 = v53.test;
    local l_describeBlock_0 = v53.describeBlock;
    local l_testContext_0 = v53.testContext;
    return v2.resolve():andThen(function()
        l_dispatch_0({
            hook = l_hook_0,
            name = "hook_start"
        }):expect();
        local v58 = if not not l_Boolean_0.toJSBoolean(l_hook_0.timeout) and l_hook_0.timeout ~= nil then l_hook_0.timeout else l_getState_0().testTimeout;
        local l_status_0, l_result_0 = pcall(function()
            l_callAsyncCircusFn_0(l_hook_0, l_testContext_0, {
                isHook = true,
                timeout = v58
            }):expect();
            l_dispatch_0({
                describeBlock = l_describeBlock_0,
                hook = l_hook_0,
                name = "hook_success",
                test = l_test_0
            }):expect();
        end);
        if not l_status_0 then
            l_dispatch_0({
                describeBlock = l_describeBlock_0,
                error = l_result_0,
                hook = l_hook_0,
                name = "hook_failure",
                test = l_test_0
            }):expect();
        end;
    end);
end;
v19 = function(v61, v62)
    return v2.resolve():andThen(function()
        l_dispatch_0({
            name = "test_fn_start",
            test = v61
        }):expect();
        local v63 = not not l_Boolean_0.toJSBoolean(v61.timeout) and v61.timeout or l_getState_0().testTimeout;
        l_invariant_0(v61.fn, "Tests with no 'fn' should have 'mode' set to 'skipped'");
        if #v61.errors > 0 then
            return ;
        else
            local l_status_1, l_result_1 = pcall(function()
                l_callAsyncCircusFn_0(v61, v62, {
                    isHook = false,
                    timeout = v63
                }):expect();
                l_dispatch_0({
                    name = "test_fn_success",
                    test = v61
                }):expect();
            end);
            if not l_status_1 then
                l_dispatch_0({
                    error = l_result_1,
                    name = "test_fn_failure",
                    test = v61
                }):expect();
            end;
            return ;
        end;
    end);
end;
v3.default = v21;
return v3;


local v0 = require(script.Parent.combined);
return {
    ROOT_DESCRIBE_BLOCK_NAME = v0.ROOT_DESCRIBE_BLOCK_NAME,
    resetState = v0.resetState,
    getState = v0.getState,
    setState = v0.setState,
    dispatch = v0.dispatch,
    dispatchSync = v0.dispatchSync,
    addEventHandler = v0.addEventHandler
};


local _ = require(script.Parent.Parent.Parent.JestTypes);
local l_STATE_SYM_0 = require(script.Parent.types).STATE_SYM;
return {
    ROOT_DESCRIBE_BLOCK_NAME = "ROOT_DESCRIBE_BLOCK",
    getState = function()
        return _G[l_STATE_SYM_0];
    end
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = {};
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local v4 = require(script.Parent.utils);
local l_makeSingleTestResult_0 = v4.makeSingleTestResult;
local l_parseSingleTestResult_0 = v4.parseSingleTestResult;
v1.default = function(v7, v8)
    return function(_, v10)
        if v10.name == "test_done" then
            v8("test-case-result", {
                v7,
                (l_parseSingleTestResult_0((l_makeSingleTestResult_0(v10.test))))
            });
        end;
    end;
end;
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Symbol_0 = require(l_Parent_0.LuauPolyfill).Symbol;
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.Expect);
v2.STATE_SYM = l_Symbol_0("JEST_STATE_SYMBOL");
v2.RETRY_TIMES = l_Symbol_0.for_("RETRY_TIMES");
v2.TEST_TIMEOUT_SYMBOL = l_Symbol_0.for_("TEST_TIMEOUT_SYMBOL");
return v2;