local l_Parent_0 = script.Parent.Parent.Parent;
local l_language_0 = l_Parent_0.language;
local l_jsutils_0 = l_Parent_0.jsutils;
local v3 = require(l_jsutils_0.instanceOf);
local l_keyMap_0 = require(l_jsutils_0.keyMap).keyMap;
local l_inspect_0 = require(l_jsutils_0.inspect).inspect;
local l_didYouMean_0 = require(l_jsutils_0.didYouMean).didYouMean;
local l_suggestionList_0 = require(l_jsutils_0.suggestionList).suggestionList;
local l_GraphQLError_0 = require(l_Parent_0.error.GraphQLError).GraphQLError;
local l_print_0 = require(l_language_0.printer).print;
local v10 = require(l_Parent_0.type.definition);
local l_isLeafType_0 = v10.isLeafType;
local l_isInputObjectType_0 = v10.isInputObjectType;
local l_isListType_0 = v10.isListType;
local l_isNonNullType_0 = v10.isNonNullType;
local l_isRequiredInputField_0 = v10.isRequiredInputField;
local l_getNullableType_0 = v10.getNullableType;
local l_getNamedType_0 = v10.getNamedType;
local v18 = {};
local v19 = nil;
v18.ValuesOfCorrectTypeRule = function(v20)
    return {
        ListValue = function(_, v22)
            if l_isListType_0((l_getNullableType_0(v20:getParentInputType()))) then
                return ;
            else
                v19(v20, v22);
                return false;
            end;
        end,
        ObjectValue = function(_, v24)
            local v25 = l_getNamedType_0(v20:getInputType());
            if l_isInputObjectType_0(v25) then
                local v27 = l_keyMap_0(v24.fields, function(v26)
                    return v26.name.value;
                end);
                for _, v29 in ipairs(v25:getFields():values()) do
                    if not (v27[v29.name] or not l_isRequiredInputField_0(v29)) then
                        v20:reportError(l_GraphQLError_0.new(("Field \"%s.%s\" of required type \"%s\" was not provided."):format(v25.name, v29.name, (l_inspect_0(v29.type))), v24));
                    end;
                end;
                return ;
            else
                v19(v20, v24);
                return false;
            end;
        end,
        ObjectField = function(_, v31)
            local v32 = l_getNamedType_0(v20:getParentInputType());
            if not (v20:getInputType() or not l_isInputObjectType_0(v32)) then
                v20:reportError(l_GraphQLError_0.new(("Field \"%s\" is not defined by type \"%s\"."):format(v31.name.value, v32.name) .. l_didYouMean_0((l_suggestionList_0(v31.name.value, v32:getFields():keys()))), v31));
            end;
        end,
        NullValue = function(_, v34)
            local v35 = v20:getInputType();
            if l_isNonNullType_0(v35) then
                v20:reportError(l_GraphQLError_0.new(("Expected value of type \"%s\", found %s."):format(l_inspect_0(v35), l_print_0(v34)), v34));
            end;
        end,
        EnumValue = function(_, v37)
            return v19(v20, v37);
        end,
        IntValue = function(_, v39)
            return v19(v20, v39);
        end,
        FloatValue = function(_, v41)
            return v19(v20, v41);
        end,
        StringValue = function(_, v43)
            return v19(v20, v43);
        end,
        BooleanValue = function(_, v45)
            return v19(v20, v45);
        end
    };
end;
v19 = function(v46, v47)
    local v48 = v46:getInputType();
    if v48 then
        local v49 = l_getNamedType_0(v48);
        if l_isLeafType_0(v49) then
            xpcall(function()
                if v49:parseLiteral(v47, nil) == nil then
                    v46:reportError(l_GraphQLError_0.new(("Expected value of type \"%s\", found %s."):format(l_inspect_0(v48), l_print_0(v47)), v47));
                end;
            end, function(v50)
                local v51 = l_inspect_0(v48);
                if not v3(v50, l_GraphQLError_0) then
                    v46:reportError(l_GraphQLError_0.new(("Expected value of type \"%s\", found %s; "):format(v51, l_print_0(v47)) .. v50.message, v47, nil, nil, nil, v50));
                    return ;
                else
                    v46:reportError(v50);
                    return ;
                end;
            end);
            return ;
        else
            v46:reportError(l_GraphQLError_0.new(("Expected value of type \"%s\", found %s."):format(l_inspect_0(v48), l_print_0(v47)), v47));
            return ;
        end;
    else
        return ;
    end;
end;
return v18;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_GraphQLError_0 = require(l_Parent_0.error.GraphQLError).GraphQLError;
local l_print_0 = require(l_Parent_0.language.printer).print;
local l_isInputType_0 = require(l_Parent_0.type.definition).isInputType;
local l_typeFromAST_0 = require(l_Parent_0.utilities.typeFromAST).typeFromAST;
return {
    VariablesAreInputTypesRule = function(v5)
        return {
            VariableDefinition = function(_, v7)
                local v8 = l_typeFromAST_0(v5:getSchema(), v7.type);
                if not (not v8 or l_isInputType_0(v8)) then
                    v5:reportError(l_GraphQLError_0.new(("Variable \"$%s\" cannot be non-input type \"%s\"."):format(v7.variable.name.value, (l_print_0(v7.type))), v7.type));
                end;
            end
        };
    end
};


local l_Parent_0 = script.Parent.Parent.Parent;
local l_inspect_0 = require(l_Parent_0.jsutils.inspect).inspect;
local l_GraphQLError_0 = require(l_Parent_0.error.GraphQLError).GraphQLError;
local l_Kind_0 = require(l_Parent_0.language.kinds).Kind;
local l_isNonNullType_0 = require(l_Parent_0.type.definition).isNonNullType;
local l_utilities_0 = l_Parent_0.utilities;
local l_typeFromAST_0 = require(l_utilities_0.typeFromAST).typeFromAST;
local l_isTypeSubTypeOf_0 = require(l_utilities_0.typeComparators).isTypeSubTypeOf;
local v8 = {};
local v9 = nil;
v8.VariablesInAllowedPositionRule = function(v10)
    local v11 = {};
    return {
        OperationDefinition = {
            enter = function()
                v11 = {};
            end,
            leave = function(_, v13)
                for _, v15 in ipairs((v10:getRecursiveVariableUsages(v13))) do
                    local l_node_0 = v15.node;
                    local l_type_0 = v15.type;
                    local l_defaultValue_0 = v15.defaultValue;
                    local l_value_0 = l_node_0.name.value;
                    local v20 = v11[l_value_0];
                    if not (not v20 or not l_type_0) then
                        local v21 = v10:getSchema();
                        local v22 = l_typeFromAST_0(v21, v20.type);
                        if not (not v22 or v9(v21, v22, v20.defaultValue, l_type_0, l_defaultValue_0)) then
                            v10:reportError(l_GraphQLError_0.new(("Variable \"$%s\" of type \"%s\" used in position expecting type \"%s\"."):format(l_value_0, l_inspect_0(v22), (l_inspect_0(l_type_0))), {
                                v20,
                                l_node_0
                            }));
                        end;
                    end;
                end;
            end
        },
        VariableDefinition = function(_, v24)
            v11[v24.variable.name.value] = v24;
        end
    };
end;
v9 = function(v25, v26, v27, v28, v29)
    if not l_isNonNullType_0(v28) or l_isNonNullType_0(v26) then
        return l_isTypeSubTypeOf_0(v25, v26, v28);
    else
        local v30 = false;
        if v27 ~= nil then
            v30 = v27.kind ~= l_Kind_0.NULL;
        end;
        local v31 = v29 ~= nil;
        if v30 or v31 then
            return l_isTypeSubTypeOf_0(v25, v26, v28.ofType);
        else
            return false;
        end;
    end;
end;
return v8;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local l_GraphQLError_0 = require(l_Parent_0.error.GraphQLError).GraphQLError;
local v3 = require(l_Parent_0.type.definition);
local l_getNamedType_0 = v3.getNamedType;
local l_isInputObjectType_0 = v3.isInputObjectType;
return {
    NoDeprecatedCustomRule = function(v6)
        return {
            Field = function(_, v8)
                local v9 = v6:getFieldDef();
                local v10 = v9 and v9.deprecationReason;
                if v9 and v10 ~= nil then
                    local v11 = v6:getParentType();
                    l_invariant_0(v11 ~= nil);
                    v6:reportError(l_GraphQLError_0.new(("The field %s.%s is deprecated. %s"):format(v11.name, v9.name, v10), v8));
                end;
            end,
            Argument = function(_, v13)
                local v14 = v6:getArgument();
                local v15 = v14 and v14.deprecationReason;
                if v14 and v15 ~= nil then
                    local v16 = v6:getDirective();
                    if v16 ~= nil then
                        v6:reportError(l_GraphQLError_0.new(("Directive \"@%s\" argument \"%s\" is deprecated. %s"):format(v16.name, v14.name, v15), v13));
                        return ;
                    else
                        local v17 = v6:getParentType();
                        local v18 = v6:getFieldDef();
                        local l_l_invariant_0_0 = l_invariant_0;
                        local v20 = false;
                        if v17 ~= nil then
                            v20 = v18 ~= nil;
                        end;
                        l_l_invariant_0_0(v20);
                        v6:reportError(l_GraphQLError_0.new(("Field \"%s.%s\" argument \"%s\" is deprecated. %s"):format(v17.name, v18.name, v14.name, v15), v13));
                    end;
                end;
            end,
            ObjectField = function(_, v22)
                local v23 = l_getNamedType_0(v6:getParentInputType());
                if l_isInputObjectType_0(v23) then
                    local v24 = v23:getFields():get(v22.name.value);
                    local v25 = v24 and v24.deprecationReason;
                    if v25 ~= nil then
                        v6:reportError(l_GraphQLError_0.new(("The input field %s.%s is deprecated. %s"):format(v23.name, v24.name, v25), v22));
                    end;
                end;
            end,
            EnumValue = function(_, v27)
                local v28 = v6:getEnumValue();
                local v29 = v28 and v28.deprecationReason;
                if v28 and v29 ~= nil then
                    local v30 = l_getNamedType_0(v6:getInputType());
                    l_invariant_0(v30 ~= nil);
                    v6:reportError(l_GraphQLError_0.new(("The enum value \"%s.%s\" is deprecated. %s"):format(v30.name, v28.name, v29), v27));
                end;
            end
        };
    end
};


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_GraphQLError_0 = require(l_Parent_0.error.GraphQLError).GraphQLError;
local l_getNamedType_0 = require(l_Parent_0.type.definition).getNamedType;
local l_isIntrospectionType_0 = require(l_Parent_0.type.introspection).isIntrospectionType;
return {
    NoSchemaIntrospectionCustomRule = function(v4)
        return {
            Field = function(_, v6)
                local v7 = l_getNamedType_0(v4:getType());
                if not (not v7 or not l_isIntrospectionType_0(v7)) then
                    v4:reportError(l_GraphQLError_0.new(("GraphQL introspection has been disabled, but the requested query contained the field \"%s\"."):format(v6.name.value), v6));
                end;
            end
        };
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Parent.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Error_0 = v2.Error;
local l_devAssert_0 = require(l_Parent_1.jsutils.devAssert).devAssert;
local l_GraphQLError_0 = require(l_Parent_1.error.GraphQLError).GraphQLError;
local _ = require(l_Parent_1.language.ast);
local _ = require(l_Parent_1.type.schema);
local v9 = require(l_Parent_1.language.visitor);
local l_visit_0 = v9.visit;
local l_visitInParallel_0 = v9.visitInParallel;
local l_assertValidSchema_0 = require(l_Parent_1.type.validate).assertValidSchema;
local v13 = require(l_Parent_1.utilities.TypeInfo);
local l_TypeInfo_0 = v13.TypeInfo;
local l_visitWithTypeInfo_0 = v13.visitWithTypeInfo;
local v16 = require(l_Parent_0.specifiedRules);
local l_specifiedRules_0 = v16.specifiedRules;
local l_specifiedSDLRules_0 = v16.specifiedSDLRules;
local v19 = require(l_Parent_0.ValidationContext);
local l_SDLValidationContext_0 = v19.SDLValidationContext;
local l_ValidationContext_0 = v19.ValidationContext;
local v46 = {
    validate = function(v22, v23, v24, v25, v26)
        local v27 = v24 or l_specifiedRules_0;
        local v28 = v25 or {
            maxErrors = nil
        };
        local v29 = v26 or l_TypeInfo_0.new(v22);
        l_devAssert_0(v23, "Must provide document.");
        l_assertValidSchema_0(v22);
        local v30 = {};
        local v31 = {};
        local v33 = l_ValidationContext_0.new(v22, v23, v29, function(v32)
            if v28.maxErrors ~= nil and v28.maxErrors <= #v31 then
                table.insert(v31, l_GraphQLError_0.new("Too many validation errors, error limit reached. Validation aborted."));
                error(v30);
            end;
            table.insert(v31, v32);
        end);
        local v35 = l_visitInParallel_0(l_Array_0.map(v27, function(v34)
            return v34(v33);
        end));
        local l_status_0, l_result_0 = pcall(function()
            l_visit_0(v23, l_visitWithTypeInfo_0(v29, v35));
        end);
        if not l_status_0 and l_result_0 ~= v30 then
            error(l_result_0);
        end;
        return v31;
    end,
    validateSDL = function(v38, v39, v40)
        local v41 = v40 or l_specifiedSDLRules_0;
        local v42 = {};
        local v44 = l_SDLValidationContext_0.new(v38, v39, function(v43)
            table.insert(v42, v43);
        end);
        l_visit_0(v38, l_visitInParallel_0((l_Array_0.map(v41, function(v45)
            return v45(v44);
        end))));
        return v42;
    end
};
v46.assertValidSDL = function(v47)
    local v48 = v46.validateSDL(v47);
    if #v48 ~= 0 then
        error(l_Error_0.new(table.concat(l_Array_0.map(v48, function(v49)
            return v49.message;
        end), "\n\n")));
    end;
end;
v46.assertValidSDLExtension = function(v50, v51)
    local v52 = v46.validateSDL(v50, v51);
    if #v52 ~= 0 then
        error(l_Error_0.new(table.concat(l_Array_0.map(v52, function(v53)
            if typeof(v53) == "string" then
                return v53;
            else
                return v53.message;
            end;
        end), "\n\n")));
    end;
end;
return v46;


return {
    version = "15.5.0",
    versionInfo = require(script.Parent.Parent.LuauPolyfill).Object.freeze({
        major = 15,
        minor = 5,
        patch = 0,
        preReleaseTag = ""
    })
};


local l_Parent_0 = script.Parent.Parent;
local l_parse_0 = require(l_Parent_0.GraphQL).parse;
local v2 = require(l_Parent_0.LuauPolyfill);
local l_Map_0 = v2.Map;
local l_Set_0 = v2.Set;
local l_String_0 = v2.String;
local l_Object_0 = v2.Object;
local l_Array_0 = v2.Array;
local l_console_0 = v2.console;
local v9 = l_Map_0.new(nil);
local v10 = l_Map_0.new(nil);
local v11 = true;
local v12 = false;
local function v14(v13)
    return l_String_0.trim((v13:gsub(",+%s+", " ")));
end;
local function _(v15)
    return v14(v15.source.body:sub(v15.start, v15._end));
end;
local function v25(v17)
    local v18 = l_Set_0.new(nil);
    local v19 = {};
    for v20 = 1, #v17.definitions do
        local v21 = v17.definitions[v20];
        if v21.kind == "FragmentDefinition" then
            local l_value_0 = v21.name.value;
            local l_loc_0 = v21.loc;
            local v24 = l_String_0.trim((l_loc_0.source.body:sub(l_loc_0.start, l_loc_0._end):gsub(",+%s+", " ")));
            l_loc_0 = v10:get(l_value_0);
            if not l_loc_0 or l_loc_0:has(v24) then
                if not l_loc_0 then
                    l_loc_0 = l_Set_0.new();
                    v10:set(l_value_0, l_loc_0);
                end;
            elseif v11 then
                l_console_0.warn("Warning: fragment with name " .. l_value_0 .. " already exists.\n" .. "graphql-tag enforces all fragment names across your application to be unique; read more about\n" .. "this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names");
            end;
            l_loc_0:add(v24);
            if not v18:has(v24) then
                v18:add(v24);
                table.insert(v19, v21);
            end;
        else
            table.insert(v19, v21);
        end;
    end;
    return l_Object_0.assign({}, v17, {
        definitions = v19
    });
end;
local function v33(v26)
    local v27 = l_Set_0.new(nil);
    for v28 = 1, #v27 do
        local v29 = v27[v28];
        if v29.loc then
            v27:delete(v29.loc);
        end;
        for v30 = 1, #l_Object_0.keys(v29) do
            local v31 = v29[tostring(l_Object_0.keys(v29)[v30])];
            if not (not (v31 and typeof(v31) == "table") or l_Array_0.isArray(v31)) then
                v27:add(v31);
            end;
        end;
    end;
    local l_loc_1 = v26.loc;
    if l_loc_1 then
        l_loc_1.startToken = nil;
        l_loc_1.endToken = nil;
    end;
    return v26;
end;
local function v37(v34)
    local v35 = l_String_0.trim((v34:gsub(",+%s+", " ")));
    if not v9:has(v35) then
        local v36 = l_parse_0(v34, {
            experimentalFragmentVariables = v12
        });
        if not v36 or v36.kind ~= "Document" then
            error("Not a valid GraphQL document.");
        end;
        v9:set(v35, (v33(v25(v36))));
    end;
    return (v9:get(v35));
end;
local function v39(v38)
    if typeof(v38) == "string" then
        return (v37(v38));
    else
        error("graphql-tag-lua does not currently support non-strings or Fragments. Please file an issue or PR if you need this feature added.");
        return ;
    end;
end;
resetCaches = function()
    v9:clear();
    v10:clear();
end;
disableFragmentWarnings = function()
    v11 = false;
end;
enableExperimentalFragmentVariables = function()
    v12 = true;
end;
disableExperimentalFragmentVariables = function()
    v12 = false;
end;
local v40 = {
    gql = v39,
    resetCaches = resetCaches,
    disableFragmentWarnings = disableFragmentWarnings,
    enableExperimentalFragmentVariables = enableExperimentalFragmentVariables,
    disableExperimentalFragmentVariables = disableExperimentalFragmentVariables
};
return {
    default = v39,
    gql = v39,
    resetCaches = v40.resetCaches,
    disableFragmentWarnings = v40.disableFragmentWarnings,
    enableExperimentalFragmentVariables = v40.enableExperimentalFragmentVariables,
    disableExperimentalFragmentVariables = v40.disableExperimentalFragmentVariables
};


local v0 = {};
local v1 = 0;
v0.currentSession = function()
    return v1;
end;
v0.startNewSession = function()
    v1 = v1 + 1;
end;
return v0;


local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_HttpService_0 = game:GetService("HttpService");
local v2 = require(script.Parent.Parent.StatusCode);
local l_Extreme_0 = Enum.ThrottlingPriority.Extreme;
local l_ApplicationJson_0 = Enum.HttpContentType.ApplicationJson;
local function _(v5, v6)
    return pcall(function()
        return l_HttpRbxApiService_0:GetAsyncFullUrl(v5, v6.throttlingPriority or l_Extreme_0, v6.httpRequestType or nil);
    end);
end;
local function v11(v8, v9)
    local v10 = nil;
    assert(v9.postBody, "Expected a postBody to be specified with this request");
    if type(v9.postBody) == "table" then
        v10 = l_HttpService_0:JSONEncode(v9.postBody);
    elseif type(v9.postBody) == "string" then
        v10 = v9.postBody;
    else
        error("Expected postBody to be a string or table");
    end;
    return pcall(function()
        return l_HttpRbxApiService_0:PostAsyncFullUrl(v8, v10, v9.throttlingPriority or l_Extreme_0, v9.contentType or l_ApplicationJson_0, v9.httpRequestType or nil);
    end);
end;
local function v16(v12)
    local l_OK_0 = v2.OK;
    local l_status_0, _ = pcall(function()
        return l_HttpService_0:JSONDecode(v12);
    end);
    if not l_status_0 then
        l_OK_0 = tonumber(v12:sub(6, 8));
    end;
    return {
        Body = v12,
        StatusCode = l_OK_0,
        Headers = {}
    };
end;
return function(v17, v18, v19)
    return {
        Start = function(_, v21)
            local v22 = nil;
            local v23 = nil;
            if v18 == "GET" then
                local l_v17_0 = v17;
                local l_v19_0 = v19;
                local l_status_1, l_result_1 = pcall(function()
                    return l_HttpRbxApiService_0:GetAsyncFullUrl(l_v17_0, l_v19_0.throttlingPriority or l_Extreme_0, l_v19_0.httpRequestType or nil);
                end);
                local l_l_status_1_0 = l_status_1;
                local l_l_result_1_0 = l_result_1;
                v22 = l_l_status_1_0;
                v23 = l_l_result_1_0;
            elseif v18 == "POST" then
                local v30, v31 = v11(v17, v19);
                v22 = v30;
                v23 = v31;
            else
                error("Unsupported method: " .. v18);
            end;
            v21(v22, (v16(v23)));
        end,
        Cancel = function()
        end
    };
end;


local l_HttpService_0 = game:GetService("HttpService");
local v1 = require(script.Parent.Util.getHeaders);
local v2 = require(script.Parent.Util.getPostBody);
return function(v3, v4, v5)
    return {
        Start = function(_, v7)
            local l_status_0, l_result_0 = pcall(function()
                return l_HttpService_0:RequestAsync({
                    Url = v3,
                    Method = v4,
                    Body = v2(v5.postBody, v4),
                    Headers = v1(v5.headers, v4)
                });
            end);
            v7(l_status_0, l_result_0);
        end,
        Cancel = function()
        end
    };
end;


local l_HttpService_0 = game:GetService("HttpService");
local v1 = require(script.Parent.Util.getHeaders);
local v2 = require(script.Parent.Util.getPostBody);
return function(v3, v4, v5)
    return l_HttpService_0:RequestInternal({
        Url = v3,
        Method = v4,
        Body = v2(v5.postBody, v4),
        Timeout = v5.timeout or 15000,
        CachePolicy = v5.cachePolicy or Enum.HttpCachePolicy.None,
        Priority = v5.priority or 0,
        Headers = v1(v5.headers, v4),
        RequestType = v5.requestType or nil,
        AllowSandboxing = v5.allowSandboxing or nil
    });
end;


return function(v0, v1)
    local v2 = v0 or {};
    if not (not (not (v1 ~= "POST") or v1 == "PATCH") or v2["Content-Type"]) then
        v2["Content-Type"] = "application/json";
    end;
    return v2;
end;


local l_HttpService_0 = game:GetService("HttpService");
return function(v1, v2)
    if not (v2 ~= "POST") or v2 == "PATCH" then
        if type(v1) == "table" then
            return l_HttpService_0:JSONEncode(v1);
        elseif type(v1) == "string" then
            return v1;
        else
            error("Expected postBody to be a string or table");
        end;
    end;
    return nil;
end;


return {
    HttpRbxApi = require(script.HttpRbxApi),
    RequestAsync = require(script.RequestAsync),
    RequestInternal = require(script.RequestInternal),
    MockRequest = require(script.MockRequest)
};


return {
    UNKNOWN_ERROR = -1,
    OK = 200,
    BAD_REQUEST = 400,
    UNAUTHORIZED = 401,
    FORBIDDEN = 403,
    NOT_FOUND = 404,
    REQUEST_TIMEOUT = 408,
    TOO_MANY_REQUESTS = 429,
    INTERNAL_SERVER_ERROR = 500,
    NOT_IMPLEMENTED = 501,
    BAD_GATEWAY = 502,
    SERVICE_UNAVAILABLE = 503,
    GATEWAY_TIMEOUT = 504,
    VARIANT_ALSO_NEGOTIATES = 506,
    INSUFFICIENT_STORAGE = 507,
    LOOP_DETECTED = 508
};


local v0 = require(script:FindFirstAncestor("HttpRequest").Parent.Promise);
local v1 = require(script.Parent.HttpRequest);
return function(v2)
    assert(type(v2.requestFunction) == "function", "Expected requestFunction to be a function");
    return function(v3, v4, v5)
        assert(type(v3) == "string", "Expected url to be a string");
        assert(type(v4) == "string", "Expected requestMethod to be a string");
        assert(not v5 or type(v5) == "table", "Expected options to be a table");
        local v6 = v1.new(v2, v3, string.upper(v4), v5);
        return v0.new(function(v7, v8)
            coroutine.wrap(function()
                v6:start(v7, v8);
            end)();
        end), function()
            v6:cancel();
        end;
    end;
end;


return {
    config = require(script.httpRequestCreator),
    requestFunctions = require(script.RequestFunctions),
    startNewSession = require(script.HttpSession).startNewSession
};


local v0 = {
    [Enum.HttpContentType.ApplicationJson] = "application/json",
    [Enum.HttpContentType.ApplicationUrlEncoded] = "application/x-www-form-urlencoded",
    [Enum.HttpContentType.ApplicationXml] = "application/xml",
    [Enum.HttpContentType.TextPlain] = "text/plain",
    [Enum.HttpContentType.TextXml] = "text/xml"
};
return function(v1)
    local v2 = v0[v1];
    if v2 == nil then
        error(("HttpContentType `%s` not supported"):format((tostring(v1))));
    end;
    return v2;
end;


local l_script_0 = script;
local v1 = require(l_script_0.HttpServiceMock);
local _ = require(l_script_0.Types);
return v1;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_GuiService_0 = game:GetService("GuiService");
local v5 = require(l_Parent_2.Roact);
local v6 = require(l_Parent_2.RoactGamepad);
local v7 = require(l_Parent_2.UIBlox);
local l_withSelectionCursorProvider_0 = v7.App.SelectionImage.withSelectionCursorProvider;
local l_CursorKind_0 = v7.App.SelectionImage.CursorKind;
local l_Images_0 = v7.App.ImageSet.Images;
local l_ImageSetButton_0 = v7.Core.ImageSet.ImageSetButton;
local l_ImageSetLabel_0 = v7.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v7.Core.Style.withStyle;
local l_DarkTheme_0 = v7.App.Style.Themes.DarkTheme;
local v15 = require(l_Parent_2.RoactFitComponents);
local l_FitFrameHorizontal_0 = v15.FitFrameHorizontal;
local l_FitTextLabel_0 = v15.FitTextLabel;
local v18 = require(l_Parent_1.Locale.MultiTextLocalizer);
local v19 = require(l_Parent_1.Utility.formatNumber);
local v20 = require(l_Parent_1.Generic.Animator);
local v21 = require(l_Parent_1.Flags.getEnableCompensatingScrollingFrame);
local v22 = require(l_Parent_1.Utility.getUserInputEventData);
local v23 = require(l_Parent_0.RobuxPackage);
local v24 = v5.Component:extend(script.Name);
local v25 = l_Images_0["icons/common/goldrobux"];
local v26 = l_Images_0["icons/logo/block"];
local v27 = {
    l_Images_0["icons/graphic/robuxcoin1_xxlarge"],
    l_Images_0["icons/graphic/robuxcoin2_xxlarge"],
    l_Images_0["icons/graphic/robuxcoin3_xxlarge"],
    l_Images_0["icons/graphic/robuxcoin4_xxlarge"],
    l_Images_0["icons/graphic/robuxcoin5_xxlarge"],
    l_Images_0["icons/graphic/robuxcoin6_xxlarge"]
};
local v28 = l_Images_0["icons/navigation/close"];
local _ = {
    dampingRatio = 1,
    frequency = 1
};
v24.init = function(v30)
    v30.state = {
        selectedPackage = nil,
        showMessageBanner = false
    };
    v30.buttonRefs = v6.createRefCache();
    v30.scrollingFrameRef = v5.createRef();
    v30.getGamepadNextSelectionLeft = function(v31)
        return v31 > 1 and v30.buttonRefs[v31 - 1] or nil;
    end;
    v30.getGamepadNextSelectionRight = function(v32)
        return v32 < #v30.buttonRefs and v30.buttonRefs[v32 + 1] or nil;
    end;
    v30.initSelectionChangedListener = function()
        if v30.selectionListener ~= nil then
            v30.selectionListener:Disconnect();
            v30.selectionListener = nil;
        end;
        if v30.selectionListener ~= nil then
            v30.selectionListener:Disconnect();
            v30.selectionListener = nil;
        end;
        v30.selectionListener = l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):Connect(function()
            if not (v30.state.selectedPackage ~= nil and l_GuiService_0.SelectedCoreObject ~= nil) or v30.state.selectedPackage ~= l_GuiService_0.SelectedCoreObject then
                v30:setState({
                    selectedPackage = l_GuiService_0.SelectedCoreObject
                });
            end;
        end);
    end;
end;
v24.didMount = function(v33)
    v33.initSelectionChangedListener();
end;
v24.didUpdate = function(v34, v35, _)
    local l_props_0 = v34.props;
    if not (not (v35.hasNativePurchaseSucceeded ~= l_props_0.hasNativePurchaseSucceeded) or not l_props_0.hasNativePurchaseSucceeded) then
        v34:setState({
            showMessageBanner = true
        });
        task.delay(3, function()
            v34:setState({
                showMessageBanner = false
            });
        end);
    end;
end;
v24.willUnmount = function(v38)
    if v38.selectionListener ~= nil then
        v38.selectionListener:Disconnect();
        v38.selectionListener = nil;
    end;
end;
v24.getScale = function(v39)
    if not v39.props.isConsoleSize then
        return 0.65;
    else
        return 1;
    end;
end;
v24.render = function(v40)
    return v5.createElement(v18, {
        keys = {
            BannerText = {
                key = ("IAPExperience.BuyRobux.%s"):format("Banner.Text")
            },
            BannerTitle = {
                key = ("IAPExperience.BuyRobux.%s"):format("Banner.Title")
            },
            SuccessfulMessage = {
                key = ("IAPExperience.BuyRobux.%s"):format("Alert.SuccessfulMessage")
            }
        },
        render = function(v41)
            return l_withSelectionCursorProvider_0(function(v42)
                return v40:renderWithLocale(v41, v42);
            end);
        end
    });
end;
v24.movePackageToAttentionArea = function(v43, v44)
    if v21() then
        local l_current_0 = v43.scrollingFrameRef.current;
        if not (l_current_0 ~= nil) or v44 == nil then
            return ;
        else
            local l_X_0 = l_current_0.AbsoluteSize.X;
            local v47 = 48 * v43:getScale();
            local v48 = v44.AbsolutePosition.X - v47;
            if v48 < 0 then
                l_current_0.CanvasPosition = Vector2.new(v48, 0);
                v43:reportScrollingFrameCompensationHappened();
                return ;
            elseif l_X_0 < (v44.AbsolutePosition.X + v44.AbsoluteSize.X) + v47 then
                l_current_0.CanvasPosition = Vector2.new(v48, 0);
                v43:reportScrollingFrameCompensationHappened();
                return ;
            else
                return ;
            end;
        end;
    else
        return ;
    end;
end;
v24.reportScrollingFrameCompensationHappened = function(v49)
    local l_props_1 = v49.props;
    if l_props_1.onAnalyticEvent then
        l_props_1.onAnalyticEvent("UserPurchaseFlow", (v22(l_props_1.analyticId, "", "BuyRobux", "ScrollingFrame", "Compensated")));
        return ;
    else
        return ;
    end;
end;
v24.renderWithLocale = function(v51, v52, v53)
    local l_props_2 = v51.props;
    return l_withStyle_0(function(v55)
        local l_Theme_0 = v55.Theme;
        local l_Font_0 = v55.Font;
        local v58 = l_props_2.robuxPackages ~= nil;
        local v59 = not v58 and 6 or #l_props_2.robuxPackages;
        local v60 = 32 * v51:getScale();
        local v61 = {
            LeadingPadding = v5.createElement("Frame", {
                BorderSizePixel = 0,
                BackgroundTransparency = 1,
                LayoutOrder = 0,
                Size = UDim2.new(0, 80 * v51:getScale(), 0, 1)
            }),
            RobuxPackageChildren = v5.createElement("UIListLayout", {
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                FillDirection = Enum.FillDirection.Horizontal,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, 16 * v51:getScale())
            }),
            TrailingPadding = v5.createElement("Frame", {
                BorderSizePixel = 0,
                BackgroundTransparency = 1,
                LayoutOrder = v59 + 1,
                Size = UDim2.new(0, 80 * v51:getScale(), 0, 1)
            })
        };
        for v62 = 1, v59 do
            local v63 = v62 + 1;
            local l_createElement_0 = v5.createElement;
            local l_v23_0 = v23;
            local v66 = {
                layoutOrder = v62,
                scale = v51:getScale()
            };
            local v67 = false;
            if v51.state.selectedPackage ~= nil then
                v67 = v51.state.selectedPackage == v51.buttonRefs[v62]:getValue();
            end;
            v66.selected = v67;
            v66.packageId = if not v58 then tostring(v62) else l_props_2.robuxPackages[v62].packageId;
            v66.robuxAmount = if not v58 then nil else l_props_2.robuxPackages[v62].robuxAmount;
            v66.currencyAmountStr = if not v58 then nil else l_props_2.robuxPackages[v62].currencyAmountStr;
            v66.robuxMoreAmount = if not v58 then nil else l_props_2.robuxPackages[v62].robuxMoreAmount;
            v66.robuxImage = v27[v62];
            v66.forwardRef = v51.buttonRefs[v62];
            v66.nextSelectionLeft = v51.getGamepadNextSelectionLeft(v62);
            v66.nextSelectionRight = v51.getGamepadNextSelectionRight(v62);
            v66.onActivated = function(v68)
                l_props_2.robuxPackageActivated(v68);
            end;
            v66.onSelect = function(v69)
                v51:movePackageToAttentionArea(v69:getValue());
            end;
            v66.onHover = function(v70, v71)
                if not v71 then
                    v51:setState({
                        selectedPackage = ""
                    });
                elseif v51.state.selectedPackage ~= v70:getValue() then
                    v51:setState({
                        selectedPackage = v70:getValue()
                    });
                    return ;
                end;
            end;
            v61[v63] = l_createElement_0(l_v23_0, v66);
        end;
        return v5.createElement(v6.Focusable.Frame, {
            BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
            BackgroundTransparency = 0.8,
            Size = UDim2.new(1, 0, 1, 0)
        }, {
            BuyRobuxPageBackground = v5.createElement("Frame", {
                BackgroundTransparency = 0,
                Position = UDim2.new(0, 0, 0, 0),
                Size = UDim2.new(1, 0, 1, 0),
                Visible = v51.props.showBackground,
                ZIndex = 0
            }, {
                BackgroundImage = v5.createElement("ImageLabel", {
                    BackgroundTransparency = 1,
                    ImageTransparency = 0,
                    Image = l_Theme_0 == l_DarkTheme_0 and "rbxasset://textures/AvatarEditorImages/AvatarEditor.png" or "rbxasset://textures/AvatarEditorImages/AvatarEditor_LightTheme.png",
                    Size = UDim2.new(1, 0, 1, 0)
                }),
                Backdrop = v5.createElement("Frame", {
                    BackgroundTransparency = l_Theme_0 == l_DarkTheme_0 and 0.5 or 0.7,
                    BackgroundColor3 = Color3.new(0, 0, 0),
                    Size = UDim2.new(1, 0, 1, 0)
                })
            }),
            CloseButton = v5.createElement(l_ImageSetButton_0, {
                Position = UDim2.new(0, 48 * v51:getScale(), 0, 48 * v51:getScale()),
                AnchorPoint = Vector2.new(0, 0),
                Size = UDim2.new(0, 36, 0, 36),
                Image = v28,
                BackgroundColor3 = Color3.new(0, 0, 0),
                BackgroundTransparency = 0.7,
                BorderSizePixel = 0,
                SelectionImageObject = v53(l_CursorKind_0.RoundedRect),
                Visible = v51.props.showCloseButton,
                [v5.Event.Activated] = l_props_2.onPageClose
            }, {
                UICorner = v5.createElement("UICorner", {
                    CornerRadius = UDim.new(0, 16 * v51:getScale())
                })
            }),
            MessageBannerAnimator = v5.createElement(v20, {
                shouldAnimate = l_props_2.shouldAnimate,
                shouldShow = v51.state.showMessageBanner,
                animateDown = true,
                ZIndex = 10,
                renderChildren = function()
                    return v5.createElement("Frame", {
                        AnchorPoint = Vector2.new(0, 0),
                        BackgroundTransparency = 0,
                        BackgroundColor3 = if l_Theme_0 == l_DarkTheme_0 then Color3.fromRGB(17, 18, 20) else Color3.fromRGB(198, 203, 206),
                        Position = UDim2.fromOffset(48 * v51:getScale(), 40 * v51:getScale()),
                        Size = UDim2.new(1, -96 * v51:getScale(), 0, v60 * 2)
                    }, {
                        UICorner = v5.createElement("UICorner", {
                            CornerRadius = UDim.new(0, 16 * v51:getScale())
                        }),
                        Icon = v5.createElement(l_ImageSetLabel_0, {
                            AnchorPoint = Vector2.new(0, 0.5),
                            BackgroundTransparency = 1,
                            LayoutOrder = 1,
                            Image = v26,
                            ImageColor3 = l_Theme_0.TextEmphasis.Color,
                            ImageTransparency = 0,
                            Position = UDim2.fromOffset(24 * v51:getScale(), v60),
                            Size = UDim2.fromOffset(36 * v51:getScale(), 36 * v51:getScale())
                        }),
                        AlertMessage = v5.createElement(l_FitTextLabel_0, {
                            AnchorPoint = Vector2.new(0, 0.5),
                            Position = UDim2.fromOffset(80 * v51:getScale(), v60),
                            LayoutOrder = 2,
                            width = l_FitTextLabel_0.Width.FitToText,
                            Text = v52.SuccessfulMessage,
                            Font = l_Font_0.Header1.Font,
                            TextColor3 = l_Theme_0.TextEmphasis.Color,
                            TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                            TextSize = v60,
                            TextXAlignment = Enum.TextXAlignment.Left,
                            BackgroundTransparency = 1
                        })
                    });
                end
            }),
            RobuxBalanceFrame = v5.createElement(l_FitFrameHorizontal_0, {
                Position = UDim2.new(1, -96 * v51:getScale(), 0, 48 * v51:getScale()),
                AnchorPoint = Vector2.new(1, 0),
                height = UDim.new(0, v60),
                contentPadding = UDim.new(0, 4),
                FillDirection = Enum.FillDirection.Horizontal,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                BackgroundTransparency = 1
            }, {
                Icon = v5.createElement(l_ImageSetLabel_0, {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    Size = UDim2.fromOffset(v60 + 15 * v51:getScale(), v60 + 15 * v51:getScale()),
                    Image = v25,
                    ImageTransparency = 0
                }),
                BalanceText = v5.createElement(l_FitTextLabel_0, {
                    LayoutOrder = 2,
                    width = l_FitTextLabel_0.Width.FitToText,
                    Text = not l_props_2.robuxBalance and "" or v19(l_LocalizationService_0.RobloxLocaleId, l_props_2.robuxBalance),
                    Font = l_Font_0.Header1.Font,
                    TextColor3 = if not l_props_2.showBackground then l_Theme_0.TextEmphasis.Color else Color3.new(255, 255, 255),
                    TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                    TextSize = v60,
                    BackgroundTransparency = 1
                })
            }),
            BannerFrame = v5.createElement("Frame", {
                Position = UDim2.new(0, 96 * v51:getScale(), 0, 146 * v51:getScale()),
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1
            }, {
                v5.createElement("UIListLayout", {
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    FillDirection = Enum.FillDirection.Vertical,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, 36 * v51:getScale())
                });
                BannerTitle = v5.createElement("TextLabel", {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    Font = l_Font_0.Title.Font,
                    Text = v52.BannerTitle,
                    TextSize = 46 * v51:getScale(),
                    TextColor3 = if not l_props_2.showBackground then l_Theme_0.TextEmphasis.Color else Color3.new(255, 255, 255)
                }),
                BannerText = v5.createElement("TextLabel", {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    Font = l_Font_0.Header1.Font,
                    Text = v52.BannerText,
                    TextSize = 38 * v51:getScale(),
                    TextColor3 = if not l_props_2.showBackground then l_Theme_0.TextEmphasis.Color else Color3.new(255, 255, 255)
                })
            }),
            RobuxPackageTilesFrame = v5.createElement("ScrollingFrame", {
                Position = UDim2.new(0, 0, 0, 310 * v51:getScale()),
                Size = UDim2.new(1, 0, 0, 615 * v51:getScale()),
                AutomaticSize = Enum.AutomaticSize.None,
                CanvasSize = UDim2.new(0, 0, 0, 0),
                AutomaticCanvasSize = Enum.AutomaticSize.X,
                ScrollingEnabled = v58,
                ScrollingDirection = Enum.ScrollingDirection.X,
                ScrollBarImageTransparency = 1,
                ScrollBarThickness = 0,
                Selectable = false,
                BackgroundTransparency = 1,
                [v5.Ref] = v51.scrollingFrameRef
            }, v61)
        });
    end);
end;
return v24;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v3 = require(l_Parent_1.Roact);
local v4 = require(l_Parent_1.UIBlox);
local l_withSelectionCursorProvider_0 = v4.App.SelectionImage.withSelectionCursorProvider;
local l_ShimmerPanel_0 = v4.App.Loading.ShimmerPanel;
local l_CursorKind_0 = v4.App.SelectionImage.CursorKind;
local l_Images_0 = v4.App.ImageSet.Images;
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v4.Core.Style.withStyle;
local l_DarkTheme_0 = v4.App.Style.Themes.DarkTheme;
local l_ImageSetButton_0 = v4.Core.ImageSet.ImageSetButton;
local l_useCursor_0 = v4.App.SelectionCursor.useCursor;
local v14 = require(l_Parent_1.RoactGamepad);
local v15 = require(l_Parent_1.RoactFitComponents);
local l_FitFrameHorizontal_0 = v15.FitFrameHorizontal;
local l_FitTextLabel_0 = v15.FitTextLabel;
local v18 = require(l_Parent_0.Locale.MultiTextLocalizer);
local v19 = require(l_Parent_0.Utility.formatNumber);
local v20 = require(l_Parent_0.Flags.getEnableRobuxPageNewSelectionCursor);
local _ = v3.Component:extend(script.Name);
local v22 = l_Images_0["icons/common/robux"];
local function v32(v23, v24, v25, v26, v27)
    if v23.robuxAmount == nil then
        return v3.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 404 * v23.scale, 0, 448 * v23.scale)
        }, {
            ShimmerPanel = v3.createElement(l_ShimmerPanel_0, {
                Size = UDim2.new(1, 0, 1, 0)
            })
        });
    else
        local l_Theme_0 = v25.Theme;
        local l_Font_0 = v25.Font;
        local v30 = 64 * v23.scale;
        local v31 = if l_Theme_0 == l_DarkTheme_0 then Color3.fromRGB(25, 27, 29) else Color3.fromRGB(242, 244, 245);
        if v23.selected then
            v31 = if l_Theme_0 == l_DarkTheme_0 then Color3.fromRGB(57, 59, 61) else Color3.fromRGB(255, 255, 255);
        end;
        return v3.createElement(v14.Focusable[l_ImageSetButton_0], {
            LayoutOrder = v23.layoutOrder,
            BackgroundColor3 = l_Theme_0.UIEmphasis.Color,
            BackgroundTransparency = l_Theme_0.UIEmphasis.Transparency,
            Size = UDim2.new(0, 404 * v23.scale, 0, 448 * v23.scale),
            Image = nil,
            SelectionImageObject = if not v20() then v26(l_CursorKind_0.RoundedRect) else v27,
            [v3.Ref] = v23.forwardRef,
            NextSelectionUp = nil,
            NextSelectionDown = nil,
            NextSelectionLeft = v23.nextSelectionLeft,
            NextSelectionRight = v23.nextSelectionRight,
            inputBindings = {
                Activated = if v23.onActivated ~= nil then v14.Input.onBegin(Enum.KeyCode.ButtonA, function()
                    v23.onActivated(v23.packageId);
                end) else nil
            },
            [v3.Event.Activated] = function()
                v23.onActivated(v23.packageId);
            end,
            [v3.Event.MouseMoved] = function()
                v23.onHover(v23.forwardRef, true);
            end,
            [v3.Event.MouseEnter] = function()
                v23.onHover(v23.forwardRef, true);
            end,
            [v3.Event.MouseLeave] = function()
                v23.onHover(v23.forwardRef, false);
            end,
            [v3.Event.SelectionGained] = function()
                v23.onSelect(v23.forwardRef);
            end
        }, {
            Corner = v3.createElement("UICorner", {
                CornerRadius = UDim.new(0, 8)
            }),
            Outline = v3.createElement("Frame", {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.fromScale(0.5, 0.5),
                BackgroundColor3 = v31,
                BackgroundTransparency = 0,
                BorderSizePixel = 0,
                Size = UDim2.new(1, -3, 1, -3)
            }, {
                Corner = v3.createElement("UICorner", {
                    CornerRadius = UDim.new(0, 8)
                }),
                MiddleContent = v3.createElement("Frame", {
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 1, 0)
                }, {
                    Padding = v3.createElement("UIPadding", {
                        PaddingTop = UDim.new(0, 24 * v23.scale)
                    }),
                    v3.createElement("UIListLayout", {
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        FillDirection = Enum.FillDirection.Vertical,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        Padding = UDim.new(0, 17.5 * v23.scale)
                    }),
                    RobuxImageFrame = v3.createElement("Frame", {
                        LayoutOrder = 1,
                        Size = UDim2.fromOffset(192 * v23.scale, 192 * v23.scale),
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        BackgroundTransparency = 1
                    }, {
                        RobuxImage = v3.createElement(l_ImageSetLabel_0, {
                            Size = if not v23.selected then UDim2.fromOffset(192 * v23.scale, 192 * v23.scale) else UDim2.fromOffset((192 * v23.scale) * 1.6, (192 * v23.scale) * 1.6),
                            Position = if not v23.selected then UDim2.new(0.5, 0, 0.5, 0) else UDim2.new(0.5, 0, 0.3, 0),
                            AnchorPoint = Vector2.new(0.5, 0.5),
                            BackgroundTransparency = 1,
                            Image = v23.robuxImage,
                            ImageTransparency = 0
                        })
                    }),
                    RobuxAmount = v3.createElement(l_FitFrameHorizontal_0, {
                        LayoutOrder = 2,
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        height = UDim.new(0, v30),
                        contentPadding = UDim.new(0, 0),
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        BackgroundTransparency = 1
                    }, {
                        Icon = v3.createElement(l_ImageSetLabel_0, {
                            LayoutOrder = 1,
                            BackgroundTransparency = 1,
                            Size = UDim2.new(0, v30, 0, v30),
                            Image = v22,
                            ImageColor3 = l_Theme_0.TextEmphasis.Color,
                            ImageTransparency = l_Theme_0.TextEmphasis.Transparency
                        }),
                        RobuxAmountText = v3.createElement(l_FitTextLabel_0, {
                            LayoutOrder = 2,
                            width = l_FitTextLabel_0.Width.FitToText,
                            Text = v19(l_LocalizationService_0.RobloxLocaleId, v23.robuxAmount),
                            Font = l_Font_0.Title.Font,
                            TextColor3 = l_Theme_0.TextEmphasis.Color,
                            TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                            TextSize = v30,
                            BackgroundTransparency = 1
                        })
                    }),
                    CurrencyAmmountText = v3.createElement(l_FitTextLabel_0, {
                        LayoutOrder = 3,
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        width = l_FitTextLabel_0.Width.FitToText,
                        Text = v23.currencyAmountStr,
                        Font = l_Font_0.Header1.Font,
                        TextColor3 = l_Theme_0.TextEmphasis.Color,
                        TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                        TextSize = 32 * v23.scale,
                        BackgroundTransparency = 1
                    }),
                    MoreText = not not v23.robuxMoreAmount and v3.createElement(l_FitTextLabel_0, {
                        LayoutOrder = 4,
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        width = l_FitTextLabel_0.Width.FitToText,
                        Text = v24.moreRobux,
                        Font = l_Font_0.Header2.Font,
                        TextColor3 = l_Theme_0.TextEmphasis.Color,
                        TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                        TextSize = 32 * v23.scale,
                        BackgroundTransparency = 1
                    }, {
                        Gradient = v3.createElement("UIGradient", {
                            Rotation = 0,
                            Color = ColorSequence.new({
                                ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 251, 103)),
                                ColorSequenceKeypoint.new(1, Color3.fromRGB(243, 185, 34))
                            })
                        })
                    }) or nil
                })
            })
        });
    end;
end;
return function(v33)
    local v34 = if not v20() then nil else l_useCursor_0(UDim.new(0, 8));
    return v3.createElement(v18, {
        keys = {
            moreRobux = {
                key = ("IAPExperience.BuyRobux.%s"):format("Text.MoreRobux2"),
                params = {
                    robux = v19(l_LocalizationService_0.RobloxLocaleId, v33.robuxMoreAmount or 0)
                }
            }
        },
        render = function(v35)
            return l_withStyle_0(function(v36)
                return l_withSelectionCursorProvider_0(function(v37)
                    if v33.scale == nil then
                        v33.scale = 0.65;
                    end;
                    return v32(v33, v35, v36, v37, v34);
                end);
            end);
        end
    });
end;


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


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


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


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


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


return function()
    return game:GetEngineFeature("EnableSubscriptionPurchaseInstrumentation");
end;


local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_0.Locale.LocaleProvider);
local v4 = require(l_Parent_1.Roact);
local v5 = require(l_Parent_1.Otter);
local v6 = v4.Component:extend(script.Name);
local v7 = {
    dampingRatio = 1,
    frequency = 1.6
};
v6.init = function(v8)
    v8.state = {
        shouldRenderChildren = v8.props.shouldShow
    };
    local v9, v10 = v4.createBinding(1);
    v8.motor = v5.createSingleMotor(1);
    v8.motor:start();
    v8.motor:onStep(v10);
    v8.animationProgress = v9;
    v8.motor:onComplete(function()
        local l_props_0 = v8.props;
        if not l_props_0.shouldShow then
            v8:setState({
                shouldRenderChildren = false
            });
            if l_props_0.onHidden ~= nil then
                l_props_0.onHidden();
            end;
        elseif l_props_0.onShown ~= nil then
            l_props_0.onShown();
            return ;
        end;
    end);
    v8.motor:setGoal(v5.spring(not v8.props.shouldShow and 1 or 0, v7));
end;
v6.didUpdate = function(v12, v13, _)
    local l_props_1 = v12.props;
    if v13.shouldShow ~= l_props_1.shouldShow then
        if l_props_1.shouldShow then
            v12:setState({
                shouldRenderChildren = l_props_1.shouldShow
            });
        end;
        v12.motor:setGoal(v5.spring(not l_props_1.shouldShow and 1 or 0, v7));
    end;
end;
v6.willUnmount = function(v16)
    v16.motor:destroy();
end;
v6.renderWithoutLocale = function(v17)
    local l_props_2 = v17.props;
    if not l_props_2.shouldAnimate then
        if not l_props_2.shouldShow then
            return nil;
        else
            return l_props_2.renderChildren();
        end;
    else
        return v4.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            Position = v17.animationProgress:map(function(v19)
                if not l_props_2.animateDown then
                    return UDim2.new(0, 0, 1 * v19, 0);
                else
                    return UDim2.new(0, 0, -1 * v19, 0);
                end;
            end),
            ZIndex = l_props_2.ZIndex
        }, not not v17.state.shouldRenderChildren and l_props_2.renderChildren() or nil);
    end;
end;
v6.render = function(v20)
    return v4.createElement(v3, {
        locale = l_LocalizationService_0 and l_LocalizationService_0.RobloxLocaleId
    }, {
        v20:renderWithoutLocale()
    });
end;
return v6;


return {
    NORMAL_ICON_SIZE = 85,
    CONDENSED_ICON_SIZE = 65,
    MODAL_HEIGHT_WITHOUT_CONTENT = 120,
    MODAL_NORMAL_SECTION_PADDING = 24,
    MODAL_NORMAL_CONTENT_PADDING = 15,
    MODAL_CONDENSED_CONTENT_PADDING = 8,
    MODAL_NORMAL_BUTTON_MARGIN = 12,
    MODAL_CONDENSED_BUTTON_MARGIN = 8,
    MODAL_NORMAL_BUTTON_HEIGHT = 36,
    CENTRAL_OVERLAY_TYPE_ANIMATOR = "IapExperienceAnimator",
    CLOSE_MODAL_ACTION = "IapCloseModal"
};


local l_RunService_0 = game:GetService("RunService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.React);
local l_CharacterUtility_0 = require(l_Parent_0.Thumbnailing).CharacterUtility;
local l_CameraUtility_0 = require(l_Parent_0.Thumbnailing).CameraUtility;
local l_CFrameUtility_0 = require(l_Parent_0.Thumbnailing).CFrameUtility;
local l_EmoteUtility_0 = require(l_Parent_0.Thumbnailing).EmoteUtility;
return function(v7)
    local v8 = v2.useRef(nil);
    local v9, v10 = v2.useBinding(nil);
    local v11 = v2.useRef(false);
    v2.useEffect(function()
        v11.current = true;
        return function()
            v11.current = false;
        end;
    end, {});
    v2.useEffect(function()
        task.spawn(function()
            local v12 = v7.model:Clone();
            assert(v12.PrimaryPart, "The Model should have a PrimaryPart for setting up Camera");
            v12.Parent = v8.current;
            v12:MoveTo((Vector3.new(0, 0, 0)));
            l_EmoteUtility_0.SetPlayerCharacterPoseWithMoodFallback(v12);
            l_RunService_0.PostSimulation:Wait();
            if v11.current then
                local l_Camera_0 = Instance.new("Camera");
                l_Camera_0.CameraType = Enum.CameraType.Scriptable;
                l_Camera_0.Parent = v8.current;
                local v14 = nil;
                local v15 = l_CFrameUtility_0.CalculateTargetCFrame(v12.Head.CFrame);
                v14 = (v15 - v15.Position) + v12.PrimaryPart.CFrame.Position;
                local v16, v17 = l_CharacterUtility_0.CalculateModelExtents(v12, v14);
                l_CameraUtility_0.SetupCamera(l_Camera_0, {
                    optFieldOfView = 30,
                    targetCFrame = v14,
                    minExtent = v16,
                    maxExtent = v17,
                    extentScale = 1,
                    optCameraXRot = l_CameraUtility_0.XRotForFullBody,
                    optCameraDistanceScale = l_CameraUtility_0.DistanceScaleForFullBody,
                    extentScale = l_CameraUtility_0.DefaultBodyMarginScale
                });
                v10(l_Camera_0);
                return ;
            else
                return ;
            end;
        end);
    end, {});
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = v7.Size,
        Position = v7.Position,
        LayoutOrder = v7.LayoutOrder
    }, {
        ViewportFrame = v2.createElement("ViewportFrame", {
            BackgroundTransparency = 1,
            Size = UDim2.fromScale(1, 1),
            Position = UDim2.fromScale(0.5, 0.5),
            AnchorPoint = Vector2.new(0.5, 0.5),
            LightColor = Color3.fromRGB(240, 240, 240),
            Ambient = Color3.fromRGB(160, 160, 160),
            LightDirection = Vector3.new(9.5, -12, 7.5),
            CurrentCamera = v9
        }, {
            WorldModel = v2.createElement("WorldModel", {
                ref = v8
            })
        })
    });
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.RoactFitComponents);
local l_FitFrameVertical_0 = v3.FitFrameVertical;
local l_FitFrameHorizontal_0 = v3.FitFrameHorizontal;
local l_FitTextLabel_0 = v3.FitTextLabel;
local v7 = require(l_Parent_1.UIBlox);
local l_InteractiveAlert_0 = v7.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v7.App.Button.Enum.ButtonType;
local l_Images_0 = v7.App.ImageSet.Images;
local l_ImageSetLabel_0 = v7.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v7.Core.Style.withStyle;
local v13 = require(l_Parent_0.Locale.MultiTextLocalizer);
local v14 = l_Images_0["icons/common/robux"];
local v15 = v2.Component:extend(script.Name);
v15.defaultProps = {
    anchorPoint = Vector2.new(0.5, 0.5),
    position = UDim2.new(0.5, 0, 0.5, 0)
};
v15.render = function(v16)
    return v2.createElement(v13, {
        keys = {
            title = {
                key = ("IAPExperience.InsufficientRobux.%s"):format("Title.InsufficientRobux")
            },
            dontHaveEnough = {
                key = ("IAPExperience.InsufficientRobux.%s"):format("Text.DontHaveEnough")
            },
            currentBalance = {
                key = ("IAPExperience.InsufficientRobux.%s"):format("Text.CurrentBalance")
            },
            cancel = {
                key = ("IAPExperience.InsufficientRobux.%s"):format("Action.Cancel")
            },
            buyRobux = {
                key = ("IAPExperience.InsufficientRobux.%s"):format("Action.BuyRobux")
            }
        },
        render = function(v17)
            return v16:renderAlert(v17);
        end
    });
end;
v15.renderAlert = function(v18, v19)
    local _ = v18.props;
    return l_withStyle_0(function(v21)
        local l_Font_0 = v21.Font;
        local l_Theme_0 = v21.Theme;
        local v24 = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize;
        return v2.createElement(l_InteractiveAlert_0, {
            screenSize = v18.props.screenSize,
            title = v19.title,
            bodyText = v19.dontHaveEnough,
            buttonStackInfo = {
                buttons = {
                    {
                        props = {
                            onActivated = v18.props.closePrompt,
                            text = v19.cancel
                        },
                        isDefaultChild = true
                    },
                    {
                        buttonType = l_ButtonType_0.PrimarySystem,
                        props = {
                            onActivated = v18.props.buyRobux,
                            text = v19.buyRobux
                        }
                    }
                }
            },
            middleContent = function()
                return v2.createElement(l_FitFrameVertical_0, {
                    BackgroundTransparency = 1,
                    margin = v3.Rect.quad(10, 0, 10, 0),
                    contentPadding = UDim.new(0, 30),
                    width = UDim.new(1, 0),
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Center
                }, {
                    CurrentBalanceLabel = v2.createElement(l_FitTextLabel_0, {
                        width = l_FitTextLabel_0.Width.FitToText,
                        BackgroundTransparency = 1,
                        Font = l_Font_0.Body.Font,
                        Text = v19.currentBalance,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        TextTransparency = l_Theme_0.TextDefault.Transparency,
                        TextSize = v24,
                        LayoutOrder = 0
                    }),
                    RobuxAmount = v2.createElement(l_FitFrameHorizontal_0, {
                        height = UDim.new(1, 0),
                        contentPadding = UDim.new(0, 10),
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        BackgroundTransparency = 1,
                        LayoutOrder = 1
                    }, {
                        Icon = v2.createElement(l_ImageSetLabel_0, {
                            LayoutOrder = 1,
                            BackgroundTransparency = 1,
                            Size = UDim2.fromOffset(v24, v24),
                            Image = v14,
                            ImageColor3 = l_Theme_0.TextDefault.Color,
                            ImageTransparency = l_Theme_0.TextDefault.Transparency
                        }),
                        Text = v2.createElement(l_FitTextLabel_0, {
                            LayoutOrder = 2,
                            width = l_FitTextLabel_0.Width.FitToText,
                            Text = v18.props.robuxBalance,
                            Font = l_Font_0.Body.Font,
                            TextColor3 = l_Theme_0.TextDefault.Color,
                            TextTransparency = l_Theme_0.TextDefault.Transparency,
                            TextSize = v24,
                            BackgroundTransparency = 1
                        })
                    })
                });
            end
        });
    end);
end;
return v15;


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_InteractiveAlert_0 = v3.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local v6 = require(l_Parent_0.Locale.MultiTextLocalizer);
local v7 = v2.Component:extend(script.Name);
v7.defaultProps = {
    anchorPoint = Vector2.new(0.5, 0.5),
    position = UDim2.new(0.5, 0, 0.5, 0)
};
v7.render = function(v8)
    return v2.createElement(v6, {
        keys = {
            TitleText = {
                key = ("IAPExperience.LeaveRoblox.%s"):format("Title.LeavingRoblox")
            },
            BodyText = {
                key = ("IAPExperience.LeaveRoblox.%s"):format("Text.ExternalWebsiteWarning")
            },
            ButtonCancel = {
                key = ("IAPExperience.LeaveRoblox.%s"):format("Action.Cancel")
            },
            ButtonContinue = {
                key = ("IAPExperience.LeaveRoblox.%s"):format("Action.Continue")
            }
        },
        render = function(v9)
            return v8:renderAlert(v9);
        end
    });
end;
v7.renderAlert = function(v10, v11)
    return (v2.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = Color3.fromRGB(0, 0, 0),
        BackgroundTransparency = 1,
        Active = true,
        Selectable = false
    }, {
        AlertWindow = v2.createElement(l_InteractiveAlert_0, {
            title = v11.TitleText,
            bodyText = v11.BodyText,
            buttonStackInfo = {
                buttons = {
                    {
                        buttonType = l_ButtonType_0.Secondary,
                        props = {
                            onActivated = v10.props.cancelActivated,
                            text = v11.ButtonCancel
                        }
                    },
                    {
                        buttonType = l_ButtonType_0.PrimarySystem,
                        props = {
                            onActivated = v10.props.continueActivated,
                            text = v11.ButtonContinue
                        }
                    }
                }
            },
            screenSize = v10.props.screenSize
        })
    }));
end;
return v7;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.Otter);
local v5 = require(l_Parent_2.UIBlox);
local l_LoadingSpinner_0 = v5.App.Loading.LoadingSpinner;
local l_withStyle_0 = v5.Core.Style.withStyle;
local v8 = require(l_Parent_1.Locale.MultiTextLocalizer);
local v9 = require(l_Parent_0.LoadingOverlayState);
local v10 = v3.Component:extend(script.Name);
local v11 = {
    dampingRatio = 1,
    frequency = 1
};
v10.init = function(v12)
    local v13, v14 = v3.createBinding(0);
    v12.motor = v4.createSingleMotor(0);
    v12.motor:start();
    v12.motor:onStep(v14);
    v12.animationProgress = v13;
    v12.motor:setGoal(v4.spring(v12.props.loadingState ~= nil and 1 or 0, v11));
end;
v10.getLoadingMessage = function(_, v16, v17)
    if v17 == v9.PurchasingItem then
        return v16.PurchasingItem;
    elseif v17 == v9.PurchasingRobux then
        return v16.PurchasingRobux;
    elseif v17 == v9.WaitingForPurchase then
        return v16.WaitingForPurchase;
    elseif v17 == v9.WaitingForRobux then
        return v16.WaitingForRobux;
    else
        return ;
    end;
end;
v10.didUpdate = function(v18, v19, _)
    local l_props_0 = v18.props;
    if v19.loadingState ~= l_props_0.loadingState then
        v18.motor:setGoal(v4.spring(l_props_0.loadingState ~= nil and 1 or 0, v11));
    end;
end;
v10.willUnmount = function(v22)
    v22.motor:destroy();
end;
v10.render = function(v23)
    return v3.createElement(v8, {
        keys = {
            PurchasingItem = {
                key = ("IAPExperience.Loading.%s"):format("Text.PurchasingItem")
            },
            PurchasingRobux = {
                key = ("IAPExperience.Loading.%s"):format("Text.PurchasingRobux")
            },
            WaitingForPurchase = {
                key = ("IAPExperience.Loading.%s"):format("Text.WaitingForPurchase")
            },
            WaitingForRobux = {
                key = ("IAPExperience.Loading.%s"):format("Text.WaitingForRobux")
            }
        },
        render = function(v24)
            return v23:renderAlert(v24);
        end
    });
end;
v10.renderAlert = function(v25, v26)
    local l_props_1 = v25.props;
    local v28 = false;
    if l_props_1.loadingState ~= v9.None then
        v28 = l_props_1.loadingState ~= nil;
    end;
    local v29 = v25:getLoadingMessage(v26, l_props_1.loadingState);
    return l_withStyle_0(function(v30)
        local l_Theme_0 = v30.Theme;
        local l_Font_0 = v30.Font;
        return v3.createElement("Frame", {
            BackgroundColor3 = l_Theme_0.BackgroundUIContrast.Color,
            BackgroundTransparency = v25.animationProgress:map(function(v33)
                if not l_props_1.showOverlay then
                    return 1;
                elseif not l_props_1.shouldAnimate then
                    return l_Theme_0.BackgroundUIContrast.Transparency;
                else
                    return 1 - (1 - l_Theme_0.BackgroundUIContrast.Transparency) * v33;
                end;
            end),
            Size = UDim2.new(1, 0, 1, 0),
            Visible = l_props_1.showOverlay
        }, {
            StopPropagationOverlay = v3.createElement("TextButton", {
                Active = false,
                BorderSizePixel = 0,
                BackgroundTransparency = 1,
                Selectable = false,
                Size = UDim2.new(1, 0, 1, 0),
                Text = "",
                ZIndex = 0
            }),
            MiddleContent = v3.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                BorderSizePixel = 0,
                BackgroundTransparency = 1,
                ZIndex = 1
            }, {
                Layout = v3.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, 20),
                    [v3.Change.AbsoluteContentSize] = v25.onListLayoutAbsoluteContentSizeChanged
                }),
                Spinner = not not v28 and v3.createElement(l_LoadingSpinner_0, {
                    size = UDim2.fromOffset(48, 48),
                    position = UDim2.fromScale(0.5, 0.5),
                    anchorPoint = Vector2.new(0.5, 0.5)
                }) or nil,
                PreText = not not v29 and v3.createElement("TextLabel", {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    AutomaticSize = Enum.AutomaticSize.XY,
                    TextWrapped = true,
                    Font = l_Font_0.Body.Font,
                    Text = v29,
                    TextSize = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize,
                    TextColor3 = l_Theme_0.TextDefault.Color,
                    TextTransparency = l_Theme_0.TextDefault.Transparency
                }) or nil
            }),
            Children = v3.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                BorderSizePixel = 0,
                BackgroundTransparency = 1
            }, v25.props[v3.Children])
        });
    end);
end;
return v10;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.Utility.addRawValueMethodToEnum);
local v3 = require(l_Parent_1.enumerate);
local v4 = {
    None = "None",
    Loading = "Loading",
    PurchasingItem = "PurchasingItem",
    PurchasingRobux = "PurchasingRobux",
    WaitingForPurchase = "WaitingForPurchase",
    WaitingForRobux = "WaitingForRobux"
};
local v5 = v3(script.Name, v4);
v2(v5, v4);
return v5;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.UIBlox);
local l_InteractiveAlert_0 = v4.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v4.App.Button.Enum.ButtonType;
local l_Images_0 = v4.App.ImageSet.Images;
local v8 = require(l_Parent_1.Locale.MultiTextLocalizer);
local v9 = require(l_Parent_0.PurchaseErrorType);
local v10 = require(l_Parent_0.PurchaseFlowType);
local v11 = v3.Component:extend(script.Name);
v11.defaultProps = {
    anchorPoint = Vector2.new(0.5, 0.5),
    position = UDim2.new(0.5, 0, 0.5, 0)
};
v11.getErrorTitle = function(_, v13, v14, v15)
    if v14 == v9.FailedRobuxPurchase then
        return v13.robuxFailedPurchaseTitle;
    elseif v14 == v9.AlreadySubscribed then
        return v13.alreadySubscribedTitle;
    elseif v15 == v10.Subscription then
        return v13.cantSubscribeTitle;
    else
        return v13.titleText;
    end;
end;
v11.getErrorMessage = function(_, v17, v18)
    if v18 == v9.AlreadyOwn then
        return v17.alreadyOwnText;
    elseif v18 == v9.FailedGrant then
        return v17.failedGrantText;
    elseif v18 == v9.FailedGrantUnknown then
        return v17.failedGrantUnknownText;
    elseif v18 == v9.Limited then
        return v17.limitedText;
    elseif v18 == v9.NotEnoughRobux then
        return v17.notEnoughRobuxText;
    elseif v18 == v9.NotForSale then
        return v17.notForSaleText;
    elseif v18 == v9.NotForSaleExperience then
        return v17.notForSaleExperienceText;
    elseif v18 == v9.PremiumOnly then
        return v17.premiumOnlyText;
    elseif v18 == v9.ThirdPartyDisabled then
        return v17.thirdPartyDisabledText;
    elseif v18 == v9.Under13 then
        return v17.under13Text;
    elseif v18 == v9.PremiumPlatformUnavailable then
        return v17.premiumPlatformUnavailable;
    elseif v18 == v9.AlreadyPremium then
        return v17.alreadyPremium;
    elseif v18 == v9.PurchaseLimit then
        return v17.purchaseLimitText;
    elseif v18 == v9.ParentalLimit then
        return v17.parentalLimitText;
    elseif v18 == v9.FailedRobuxPurchase then
        return v17.robuxFailedPurchaseText;
    elseif v18 == v9.AlreadySubscribed then
        return v17.alreadySubscribedText;
    elseif v18 == v9.SubscriptionNotForSale then
        return v17.subscriptionNotForSaleText;
    elseif v18 == v9.SubscriptionExceededUserSpendLimit then
        return v17.parentalRestrictionSubscriptionText;
    elseif v18 == v9.SubscriptionUnsupportedLocale then
        return v17.subscriptionUnsupportedLocaleText;
    elseif v18 == v9.RestrictedUser then
        return v17.restrictedUserText;
    elseif not (v18 ~= v9.SubscriptionPurchasePlatformNotSupported) or v18 == v9.SubscriptionInvalidSaleLocation then
        return v17.subscriptionUnsupportedPlatformText;
    elseif v18 == v9.VpcRequired then
        return v17.vpcRequiredText;
    elseif v18 == v9.ExceedParentalSpendLimit then
        return v17.exceedParentalSpendLimitText;
    else
        return v17.unknownText;
    end;
end;
getIsAlreadyOwnedError = function(v19)
    local v20 = true;
    if v19 ~= v9.AlreadyOwn then
        v20 = true;
        if v19 ~= v9.AlreadyPremium then
            v20 = v19 == v9.AlreadySubscribed;
        end;
    end;
    return v20;
end;
getErrorTitleIcon = function(v21)
    if not getIsAlreadyOwnedError(v21) then
        return l_Images_0["icons/status/error_large"];
    else
        return l_Images_0["icons/status/success_large"];
    end;
end;
v11.render = function(v22)
    return v3.createElement(v8, {
        keys = {
            titleText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Title.Error")
            },
            robuxFailedPurchaseTitle = {
                key = ("IAPExperience.PurchaseError.%s"):format("Title.RobuxPurchaseFailed")
            },
            robuxFailedPurchaseText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.FailedRobuxPurchase")
            },
            unknownText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.UnknownError")
            },
            okText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.Ok")
            },
            alreadyOwnText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.AlreadyOwn")
            },
            failedGrantText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.FailedGrant")
            },
            failedGrantUnknownText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.FailedGrantUnknown")
            },
            limitedText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.Limited")
            },
            notEnoughRobuxText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.NotEnoughRobux")
            },
            notForSaleText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.NotForSale")
            },
            notForSaleExperienceText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.NotForSaleExperience")
            },
            premiumOnlyText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.PremiumOnly")
            },
            thirdPartyDisabledText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.ThirdPartyDisabled")
            },
            under13Text = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.Under13")
            },
            premiumPlatformUnavailable = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.PremiumPlatformUnavailable")
            },
            alreadyPremium = {
                key = ("IAPExperience.PurchaseError.%s"):format("AlreadyPremium")
            },
            purchaseLimitText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.PurchaseLimit")
            },
            parentalLimitText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.ParentalLimit")
            },
            alreadySubscribedTitle = {
                key = ("IAPExperience.PurchaseError.%s"):format("Title.AlreadySubscribed")
            },
            cantSubscribeTitle = {
                key = ("IAPExperience.PurchaseError.%s"):format("Title.CantSubscribe")
            },
            alreadySubscribedText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.AlreadySubscribed")
            },
            subscriptionNotForSaleText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.SubscriptionNotForSale")
            },
            parentalRestrictionSubscriptionText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.ParentalRestrictionSubscription")
            },
            subscriptionUnsupportedLocaleText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.SubscriptionUnsupportedLocale")
            },
            restrictedUserText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.RestrictedUser")
            },
            subscriptionUnsupportedPlatformText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.SubscriptionUnsupportedPlatform")
            },
            vpcRequiredText = {
                key = ("IAPExperience.PurchaseError.%s"):format("Text.VpcRequired")
            },
            exceedParentalSpendLimitText = {
                key = ("Feature.Subscription.%s"):format("Message.MonthlySpendRestrictionsMonthlyLimitExceed")
            }
        },
        render = function(v23)
            return v22:renderAlert(v23);
        end
    });
end;
v11.renderAlert = function(v24, v25)
    local l_props_0 = v24.props;
    return v3.createElement(l_InteractiveAlert_0, {
        anchorPoint = l_props_0.anchorPoint,
        position = l_props_0.position,
        screenSize = l_props_0.screenSize,
        title = v24:getErrorTitle(v25, l_props_0.errorType, l_props_0.flowType),
        titleIcon = getErrorTitleIcon(l_props_0.errorType),
        bodyText = v24:getErrorMessage(v25, l_props_0.errorType),
        buttonStackInfo = {
            buttons = {
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = l_props_0.doneActivated,
                        text = v25.okText,
                        inputIcon = l_props_0.doneControllerIcon
                    }
                }
            }
        }
    });
end;
return v11;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.Utility.addRawValueMethodToEnum);
local v3 = require(l_Parent_1.enumerate);
local v4 = {
    None = "None",
    Unknown = "Unknown",
    AlreadyOwn = "AlreadyOwn",
    FailedGrant = "FailedGrant",
    FailedGrantUnknown = "FailedGrantUnknown",
    Limited = "Limited",
    NotEnoughRobux = "NotEnoughRobux",
    NotForSale = "NotForSale",
    NotForSaleExperience = "NotForSaleExperience",
    PremiumOnly = "PremiumOnly",
    ThirdPartyDisabled = "ThirdPartyDisabled",
    Under13 = "Under13",
    PremiumPlatformUnavailable = "PremiumPlatformUnavailable",
    AlreadyPremium = "AlreadyPremium",
    PurchaseLimit = "PurchaseLimit",
    ParentalLimit = "ParentalLimit",
    AlreadySubscribed = "AlreadySubscribed",
    SubscriptionNotForSale = "SubscriptionNotForSale",
    SubscriptionExceededUserSpendLimit = "SubscriptionExceededUserSpendLimit",
    SubscriptionUnsupportedLocale = "SubscriptionUnsupportedLocale",
    RestrictedUser = "RestrictedUser",
    SubscriptionPurchasePlatformNotSupported = "SubscriptionPurchasePlatformNotSupported",
    SubscriptionInvalidSaleLocation = "SubscriptionInvalidSaleLocation",
    VpcRequired = "VpcRequired",
    FailedRobuxPurchase = "FailedRobuxPurchase",
    ExceedParentalSpendLimit = "ExceedParentalSpendLimit"
};
local v5 = v3(script.Name, v4);
v2(v5, v4);
return v5;


return (require(script.Parent.Parent.Parent.enumerate)(script.Name, {
    Subscription = "Subscription"
}));


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_InteractiveAlert_0 = v3.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local l_Images_0 = v3.App.ImageSet.Images;
local v7 = require(l_Parent_0.Locale.MultiTextLocalizer);
local v8 = v2.Component:extend(script.Name);
v8.defaultProps = {
    anchorPoint = Vector2.new(0.5, 0.5),
    position = UDim2.new(0.5, 0, 0.5, 0)
};
v8.render = function(v9)
    return v2.createElement(v7, {
        keys = {
            title = {
                key = ("Authentication.TwoStepVerification.%s"):format("Title.VerificationRequired")
            },
            message = {
                key = ("Authentication.TwoStepVerification.%s"):format("Label.TwoStepRequired")
            },
            cancel = {
                key = ("Authentication.TwoStepVerification.%s"):format("Action.Cancel")
            },
            backToGame = {
                key = "IAPExperience.PurchaseSuccess.Action.BackToGame"
            },
            gotoSecurity = {
                key = ("Authentication.TwoStepVerification.%s"):format("Action.GoToSecurity")
            }
        },
        render = function(v10)
            return v9:renderAlert(v10);
        end
    });
end;
v8.renderAlert = function(v11, v12)
    local l_props_0 = v11.props;
    local _ = nil;
    return v2.createElement(l_InteractiveAlert_0, {
        anchorPoint = l_props_0.anchorPoint,
        position = l_props_0.position,
        screenSize = l_props_0.screenSize,
        title = v12.title,
        titleIcon = l_Images_0["icons/status/error_large"],
        bodyText = v12.message,
        buttonStackInfo = if not l_props_0.openSecuritySettings then {
            buttons = {
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = l_props_0.closePrompt,
                        text = v12.backToGame,
                        inputIcon = l_props_0.doneControllerIcon
                    }
                }
            }
        } else {
            buttons = {
                {
                    props = {
                        onActivated = l_props_0.closePrompt,
                        text = v12.cancel,
                        inputIcon = l_props_0.cancelControllerIcon
                    }
                },
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = l_props_0.openSecuritySettings,
                        text = v12.gotoSecurity,
                        inputIcon = l_props_0.doneControllerIcon
                    }
                }
            }
        }
    });
end;
return v8;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.UIBlox);
local l_InteractiveAlert_0 = v4.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v4.App.Button.Enum.ButtonType;
local v7 = require(l_Parent_1.Locale.MultiTextLocalizer);
local v8 = require(l_Parent_0.U13ConfirmType);
local v9 = v3.Component:extend(script.Name);
v9.defaultProps = {
    anchorPoint = Vector2.new(0.5, 0.5),
    position = UDim2.new(0.5, 0, 0.5, 0)
};
v9.getMessage = function(_, v11, v12)
    if v12 == v8.U13PaymentModal then
        return v11.u13PaymentModal;
    elseif v12 == v8.U13MonthlyThreshold1Modal then
        return v11.u13MonthlyThreshold1Modal;
    elseif v12 == v8.U13MonthlyThreshold2Modal then
        return v11.u13MonthlyThreshold2Modal;
    elseif v12 == v8.ParentalConsentWarningPaymentModal13To17 then
        return v11.parentalConsentWarningPaymentModal13To17;
    else
        return ;
    end;
end;
v9.render = function(v13)
    return v3.createElement(v7, {
        keys = {
            title = {
                key = ("IAPExperience.U13Confirm.%s"):format("Title.Warning")
            },
            u13PaymentModal = {
                key = ("IAPExperience.U13Confirm.%s"):format("Text.U13PaymentModal")
            },
            u13MonthlyThreshold1Modal = {
                key = ("IAPExperience.U13Confirm.%s"):format("Text.U13MonthlyThreshold1Modal")
            },
            u13MonthlyThreshold2Modal = {
                key = ("IAPExperience.U13Confirm.%s"):format("Text.U13MonthlyThreshold2Modal")
            },
            parentalConsentWarningPaymentModal13To17 = {
                key = ("IAPExperience.U13Confirm.%s"):format("Text.ParentalConsentWarningPaymentModal13To17")
            },
            confirm = {
                key = ("IAPExperience.U13Confirm.%s"):format("Action.Confirm")
            },
            cancel = {
                key = ("IAPExperience.U13Confirm.%s"):format("Action.Cancel")
            }
        },
        render = function(v14)
            return v13:renderAlert(v14);
        end
    });
end;
v9.renderAlert = function(v15, v16)
    local l_props_0 = v15.props;
    return v3.createElement(l_InteractiveAlert_0, {
        anchorPoint = l_props_0.anchorPoint,
        position = l_props_0.position,
        screenSize = l_props_0.screenSize,
        title = v16.title,
        bodyText = v15:getMessage(v16, l_props_0.modalType),
        buttonStackInfo = {
            buttons = {
                {
                    props = {
                        onActivated = l_props_0.cancelActivated,
                        text = v16.cancel,
                        inputIcon = l_props_0.cancelControllerIcon
                    }
                },
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = l_props_0.doneActivated,
                        text = v16.confirm,
                        inputIcon = l_props_0.doneControllerIcon
                    }
                }
            }
        }
    });
end;
return v9;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.Utility.addRawValueMethodToEnum);
local v3 = require(l_Parent_1.enumerate);
local v4 = {
    None = "None",
    U13PaymentModal = "U13PaymentModal",
    U13MonthlyThreshold1Modal = "U13MonthlyThreshold1Modal",
    U13MonthlyThreshold2Modal = "U13MonthlyThreshold2Modal",
    ParentalConsentWarningPaymentModal13To17 = "ParentalConsentWarningPaymentModal13To17"
};
local v5 = v3(script.Name, v4);
v2(v5, v4);
return v5;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.LocaleRoactContext);
local v5 = v2.Component:extend("LocaleConsumer");
v5.validateProps = v3.strictInterface({
    render = v3.callback
});
v5.render = function(v6)
    return v2.createElement(v4.Consumer, {
        render = function(v7)
            return v6.props.render(v7);
        end
    });
end;
return v5;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.getLocaleContext);
local v5 = require(l_Parent_0.LocaleRoactContext);
local v6 = v2.Component:extend("LocaleProvider");
v6.validateProps = v3.interface({
    locale = v3.string
});
v6.render = function(v7)
    return v2.createElement(v5.Provider, {
        value = v4(v7.props.locale)
    }, v7.props[v2.Children]);
end;
return v6;


local v0 = require(script.Parent.Parent.Symbols.Symbol).named("FormattedParam");
local function _(v1)
    local v2 = false;
    if typeof(v1) == "table" then
        v2 = v1[v0] == true;
    end;
    return v2;
end;
local function _(v4)
    return {
        [v0] = true,
        format = v4
    };
end;
local function _(v6, v7)
    local l_translations_0 = v6.translations;
    local l_fallbackTranslations_0 = v6.fallbackTranslations;
    if l_fallbackTranslations_0 ~= nil and l_translations_0[v7] == nil then
        return l_fallbackTranslations_0[v7];
    else
        return l_translations_0[v7];
    end;
end;
return {
    nestedKeyParam = function(v11)
        return {
            [v0] = true,
            format = function(v12)
                local l_v11_0 = v11;
                local l_translations_1 = v12.translations;
                local l_fallbackTranslations_1 = v12.fallbackTranslations;
                if l_fallbackTranslations_1 ~= nil and l_translations_1[l_v11_0] == nil then
                    return l_fallbackTranslations_1[l_v11_0];
                else
                    return l_translations_1[l_v11_0];
                end;
            end
        };
    end,
    getString = function(v16, v17, v18)
        assert(v16 ~= nil, "Must provide valid localization context");
        local l_translations_2 = v16.translations;
        local l_fallbackTranslations_2 = v16.fallbackTranslations;
        local v21 = if l_fallbackTranslations_2 ~= nil and l_translations_2[v17] == nil then l_fallbackTranslations_2[v17] else l_translations_2[v17];
        assert(v21 ~= nil, "Unable to find localization with key: " .. v17);
        if v21 and v18 ~= nil then
            for v22, v23 in pairs(v18) do
                local l_v23_0 = v23;
                local v25 = ("{%s}"):format(v22);
                local v26 = false;
                if typeof(v23) == "table" then
                    v26 = v23[v0] == true;
                end;
                if v26 then
                    l_v23_0 = v23.format(v16);
                end;
                do
                    local l_l_v23_0_0 = l_v23_0;
                    v21 = string.gsub(v21, v25, function()
                        return l_l_v23_0_0;
                    end);
                end;
            end;
        end;
        return v21;
    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.t);
local v4 = require(l_Parent_0.Locale.LocaleService);
local v5 = require(script.Parent.LocaleConsumer);
local v6 = v3.strictInterface({
    keys = v3.table,
    render = v3.callback
});
local v7 = v3.strictInterface({
    key = v3.string,
    params = v3.optional(v3.table)
});
return function(v8)
    assert(v6(v8));
    for _, v10 in pairs(v8.keys) do
        assert(v7(v10));
    end;
    local l_render_0 = v8.render;
    return v2.createElement(v5, {
        render = function(v12)
            local v13 = {};
            for v14, v15 in pairs(v8.keys) do
                v13[v14] = v4.getString(v12, v15.key, v15.params);
            end;
            return l_render_0(v13);
        end
    });
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.t);
local v4 = require(l_Parent_0.Locale.LocaleService);
local v5 = require(script.Parent.LocaleConsumer);
local v6 = v3.strictInterface({
    locKey = v3.string,
    params = v3.optional(v3.table),
    render = v3.callback
});
return function(v7)
    assert(v6(v7));
    local l_locKey_0 = v7.locKey;
    local l_params_0 = v7.params;
    local l_render_0 = v7.render;
    return v2.createElement(v5, {
        render = function(v11)
            return l_render_0(v4.getString(v11, l_locKey_0, l_params_0));
        end
    });
end;


local l_TextService_0 = game:GetService("TextService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.UIBlox);
local v3 = require(l_Parent_0.Roact);
local _ = require(l_Parent_0.t);
local l_Images_0 = v2.App.ImageSet.Images;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v2.Style.withStyle;
local l_IconSize_0 = v2.App.Constant.IconSize;
local v9 = l_IconSize_0.Small + 16;
return function(v10)
    return l_withStyle_0(function(v11)
        local l_Theme_0 = v11.Theme;
        local l_Font_0 = v11.Font;
        local l_text_0 = v10.text;
        local v15 = l_Font_0.Body.RelativeSize * l_Font_0.BaseSize;
        local l_Font_1 = l_Font_0.Body.Font;
        local v17 = nil;
        v17 = if l_text_0 ~= nil then l_TextService_0:GetTextSize(l_text_0, v15, l_Font_1, Vector2.new(v10.width - v9, 10000)) else Vector2.new(0, 0);
        return v3.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, v17.Y),
            BackgroundTransparency = 1,
            LayoutOrder = v10.layoutOrder
        }, {
            Bullet = v3.createElement(l_ImageSetLabel_0, {
                BackgroundTransparency = 1,
                Position = UDim2.new(0, 2, 0, 2),
                Size = UDim2.new(0, l_IconSize_0.Small, 0, l_IconSize_0.Small),
                ScaleType = Enum.ScaleType.Stretch,
                Image = l_Images_0["icons/status/success_small"],
                ImageColor3 = l_Theme_0.IconDefault.Color,
                ImageTransparency = l_Theme_0.IconDefault.Transparency
            }),
            Text = v3.createElement("TextLabel", {
                Position = UDim2.new(0, v9, 0, 0),
                Size = UDim2.new(1, -v9, 0, v17.Y),
                BackgroundTransparency = 1,
                Text = l_text_0,
                TextSize = v15,
                TextColor3 = l_Theme_0.TextDefault.Color,
                TextTransparency = l_Theme_0.TextDefault.Transparency,
                Font = l_Font_1,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextWrapped = true,
                LayoutOrder = v10.layoutOrder
            })
        });
    end);
end;