local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.Promise);
local v4 = require(l_Parent_1.LuauPolyfill);
local l_Boolean_0 = v4.Boolean;
local l_Object_0 = v4.Object;
local v7 = require(l_Parent_0.luaUtils.hasOwnProperty);
local v8 = require(l_Parent_0.jsutils.equal);
local l_ApolloError_0 = require(l_Parent_0.errors).ApolloError;
local l_NetworkStatus_0 = require(script.Parent.Parent.Parent.core).NetworkStatus;
local _ = require(l_Parent_0.utilities);
local l_DocumentType_0 = require(script.Parent.Parent.parser).DocumentType;
local _ = require(script.Parent.Parent.types.types);
local l_OperationData_0 = require(script.Parent.OperationData).OperationData;
local v15 = setmetatable({}, {
    __index = l_OperationData_0
});
v15.__index = v15;
v15.new = function(v16)
    local l_options_0 = v16.options;
    local l_context_0 = v16.context;
    local l_onNewData_0 = v16.onNewData;
    local v20 = l_OperationData_0.new(l_options_0, l_context_0);
    v20.runLazy = false;
    v20.previous = {};
    v20.onNewData = l_onNewData_0;
    v20.runLazyQuery = function(v21)
        v20:cleanup();
        v20.runLazy = true;
        v20.lazyOptions = v21;
        v20:onNewData();
    end;
    v20.obsRefetch = function(_, v23)
        if not l_Boolean_0.toJSBoolean(v20.currentObservable) then
            return nil;
        else
            return v20.currentObservable:refetch(v23);
        end;
    end;
    v20.obsFetchMore = function(_, v25)
        if not v20.currentObservable then
            return nil;
        else
            return (v20.currentObservable:fetchMore(v25));
        end;
    end;
    v20.obsUpdateQuery = function(_, v27)
        if not v20.currentObservable then
            return nil;
        else
            return (v20.currentObservable:updateQuery(v27));
        end;
    end;
    v20.obsStartPolling = function(_, v29)
        if not v20.currentObservable then
            return nil;
        else
            return (v20.currentObservable:startPolling(v29));
        end;
    end;
    v20.obsStopPolling = function(_)
        if not v20.currentObservable then
            return nil;
        else
            return (v20.currentObservable:stopPolling());
        end;
    end;
    v20.obsSubscribeToMore = function(v31)
        if not v20.currentObservable then
            return nil;
        else
            return (v20.currentObservable:subscribeToMore(v31));
        end;
    end;
    return (setmetatable(v20, v15));
end;
v15.execute = function(v32)
    v32:refreshClient();
    local v33 = v32:getOptions();
    local l_skip_0 = v33.skip;
    local l_query_0 = v33.query;
    if l_skip_0 or l_query_0 ~= v32.previous.query then
        v32:removeQuerySubscription();
        v32:removeObservable(not l_Boolean_0.toJSBoolean(l_skip_0));
        v32.previous.query = l_query_0;
    end;
    v32:updateObservableQuery();
    return v32:getExecuteSsrResult() or v32:getExecuteResult();
end;
v15.executeLazy = function(v36)
    if l_Boolean_0.toJSBoolean(v36.runLazy) then
        return table.pack(v36.runLazyQuery, v36:execute());
    else
        return table.pack(v36.runLazyQuery, {
            loading = false,
            networkStatus = l_NetworkStatus_0.ready,
            called = false,
            data = nil
        });
    end;
end;
v15.fetchData = function(v37)
    local v38 = v37:getOptions();
    if not l_Boolean_0.toJSBoolean(not not l_Boolean_0.toJSBoolean(v38.skip) and v38.skip or v38.ssr == false) then
        return v3.new(function(v39)
            return v37:startQuerySubscription(v39);
        end);
    else
        return false;
    end;
end;
v15.afterExecute = function(v40, v41)
    local v42 = v41 or {};
    local v43 = not not v42.lazy and v42.lazy;
    v40.isMounted = true;
    local v44 = v40:getOptions();
    local v45 = v44.ssr == false;
    if not ((not l_Boolean_0.toJSBoolean(v40.currentObservable) or l_Boolean_0.toJSBoolean(v45)) or l_Boolean_0.toJSBoolean(v40:ssrInitiated())) then
        v40:startQuerySubscription();
    end;
    if not (l_Boolean_0.toJSBoolean(v43) and not l_Boolean_0.toJSBoolean(v40.runLazy)) then
        v40:handleErrorOrCompleted();
    end;
    v40.previousOptions = v44;
    return function(...)
        return v40:unmount(...);
    end;
end;
v15.cleanup = function(v46)
    v46:removeQuerySubscription();
    v46:removeObservable(true);
    v46.previous.result = nil;
end;
v15.getOptions = function(v47)
    local v48 = getmetatable((getmetatable(v47))).__index.getOptions(v47);
    if l_Boolean_0.toJSBoolean(v47.lazyOptions) then
        v48.variables = l_Object_0.assign({}, v48.variables, v47.lazyOptions.variables);
        v48.context = l_Object_0.assign({}, v48.context, v47.lazyOptions.context);
    end;
    if l_Boolean_0.toJSBoolean(v47.runLazy) then
        v47.options.skip = nil;
    end;
    return v48;
end;
v15.ssrInitiated = function(v49)
    if not l_Boolean_0.toJSBoolean(v49.context) then
        return v49.context;
    else
        return v49.context.renderPromises;
    end;
end;
v15.getExecuteSsrResult = function(v50)
    local v51 = v50:getOptions();
    local l_ssr_0 = v51.ssr;
    local l_skip_1 = v51.skip;
    local v54 = l_ssr_0 == false;
    local l_disableNetworkFetches_0 = v50:refreshClient().client.disableNetworkFetches;
    local v56 = l_Object_0.assign({}, {
        loading = true,
        networkStatus = l_NetworkStatus_0.loading,
        called = true,
        data = nil,
        stale = false,
        client = v50.client;
        v50:observableQueryFields()
    });
    if not l_Boolean_0.toJSBoolean(v54) or not l_Boolean_0.toJSBoolean(v50:ssrInitiated()) and not l_Boolean_0.toJSBoolean(l_disableNetworkFetches_0) then
        if not l_Boolean_0.toJSBoolean(v50:ssrInitiated()) then
            return nil;
        else
            local v57 = not not l_Boolean_0.toJSBoolean(v50:getExecuteResult()) and v50:getExecuteResult() or v56;
            if not (not l_Boolean_0.toJSBoolean(v57.loading) or l_Boolean_0.toJSBoolean(l_skip_1)) then
                v50.context.renderPromises:addQueryPromise(v50, function()
                    return nil;
                end);
            end;
            return v57;
        end;
    else
        v50.previous.result = v56;
        return v56;
    end;
end;
v15.prepareObservableQueryOptions = function(v58)
    local v59 = v58:getOptions();
    v58:verifyDocumentType(v59.query, l_DocumentType_0.Query);
    local v60 = not not l_Boolean_0.toJSBoolean(v59.displayName) and v59.displayName or "Query";
    if l_Boolean_0.toJSBoolean(v58:ssrInitiated()) and (not (v59.fetchPolicy ~= "network-only") or v59.fetchPolicy == "cache-and-network") then
        v59.fetchPolicy = "cache-first";
    end;
    return l_Object_0.assign({}, v59, {
        displayName = v60,
        context = v59.context
    });
end;
v15.initializeObservableQuery = function(v61)
    if l_Boolean_0.toJSBoolean(v61:ssrInitiated()) then
        v61.currentObservable = v61.context.renderPromises:getSSRObservable(v61:getOptions());
    end;
    if not l_Boolean_0.toJSBoolean(v61.currentObservable) then
        local v62 = v61:prepareObservableQueryOptions();
        v61.previous.observableQueryOptions = l_Object_0.assign({}, v62, {
            children = l_Object_0.None
        });
        v61.currentObservable = v61:refreshClient().client:watchQuery(l_Object_0.assign({}, v62));
        if l_Boolean_0.toJSBoolean(v61:ssrInitiated()) then
            v61.context.renderPromises:registerSSRObservable(v61.currentObservable, v62);
        end;
    end;
end;
v15.updateObservableQuery = function(v63)
    if l_Boolean_0.toJSBoolean(v63.currentObservable) then
        local v64 = l_Object_0.assign({}, v63:prepareObservableQueryOptions(), {
            children = l_Object_0.None
        });
        if not l_Boolean_0.toJSBoolean(v63:getOptions().skip) then
            if not v8(v64, v63.previous.observableQueryOptions) then
                v63.previous.observableQueryOptions = v64;
                v63.currentObservable:setOptions(v64):catch(function()
                end);
            end;
            return ;
        else
            v63.previous.observableQueryOptions = v64;
            return ;
        end;
    else
        v63:initializeObservableQuery();
        return ;
    end;
end;
v15.startQuerySubscription = function(v65, v66)
    if v66 == nil then
        v66 = v65.onNewData;
    end;
    if not l_Boolean_0.toJSBoolean(v65.currentSubscription) and not l_Boolean_0.toJSBoolean(v65:getOptions().skip) then
        v65.currentSubscription = v65.currentObservable:subscribe({
            next = function(_, v68)
                local l_loading_0 = v68.loading;
                local l_networkStatus_0 = v68.networkStatus;
                local l_data_0 = v68.data;
                local l_result_0 = v65.previous.result;
                if not ((l_Boolean_0.toJSBoolean(l_result_0) and l_result_0.loading == l_loading_0) and l_result_0.networkStatus == l_networkStatus_0) or not v8(l_result_0.data, l_data_0) then
                    v66(v65);
                    return ;
                else
                    return ;
                end;
            end,
            error = function(_, v74)
                v65:resubscribeToQuery();
                if not v7(v74, "graphQLErrors") then
                    error(v74);
                end;
                local l_result_1 = v65.previous.result;
                if not (not (l_Boolean_0.toJSBoolean(l_result_1) and l_Boolean_0.toJSBoolean(l_result_1.loading)) and v8(v74, v65.previous.error)) then
                    v65.previous.error = v74;
                    v66(v65);
                end;
            end
        });
        return ;
    else
        return ;
    end;
end;
v15.resubscribeToQuery = function(v76)
    v76:removeQuerySubscription();
    local l_currentObservable_0 = v76.currentObservable;
    if l_Boolean_0.toJSBoolean(l_currentObservable_0) then
        local v78 = l_currentObservable_0:getLastError();
        local v79 = l_currentObservable_0:getLastResult();
        l_currentObservable_0:resetLastResults();
        v76:startQuerySubscription();
        l_Object_0.assign(l_currentObservable_0, {
            lastError = v78,
            lastResult = v79
        });
    end;
end;
v15.getExecuteResult = function(v80)
    local v81 = v80:observableQueryFields();
    local v82 = v80:getOptions();
    if not l_Boolean_0.toJSBoolean(v82.skip) then
        if l_Boolean_0.toJSBoolean(v80.currentObservable) then
            local v83 = v80.currentObservable:getCurrentResult();
            local l_data_1 = v83.data;
            local l_loading_1 = v83.loading;
            local l_partial_0 = v83.partial;
            local l_networkStatus_1 = v83.networkStatus;
            local l_errors_0 = v83.errors;
            local l_error_0 = v83.error;
            if l_Boolean_0.toJSBoolean(l_errors_0) and #l_errors_0 > 0 then
                l_error_0 = l_ApolloError_0.new({
                    graphQLErrors = l_errors_0
                });
            end;
            v81 = l_Object_0.assign({}, v81, {
                data = l_data_1,
                loading = l_loading_1,
                networkStatus = l_networkStatus_1,
                error = l_error_0,
                called = true
            });
            if not l_Boolean_0.toJSBoolean(l_loading_1) then
                if not l_Boolean_0.toJSBoolean(l_error_0) then
                    local l_fetchPolicy_0 = v80.currentObservable.options.fetchPolicy;
                    if (not (not l_Boolean_0.toJSBoolean(v82.partialRefetch) or not l_Boolean_0.toJSBoolean(l_partial_0)) and (not l_Boolean_0.toJSBoolean(l_data_1) or #l_Object_0.keys(l_data_1) == 0)) and l_fetchPolicy_0 ~= "cache-only" then
                        l_Object_0.assign(v81, {
                            loading = true,
                            networkStatus = l_NetworkStatus_0.loading
                        });
                        v81:refetch();
                        return v81;
                    end;
                else
                    l_Object_0.assign(v81, {
                        data = (v80.currentObservable:getLastResult() or {}).data
                    });
                end;
            end;
        end;
    else
        v81 = l_Object_0.assign({}, v81, {
            data = l_Object_0.None,
            error = l_Object_0.None,
            loading = false,
            networkStatus = l_NetworkStatus_0.ready,
            called = true
        });
    end;
    v81.client = v80.client;
    v80:setOptions(v82, true);
    local l_result_2 = v80.previous.result;
    if not l_Boolean_0.toJSBoolean(l_result_2) or not l_Boolean_0.toJSBoolean(l_result_2.loading) then
        v80.previous.loading = false;
    else
        v80.previous.loading = l_result_2.loading;
    end;
    if not l_Boolean_0.toJSBoolean(l_result_2) then
        v81.previousData = l_result_2;
    else
        v81.previousData = not not l_Boolean_0.toJSBoolean(l_result_2.data) and l_result_2.data or l_result_2.previousData;
    end;
    v80.previous.result = v81;
    if l_Boolean_0.toJSBoolean(v80.currentObservable) then
        v80.currentObservable:resetQueryStoreErrors();
    end;
    return v81;
end;
v15.handleErrorOrCompleted = function(v92)
    if v92.currentObservable and v92.previous.result then
        local l_result_3 = v92.previous.result;
        local l_data_2 = l_result_3.data;
        local l_loading_2 = l_result_3.loading;
        local l_error_1 = l_result_3.error;
        if not l_Boolean_0.toJSBoolean(l_loading_2) then
            local v97 = v92:getOptions();
            local l_query_1 = v97.query;
            local l_variables_0 = v97.variables;
            local l_onCompleted_0 = v97.onCompleted;
            local l_onError_0 = v97.onError;
            local l_skip_2 = v97.skip;
            if ((not l_Boolean_0.toJSBoolean(v92.previousOptions) or l_Boolean_0.toJSBoolean(v92.previous.loading)) or not v8(v92.previousOptions.query, l_query_1)) or not v8(v92.previousOptions.variables, l_variables_0) then
                if (not l_Boolean_0.toJSBoolean(l_onCompleted_0) or l_Boolean_0.toJSBoolean(l_error_1)) or l_Boolean_0.toJSBoolean(l_skip_2) then
                    if not (not l_Boolean_0.toJSBoolean(l_onError_0) or not l_Boolean_0.toJSBoolean(l_error_1)) then
                        l_onError_0(l_error_1);
                    end;
                else
                    l_onCompleted_0(l_data_2);
                    return ;
                end;
            else
                return ;
            end;
        end;
        return ;
    else
        return ;
    end;
end;
v15.removeQuerySubscription = function(v103)
    if l_Boolean_0.toJSBoolean(v103.currentSubscription) then
        v103.currentSubscription:unsubscribe();
        v103.currentSubscription = nil;
    end;
end;
v15.removeObservable = function(v104, v105)
    if l_Boolean_0.toJSBoolean(v104.currentObservable) then
        v104.currentObservable.tearDownQuery(v104.currentObservable);
        if l_Boolean_0.toJSBoolean(v105) then
            v104.currentObservable = nil;
        end;
    end;
end;
v15.observableQueryFields = function(v106)
    local _ = nil;
    return {
        variables = if not l_Boolean_0.toJSBoolean(v106.currentObservable) then nil else v106.currentObservable.variables,
        refetch = v106.obsRefetch,
        fetchMore = v106.obsFetchMore,
        updateQuery = v106.obsUpdateQuery,
        startPolling = v106.obsStartPolling,
        stopPolling = v106.obsStopPolling,
        subscribeToMore = v106.obsSubscribeToMore
    };
end;
v0.QueryData = v15;
return v0;


return {
    OperationData = require(script.OperationData).OperationData,
    MutationData = require(script.MutationData).MutationData,
    QueryData = require(script.QueryData).QueryData
};


local v0 = {};
require(script.Parent.Parent.Parent.LuauPolyfill).Object.assign(v0, require(script.useApolloClient), require(script.useQuery), require(script.useLazyQuery), require(script.useMutation), (require(script.useReactiveVar)));
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = {};
local v3 = require(l_Parent_1.React);
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local l_getApolloContext_0 = require(l_Parent_0.react.context).getApolloContext;
local _ = require(l_Parent_0.core);
useApolloClient = function()
    local l_client_0 = v3.useContext(l_getApolloContext_0()).client;
    l_invariant_0(l_client_0, "No Apollo Client instance can be found. Please ensure that you " .. "have called `ApolloProvider` higher up in your tree.");
    return l_client_0;
end;
v2.useApolloClient = useApolloClient;
return v2;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.Parent.GraphQL);
local _ = require(l_Parent_0.jsutils.typedDocumentNode);
local _ = require(l_Parent_0.react.types.types);
local l_useBaseQuery_0 = require(script.Parent.utils.useBaseQuery).useBaseQuery;
local _ = require(l_Parent_0.core);
return {
    useLazyQuery = function(v6, v7)
        return l_useBaseQuery_0(v6, v7, true);
    end
};


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
local _ = require(script.Parent.Parent.Parent.core);
local v5 = require(l_Parent_1.React);
local l_useContext_0 = v5.useContext;
local l_useState_0 = v5.useState;
local l_useRef_0 = v5.useRef;
local l_useEffect_0 = v5.useEffect;
local _ = require(l_Parent_1.GraphQL);
local _ = require(l_Parent_0.jsutils.typedDocumentNode);
local _ = require(script.Parent.Parent.types.types);
local l_MutationData_0 = require(script.Parent.Parent.data).MutationData;
local l_getApolloContext_0 = require(script.Parent.Parent.context).getApolloContext;
v0.useMutation = function(v15, v16)
    local v17 = l_useContext_0(l_getApolloContext_0());
    local v18, v19 = l_useState_0({
        called = false,
        loading = false
    });
    local v20 = if not v16 then {
        mutation = v15
    } else l_Object_0.assign({}, v16, {
        mutation = v15
    });
    local v21 = l_useRef_0(nil);
    local v24 = (function()
        if not v21.current then
            v21.current = l_MutationData_0.new({
                options = v20,
                context = v17,
                result = v18,
                setResult = function(_, v23)
                    v19(v23);
                    return nil;
                end
            });
        end;
        return v21.current;
    end)();
    v24:setOptions(v20);
    v24.context = v17;
    l_useEffect_0(function()
        return v24:afterExecute();
    end);
    return v24:execute(v18);
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.Parent.GraphQL);
local _ = require(l_Parent_0.jsutils.typedDocumentNode);
local _ = require(script.Parent.Parent.types.types);
local l_useBaseQuery_0 = require(script.Parent.utils.useBaseQuery).useBaseQuery;
local _ = require(l_Parent_0.core);
v0.useQuery = function(v7, v8)
    return l_useBaseQuery_0(v7, v8, false);
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Parent.React);
local l_useEffect_0 = v2.useEffect;
local l_useState_0 = v2.useState;
local _ = require(l_Parent_0.cache);
local v6 = {
    __value = "nil placeholder"
};
v0.useReactiveVar = function(v7)
    local v8 = v7();
    local _, v10 = l_useState_0(v8);
    l_useEffect_0(function()
        local v11 = v7();
        if v8 ~= v11 then
            v10(v11);
            return ;
        else
            return v7:onNextChange(v10);
        end;
    end, {
        v8 or v6
    });
    return v8;
end;
return v0;


local v0 = {};
local v1 = require(script.Parent.Parent.Parent.Parent.Parent.React);
local l_useEffect_0 = v1.useEffect;
local l_useRef_0 = v1.useRef;
v0.useAfterFastRefresh = function(v4)
    if _G.__DEV__ then
        local v5 = l_useRef_0(false);
        l_useEffect_0(function()
            return function()
                v5.current = true;
            end;
        end, {});
        l_useEffect_0(function()
            if v5.current == true then
                v5.current = false;
                v4();
            end;
        end, {});
    end;
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.Promise);
local v4 = require(l_Parent_1.LuauPolyfill);
local l_Boolean_0 = v4.Boolean;
local l_Object_0 = v4.Object;
local v7 = require(l_Parent_1.React);
local l_useContext_0 = v7.useContext;
local l_useEffect_0 = v7.useEffect;
local l_useReducer_0 = v7.useReducer;
local l_useRef_0 = v7.useRef;
local _ = require(l_Parent_1.GraphQL);
local _ = require(l_Parent_0.jsutils.typedDocumentNode);
local _ = require(script.Parent.Parent.Parent.types.types);
local l_QueryData_0 = require(script.Parent.Parent.Parent.data).QueryData;
local l_useDeepMemo_0 = require(script.Parent.useDeepMemo).useDeepMemo;
local _ = require(script.Parent.Parent.Parent.Parent.core);
local l_getApolloContext_0 = require(script.Parent.Parent.Parent.context).getApolloContext;
local l_useAfterFastRefresh_0 = require(script.Parent.useAfterFastRefresh).useAfterFastRefresh;
local v20 = {
    __value = "nil placeholder"
};
v0.useBaseQuery = function(v21, v22, v23)
    if v23 == nil then
        v23 = false;
    end;
    local v24 = l_useContext_0(l_getApolloContext_0());
    local v26, v27 = l_useReducer_0(function(v25)
        return v25 + 1;
    end, 0);
    local v28 = not not l_Boolean_0.toJSBoolean(v22) and l_Object_0.assign({}, v22, {
        query = v21
    }) or {
        query = v21
    };
    local v29 = l_useRef_0(nil);
    local v30 = nil;
    v30 = v29.current or (function()
        v29.current = l_QueryData_0.new({
            options = v28,
            context = v24,
            onNewData = function(_)
                if l_Boolean_0.toJSBoolean(v30:ssrInitiated()) then
                    v27(nil);
                    return ;
                else
                    v3.delay(0):andThen(function()
                        if not (v29.current ~= nil) or not v29.current.isMounted then
                            return ;
                        else
                            return v27(nil);
                        end;
                    end);
                    return ;
                end;
            end
        });
        return v29.current;
    end)();
    v30:setOptions(v28);
    v30.context = v24;
    local v32 = l_useDeepMemo_0(function()
        if not v23 then
            return v30:execute();
        else
            return v30:executeLazy();
        end;
    end, {
        options = l_Object_0.assign({}, v28, {
            onError = l_Object_0.None,
            onCompleted = l_Object_0.None
        }),
        context = v24,
        tick = v26
    });
    local v33 = if not v23 then v32 else v32[2];
    if _G.__DEV__ then
        l_useAfterFastRefresh_0(v27);
    end;
    l_useEffect_0(function()
        return function()
            v30:cleanup();
            v29.current = nil;
        end;
    end, {});
    l_useEffect_0(function()
        return v30:afterExecute({
            lazy = v23
        });
    end, {
        v33.loading ~= nil and v33.loading or v20,
        v33.networkStatus ~= nil and v33.networkStatus or v20,
        v33.error ~= nil and v33.error or v20,
        v33.data ~= nil and v33.data or v20
    });
    return v32;
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_useRef_0 = require(l_Parent_0.Parent.React).useRef;
local v3 = require(l_Parent_0.jsutils.equal);
v0.useDeepMemo = function(v4, v5)
    local v6 = l_useRef_0(nil);
    if not (v6.current and v3(v5, v6.current.key)) then
        v6.current = {
            key = v5,
            value = v4()
        };
    end;
    return v6.current.value;
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent;
local l_Object_0 = require(l_Parent_0.Parent.LuauPolyfill).Object;
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local l_DEV_0 = require(l_Parent_0.utilities).DEV;
l_invariant_0(typeof(l_DEV_0) == "boolean", (tostring(l_DEV_0)));
local v5 = require(script.context);
v0.ApolloProvider = v5.ApolloProvider;
v0.ApolloConsumer = v5.ApolloConsumer;
v0.getApolloContext = v5.getApolloContext;
v0.resetApolloContext = v5.resetApolloContext;
l_Object_0.assign(v0, (require(script.hooks)));
local v6 = require(script.parser);
v0.DocumentType = v6.DocumentType;
v0.operationName = v6.operationName;
v0.parser = v6.parser;
l_Object_0.assign(v0, (require(script.types.types)));
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v3.Array;
local l_Boolean_0 = v3.Boolean;
local _ = require(l_Parent_1.GraphQL);
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local l_Map_0 = v3.Map;
local v9 = {
    Query = 0,
    Mutation = 1,
    Subscription = 2
};
v0.DocumentType = v9;
local v10 = l_Map_0.new(nil);
v0.operationName = function(v11)
    local v12 = nil;
    if v11 == v9.Query then
        return "Query";
    elseif v11 == v9.Mutation then
        return "Mutation";
    else
        if v11 == v9.Subscription then
            v12 = "Subscription";
        end;
        return v12;
    end;
end;
v0.parser = function(v13)
    local v14 = v10:get(v13);
    if v14 ~= nil then
        return v14;
    else
        local _ = nil;
        local v16 = nil;
        local _ = nil;
        l_invariant_0(l_Boolean_0.toJSBoolean(v13) and l_Boolean_0.toJSBoolean(v13.kind), ("Argument of %s passed to parser was not a valid GraphQL "):format((tostring(v13))) .. "DocumentNode. You may need to use 'graphql-tag' or another method " .. "to convert your operation into a document");
        local v19 = l_Array_0.filter(v13.definitions, function(v18)
            return v18.kind == "FragmentDefinition";
        end);
        local v22 = l_Array_0.filter(v13.definitions, function(v20)
            local v21 = false;
            if v20.kind == "OperationDefinition" then
                v21 = v20.operation == "query";
            end;
            return v21;
        end);
        local v25 = l_Array_0.filter(v13.definitions, function(v23)
            local v24 = false;
            if v23.kind == "OperationDefinition" then
                v24 = v23.operation == "mutation";
            end;
            return v24;
        end);
        local v28 = l_Array_0.filter(v13.definitions, function(v26)
            local v27 = false;
            if v26.kind == "OperationDefinition" then
                v27 = v26.operation == "subscription";
            end;
            return v27;
        end);
        local l_l_invariant_0_0 = l_invariant_0;
        local v30 = true;
        if #v19 ~= 0 then
            v30 = true;
            if #v22 == 0 then
                v30 = true;
                if #v25 == 0 then
                    v30 = #v28 ~= 0;
                end;
            end;
        end;
        l_l_invariant_0_0(v30, "Passing only a fragment to 'graphql' is not yet supported. " .. "You must include a query, subscription or mutation as well");
        l_invariant_0((#v22 + #v25) + #v28 <= 1, "react-apollo only supports a query, subscription, or a mutation per HOC. " .. ("%s had %s queries, %s "):format(tostring(v13), tostring(#v22), (tostring(#v28))) .. ("subscriptions and %s mutations. "):format((tostring(#v25))) .. "You can use 'compose' to join multiple operation types to a component");
        v16 = if #v22 ~= 0 then v9.Query else v9.Mutation;
        if #v22 == 0 and #v25 == 0 then
            v16 = v9.Subscription;
        end;
        l_l_invariant_0_0 = if #v22 > 0 then v22 else if #v25 > 0 then v25 else v28;
        l_invariant_0(#l_l_invariant_0_0 == 1, ("react-apollo only supports one definition per HOC. %s had "):format((tostring(v13))) .. ("%s definitions. "):format((tostring(#l_l_invariant_0_0))) .. "You can use 'compose' to join multiple operation types to a component");
        v30 = l_l_invariant_0_0[1];
        local v31 = {
            name = if not not v30.name and v30.name.kind == "Name" then v30.name.value else "data",
            type = v16,
            variables = not not v30.variableDefinitions and v30.variableDefinitions or {}
        };
        v10:set(v13, v31);
        return v31;
    end;
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local _ = require(l_Parent_1.LuauPolyfill);
local _ = require(l_Parent_1.React);
local _ = require(l_Parent_1.GraphQL);
local _ = require(l_Parent_0.jsutils.typedDocumentNode);
local _ = require(script.Parent.Parent.Parent.core);
return {};


local v0 = {};
local l_Array_0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill).Array;
v0.isNonEmptyArray = function(v2)
    return (function()
        if not l_Array_0.isArray(v2) then
            return l_Array_0.isArray(v2);
        else
            return #v2 > 0;
        end;
    end)();
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Map_0 = v2.Map;
local v5 = require(l_Parent_0.luaUtils.Object);
local l_instanceof_0 = v2.instanceof;
local l_NULL_0 = require(script.Parent.Parent.globals.null).NULL;
local v8 = nil;
v0.cloneDeep = function(v9)
    return v8(v9);
end;
local v10 = {
    v2.Error,
    v2.Map,
    v2.WeakMap,
    v2.Set
};
v8 = function(v11, v12)
    if not l_Array_0.isArray(v11) then
        if not (typeof(v11) == "table" and v11 ~= l_NULL_0) or not l_Array_0.every(v10, function(v13)
            return not l_instanceof_0(v11, v13);
        end) then
            return v11;
        else
            v12 = v12 or l_Map_0.new(nil);
            if not v12:has(v11) then
                local v14 = v5.create(v5.getPrototypeOf(v11));
                v12:set(v11, v14);
                l_Array_0.forEach(v5.keys(v11), function(v15)
                    v14[v15] = v8(v11[v15], v12);
                end);
                return v14;
            else
                return v12:get(v11);
            end;
        end;
    else
        v12 = v12 or l_Map_0.new(nil);
        if not v12:has(v11) then
            local v16 = l_Array_0.slice(v11, 1);
            v12:set(v11, v16);
            l_Array_0.forEach(v16, function(v17, v18)
                v16[v18] = v8(v17, v12);
            end);
            return v16;
        else
            return v12:get(v11);
        end;
    end;
end;
return v0;


local v0 = {};
local l_Object_0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill).Object;
v0.compact = function(...)
    return l_Object_0.assign({}, ...);
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local _ = require(l_Parent_0.GraphQL);
v0.graphQLResultHasError = function(v4)
    local v5;
    if l_Boolean_0.toJSBoolean(v4.errors) then
        v5 = true;
        if not (#v4.errors <= 0) then
            goto label0;
        end;
    end;
    v5 = false;
    ::label0::;
    return v5;
end;
return v0;


local l_Array_0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill).Array;
return {
    filterInPlace = function(v1, v2, v3)
        local v4 = 1;
        l_Array_0.forEach(v1, function(v5, v6)
            if v2(v5, v6, v1) then
                v1[v4] = v5;
                v4 = v4 + 1;
            end;
        end, v3);
        v1[v4] = nil;
        return v1;
    end
};


local v0 = {};
local _ = require(script.Parent.maybe).maybe;
v0.default = _G;
return v0;


local v0 = {};
local v1 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill);
local l_Boolean_0 = v1.Boolean;
local v3 = v1.Map.new(nil);
local v4 = {
    "0",
    "1",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "a",
    "b",
    "c",
    "d",
    "e",
    "f",
    "g",
    "h",
    "i",
    "j",
    "k",
    "l",
    "m",
    "n",
    "o",
    "p",
    "q",
    "r",
    "s",
    "t",
    "u",
    "v",
    "w",
    "x",
    "y",
    "z"
};
math.randomseed(os.clock());
local function v7()
    local v5 = "";
    for _ = 1, 11 do
        v5 = v5 .. v4[math.random(1, 36)];
    end;
    return v5;
end;
local function v11(v8)
    local v9 = v7();
    local v10 = not not l_Boolean_0.toJSBoolean(v3:get(v8)) and v3:get(v8) or 1;
    v3:set(v8, v10 + 1);
    return ("%s:%s:%s"):format(v8, tostring(v10), v9);
end;
v0.uuid = v7;
v0.makeUniqueId = v11;
return v0;


return {
    maybe = function(v0)
        local _, v2, v3 = xpcall(function()
            return v0(), true;
        end, function()
        end);
        if not v3 then
            return nil;
        else
            return v2;
        end;
    end
};


local v0 = {};
local v1 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill);
local l_Object_0 = v1.Object;
local l_Set_0 = v1.Set;
local l_Array_0 = v1.Array;
require(script.Parent.Parent.globals);
local l_isNonNullObject_0 = require(script.Parent.objects).isNonNullObject;
local function v11(v6)
    local v7 = l_Set_0.new({
        v6
    });
    for _, v9 in v7, nil, nil do
        if l_isNonNullObject_0(v9) then
            if not table.isfrozen(v9) then
                l_Object_0.freeze(v9);
            end;
            l_Array_0.forEach(l_Object_0.keys(v9), function(v10)
                if l_isNonNullObject_0(v9[v10]) then
                    v7:add(v9[v10]);
                end;
            end);
        end;
    end;
    return v6;
end;
v0.maybeDeepFreeze = function(v12)
    if _G.__DEV__ then
        v11(v12);
    end;
    return v12;
end;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Set_0 = require(l_Parent_0.Parent.LuauPolyfill).Set;
local v3 = newproxy(true);
getmetatable(v3).__tostring = function()
    return "Value.None";
end;
local l_isNonNullObject_0 = require(script.Parent.objects).isNonNullObject;
local v5 = require(l_Parent_0.luaUtils.hasOwnProperty);
local v6 = require(l_Parent_0.luaUtils.objectKeysForEach);
local v7 = nil;
v0.mergeDeep = function(...)
    return v7({
        ...
    });
end;
local v8 = {};
v7 = function(v9)
    local v10 = v9[1] or {};
    local v11 = #v9;
    if v11 > 1 then
        local v12 = v8.new();
        for v13 = 2, v11 do
            v10 = v12:merge(v10, v9[v13]);
        end;
    end;
    return v10;
end;
v0.mergeDeepArray = v7;
v8.__index = v8;
v8.new = function(v14)
    local v15 = setmetatable({}, v8);
    local function v20(v16, v17, v18, v19)
        return v16:merge(v17[v19], v18[v19]);
    end;
    if v14 == nil then
        v14 = v20;
    end;
    v15.reconciler = v14;
    v15.isObject = l_isNonNullObject_0;
    v15.pastCopies = l_Set_0.new();
    return v15;
end;
v8.merge = function(v21, v22, v23, ...)
    local v24 = table.pack(...);
    if not l_isNonNullObject_0(v23) or not l_isNonNullObject_0(v22) then
        return v23;
    else
        v6(v23, function(v25)
            if not v5(v22, v25) then
                v22 = v21:shallowCopyForMerge(v22);
                v22[v25] = v23[v25];
            else
                local v26 = v22[v25];
                if v23[v25] ~= v26 then
                    local v27 = v21:reconciler(v22, v23, v25, table.unpack(v24));
                    if v27 ~= v26 then
                        v22 = v21:shallowCopyForMerge(v22);
                        v22[v25] = v27;
                    end;
                end;
            end;
            if v22[v25] == v3 then
                v22[v25] = nil;
            end;
        end);
        return v22;
    end;
end;
v8.shallowCopyForMerge = function(v28, v29)
    if not (not l_isNonNullObject_0(v29) or v28.pastCopies:has(v29)) then
        v29 = table.clone(v29);
        v28.pastCopies:add(v29);
    end;
    return v29;
end;
v8.None = v3;
v0.DeepMerger = v8;
return v0;


return {
    isNonNullObject = function(v0)
        local v1 = false;
        if v0 ~= nil then
            v1 = type(v0) == "table";
        end;
        return v1;
    end
};


local v0 = {};
local v1 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_String_0 = v1.String;
local l_HttpService_0 = game:GetService("HttpService");
local l_makeUniqueId_0 = require(script.Parent.makeUniqueId).makeUniqueId;
replaceUndefined = function(v6, v7)
    if l_Array_0.isArray(v6) then
        local v8 = {};
        for v9 = 1, #v6 do
            if v6[v9] == nil then
                table.insert(v8, v7);
            else
                table.insert(v8, v6[v9]);
            end;
        end;
        return v8;
    else
        return v6;
    end;
end;
v0.stringifyForDisplay = function(v10)
    local v11 = l_makeUniqueId_0("stringifyForDisplay");
    return l_Array_0.join(l_String_0.split(l_HttpService_0:JSONEncode(replaceUndefined(v10, v11)), l_HttpService_0:JSONEncode(v11)), "<undefined>");
end;
return v0;


local v0 = {};
local l_Boolean_0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill).Boolean;
local l_default_0 = require(script.Parent.Parent.common.global).default;
local v3 = "__" .. "DEV" .. "__";
local _ = function()
    local _, v5 = xpcall(function()
        return l_Boolean_0.toJSBoolean(_G.__DEV__);
    end, function()
        l_default_0[v3] = true;
        return l_default_0[v3];
    end);
    return v5;
end;
local _, v8 = xpcall(function()
    return l_Boolean_0.toJSBoolean(_G.__DEV__);
end, function()
    l_default_0[v3] = true;
    return l_default_0[v3];
end);
v0.default = v8;
return v0;


local v0 = {};
local l_isType_0 = require(script.Parent.Parent.Parent.Parent.GraphQL).isType;
v0.removeTemporaryGlobals = function()
    l_isType_0(nil);
    return (function()
    end)();
end;
return v0;


local v0 = {
    DEV = require(script.DEV).default
};
local l_removeTemporaryGlobals_0 = require(script.graphql).removeTemporaryGlobals;
v0.removeTemporaryGlobals = l_removeTemporaryGlobals_0;
v0.NULL = require(script.null).NULL;
l_removeTemporaryGlobals_0();
return v0;


local l_Boolean_0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill).Boolean;
local v1 = {
    __value = "null"
};
return {
    NULL = v1,
    toJSBoolean = function(v2)
        return l_Boolean_0.toJSBoolean(v2) and v2 ~= v1;
    end
};


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Array_0 = require(l_Parent_1.LuauPolyfill).Array;
local l_visit_0 = require(l_Parent_1.GraphQL).visit;
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local v6 = nil;
v0.shouldInclude = function(v7, v8)
    local l_directives_0 = v7.directives;
    if not l_directives_0 or #l_directives_0 == 0 then
        return true;
    else
        return l_Array_0.every(v6(l_directives_0), function(v10)
            local l_directive_0 = v10.directive;
            local l_ifArgument_0 = v10.ifArgument;
            local v13 = false;
            if l_ifArgument_0.value.kind == "Variable" then
                local v14 = false;
                if v8 ~= nil then
                    v14 = v8[l_ifArgument_0.value.name.value];
                end;
                v13 = v14;
                l_invariant_0(v13 ~= nil, ("Invalid variable referenced in @%s directive."):format(l_directive_0.name.value));
            else
                v13 = l_ifArgument_0.value.value;
            end;
            if l_directive_0.name.value == "skip" then
                return not v13;
            else
                return v13;
            end;
        end);
    end;
end;
local function v19(v15)
    local v16 = {};
    l_visit_0(v15, {
        Directive = function(_, v18)
            table.insert(v16, v18.name.value);
        end
    });
    return v16;
end;
v0.getDirectiveNames = v19;
v0.hasDirectives = function(v20, v21)
    return l_Array_0.some(v19(v21), function(v22)
        return l_Array_0.indexOf(v20, v22) > -1;
    end);
end;
v0.hasClientExports = function(v23)
    local v24 = false;
    if v23 ~= nil then
        local v25 = {
            "client"
        };
        local l_v25_0 = v25 --[[ copy: 2 -> 3 ]];
        v24 = l_Array_0.some(v19(v23), function(v27)
            return l_Array_0.indexOf(l_v25_0, v27) > -1;
        end);
        if v24 then
            v25 = {
                "export"
            };
            v24 = l_Array_0.some(v19(v23), function(v28)
                return l_Array_0.indexOf(v25, v28) > -1;
            end);
        end;
    end;
    return v24;
end;
local function _(v29)
    local l_value_0 = v29.name.value;
    local v31 = true;
    if l_value_0 ~= "skip" then
        v31 = l_value_0 == "include";
    end;
    return v31;
end;
v6 = function(v33)
    local v34 = {};
    if v33 and #v33 > 0 then
        l_Array_0.forEach(v33, function(v35)
            local l_value_1 = v35.name.value;
            local v37 = true;
            if l_value_1 ~= "skip" then
                v37 = l_value_1 == "include";
            end;
            if v37 then
                v37 = v35.arguments;
                l_value_1 = v35.name.value;
                if not v37 or #v37 ~= 1 then
                    l_invariant_0(false, ("Incorrect number of arguments for the @%s directive."):format(l_value_1));
                end;
                local v38 = v37[1];
                if not v38.name or v38.name.value ~= "if" then
                    l_invariant_0(false, ("Invalid argument for the @%s directive."):format(l_value_1));
                end;
                local l_value_2 = v38.value;
                if not l_value_2 or l_value_2.kind ~= "Variable" and l_value_2.kind ~= "BooleanValue" then
                    l_invariant_0(false, ("Argument for the @%s directive must be a variable or a boolean value."):format(l_value_1));
                end;
                table.insert(v34, {
                    directive = v35,
                    ifArgument = v38
                });
                return ;
            else
                return ;
            end;
        end);
    end;
    return v34;
end;
v0.getInclusionDirectives = v6;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_Object_0 = v2.Object;
local v6 = {};
local _ = require(l_Parent_1.GraphQL);
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local l_Error_0 = v2.Error;
v6.getFragmentQueryDocument = function(v10, v11)
    local l_v11_0 = v11;
    local v13 = {};
    l_Array_0.forEach(v10.definitions, function(v14)
        if v14.kind == "OperationDefinition" then
            error(l_Error_0.new(("Found a %s operation%s. "):format(tostring(v14.operation), not l_Boolean_0.toJSBoolean(v14.name) and "" or (" named '%s'"):format((tostring(v14.name.value)))) .. "No operations are allowed when using a fragment as a query. Only fragments are allowed."));
        end;
        if v14.kind == "FragmentDefinition" then
            table.insert(v13, v14);
        end;
    end);
    if typeof(l_v11_0) == "nil" then
        l_invariant_0(#v13 == 1, string.format("Found %s fragments. `fragmentName` must be provided when there is not exactly 1 fragment.", (tostring(#v13))));
        l_v11_0 = v13[1].name.value;
    end;
    return (l_Object_0.assign({}, v10, {
        definitions = l_Array_0.concat({}, {
            {
                kind = "OperationDefinition",
                operation = "query",
                selectionSet = {
                    kind = "SelectionSet",
                    selections = {
                        {
                            kind = "FragmentSpread",
                            name = {
                                kind = "Name",
                                value = l_v11_0
                            }
                        }
                    }
                }
            }
        }, v10.definitions)
    }));
end;
v6.createFragmentMap = function(v15)
    local v16 = if v15 ~= nil then v15 else {};
    local v17 = {};
    l_Array_0.forEach(v16, function(v18)
        v17[v18.name.value] = v18;
    end);
    return v17;
end;
v6.getFragmentFromSelection = function(v19, v20)
    local l_kind_0 = v19.kind;
    if l_kind_0 == "InlineFragment" then
        return v19;
    elseif l_kind_0 == "FragmentSpread" then
        local v22 = v20 and v20[v19.name.value];
        l_invariant_0(v22, ("No fragment named %s."):format(v19.name.value));
        return v22;
    else
        return nil;
    end;
end;
return v6;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v3.Array;
local l_Boolean_0 = v3.Boolean;
local _ = require(l_Parent_1.GraphQL);
local v7 = require(l_Parent_0.jsutils.invariant);
local l_invariant_0 = v7.invariant;
local l_InvariantError_0 = v7.InvariantError;
local l_valueToObjectRepresentation_0 = require(script.Parent.storeUtils).valueToObjectRepresentation;
local function v15(v11)
    l_invariant_0(v11 and v11.kind == "Document", "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql");
    local v14 = l_Array_0.map(l_Array_0.filter(v11.definitions, function(v12)
        return v12.kind ~= "FragmentDefinition";
    end), function(v13)
        if v13.kind ~= "OperationDefinition" then
            error(l_InvariantError_0.new(("Schema type definitions not allowed in queries. Found: \"%s\""):format(v13.kind)));
        end;
        return v13;
    end);
    l_invariant_0(#v14 <= 1, ("Ambiguous GraphQL document: contains %s operations"):format((tostring(#v14))));
    return v11;
end;
v0.checkDocument = v15;
v0.getOperationDefinition = function(v16)
    v15(v16);
    return l_Array_0.filter(v16.definitions, function(v17)
        return v17.kind == "OperationDefinition";
    end)[1];
end;
v0.getOperationName = function(v18)
    local v21 = l_Array_0.map(l_Array_0.filter(v18.definitions, function(v19)
        if not l_Boolean_0.toJSBoolean(v19.kind == "OperationDefinition") then
            return v19.kind == "OperationDefinition";
        else
            return v19.name;
        end;
    end), function(v20)
        return (not not l_Boolean_0.toJSBoolean(v20) and l_Boolean_0.toJSBoolean(v20.name)) and v20.name.value or nil;
    end);
    return not not l_Boolean_0.toJSBoolean(v21[1]) and v21[1] or nil;
end;
v0.getFragmentDefinitions = function(v22)
    return (l_Array_0.filter(v22.definitions, function(v23)
        return v23.kind == "FragmentDefinition";
    end));
end;
v0.getQueryDefinition = function(v24)
    v15(v24);
    local v26 = l_Array_0.filter(v24.definitions, function(v25)
        return v25.kind == "OperationDefinition";
    end)[1];
    l_invariant_0(l_Boolean_0.toJSBoolean(v26) and v26.operation == "query", "Must contain a query definition.");
    return v26;
end;
v0.getFragmentDefinition = function(v27)
    l_invariant_0(v27.kind == "Document", "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql");
    l_invariant_0(#v27.definitions <= 1, "Fragment must have exactly one definition.");
    local v28 = v27.definitions[1];
    l_invariant_0(v28.kind == "FragmentDefinition", "Must be a fragment definition.");
    return v28;
end;
v0.getMainDefinition = function(v29)
    v15(v29);
    local v30 = nil;
    for _, v32 in ipairs(v29.definitions) do
        if v32.kind == "OperationDefinition" then
            local l_operation_0 = v32.operation;
            if not (l_operation_0 ~= "query" and l_operation_0 ~= "mutation") or l_operation_0 == "subscription" then
                return v32;
            end;
        end;
        if not (not (v32.kind == "FragmentDefinition") or l_Boolean_0.toJSBoolean(v30)) then
            v30 = v32;
        end;
    end;
    if not l_Boolean_0.toJSBoolean(v30) then
        error(l_InvariantError_0.new("Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment."));
        return ;
    else
        return v30;
    end;
end;
v0.getDefaultValues = function(v34)
    local v35 = {};
    local v36 = nil;
    v36 = if v34 ~= nil then v34.variableDefinitions else nil;
    if v36 ~= nil and #v36 > 0 then
        l_Array_0.forEach(v36, function(v37)
            if l_Boolean_0.toJSBoolean(v37.defaultValue) then
                l_valueToObjectRepresentation_0(v35, v37.variable.name, v37.defaultValue);
            end;
        end);
    end;
    return v35;
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Object_0 = v2.Object;
local l_HttpService_0 = game:GetService("HttpService");
local v6 = {};
local v7 = nil;
local v8 = nil;
local v9 = nil;
local _ = require(script.Parent.types);
local _ = require(l_Parent_1.GraphQL);
local l_InvariantError_0 = require(l_Parent_0.jsutils.invariant).InvariantError;
local l_isNonNullObject_0 = require(script.Parent.Parent.common.objects).isNonNullObject;
local v14 = require(script.Parent.fragments);
local v15 = require(l_Parent_0.luaUtils.objectKeysForEach);
local l_getFragmentFromSelection_0 = v14.getFragmentFromSelection;
v6.makeReference = function(v17)
    return {
        __ref = tostring(v17)
    };
end;
v6.isReference = function(v18)
    local v19 = false;
    if type(v18) == "table" then
        v19 = type(v18.__ref) == "string";
    end;
    return v19;
end;
v6.isDocumentNode = function(v20)
    local v21 = l_isNonNullObject_0(v20);
    if v21 then
        v21 = false;
        if v20.kind == "Document" then
            v21 = l_Array_0.isArray(v20.definitions);
        end;
    end;
    return v21;
end;
local function _(v22)
    return v22.kind == "StringValue";
end;
local function _(v24)
    return v24.kind == "BooleanValue";
end;
local function _(v26)
    return v26.kind == "IntValue";
end;
local function _(v28)
    return v28.kind == "FloatValue";
end;
local function _(v30)
    return v30.kind == "Variable";
end;
local function _(v32)
    return v32.kind == "ObjectValue";
end;
local function _(v34)
    return v34.kind == "ListValue";
end;
local function _(v36)
    return v36.kind == "EnumValue";
end;
local function _(v38)
    return v38.kind == "NullValue";
end;
local function v40(v41, v42, v43, v44)
    if not (v43.kind == "IntValue") and not (v43.kind == "FloatValue") then
        if not (v43.kind == "BooleanValue") and not (v43.kind == "StringValue") then
            if not (v43.kind == "ObjectValue") then
                if not (v43.kind == "Variable") then
                    if not (v43.kind == "ListValue") then
                        if not (v43.kind == "EnumValue") then
                            if not (v43.kind == "NullValue") then
                                error(l_InvariantError_0.new(tostring(("The inline argument \"%s\" of kind \"%s\""):format(v42.value, v43.kind)) .. "is not supported. Use variables instead of inline arguments to " .. "overcome this limitation."));
                                return ;
                            else
                                v41[v42.value] = nil;
                                return ;
                            end;
                        else
                            v41[v42.value] = v43.value;
                            return ;
                        end;
                    else
                        v41[v42.value] = l_Array_0.map(v43.values, function(v45)
                            local v46 = {};
                            v40(v46, v42, v45, v44);
                            return v46[v42.value];
                        end);
                        return ;
                    end;
                else
                    v41[v42.value] = (v44 or {})[v43.name.value];
                    return ;
                end;
            else
                local v47 = {};
                l_Array_0.map(v43.fields, function(v48)
                    v40(v47, v48.name, v48.value, v44);
                    return nil;
                end);
                v41[v42.value] = v47;
                return ;
            end;
        else
            v41[v42.value] = v43.value;
            return ;
        end;
    else
        v41[v42.value] = tonumber(v43.value);
        return ;
    end;
end;
v6.valueToObjectRepresentation = v40;
v6.storeKeyNameFromField = function(v49, v50)
    local v51 = nil;
    if v49.directives then
        v51 = {};
        l_Array_0.forEach(v49.directives, function(v52)
            v51[v52.name.value] = {};
            if v52.arguments then
                l_Array_0.forEach(v52.arguments, function(v53)
                    v40(v51[v52.name.value], v53.name, v53.value, v50);
                end);
            end;
        end);
    end;
    local v54 = nil;
    if v49.arguments and #v49.arguments > 0 then
        v54 = {};
        l_Array_0.forEach(v49.arguments, function(v55)
            v40(v54, v55.name, v55.value, v50);
        end);
    end;
    return v7(v49.name.value, v54, v51);
end;
local v56 = {
    "connection",
    "include",
    "skip",
    "client",
    "rest",
    "export"
};
v7 = l_Object_0.assign(setmetatable({}, {
    __call = function(_, v58, v59, v60)
        if ((not v59 or not v60) or not v60.connection) or not v60.connection.key then
            local l_v58_0 = v58;
            if v59 then
                l_v58_0 = l_v58_0 .. ("(%s)"):format((v8(v59)));
            end;
            if v60 then
                v15(v60, function(v62)
                    if l_Array_0.indexOf(v56, v62) ~= -1 then
                        return ;
                    elseif v60[v62] and next(v60[v62]) ~= nil then
                        l_v58_0 = l_v58_0 .. ("@%s(%s)"):format(v62, v8(v60[v62]));
                        return ;
                    else
                        l_v58_0 = l_v58_0 .. ("@%s"):format(v62);
                        return ;
                    end;
                end);
            end;
            return l_v58_0;
        elseif v60.connection.filter and #v60.connection.filter > 0 then
            local v63 = nil;
            v63 = if not v60.connection.filter then {} else v60.connection.filter;
            l_Array_0.sort(v63, nil);
            local v64 = {};
            l_Array_0.forEach(v63, function(v65)
                v64[v65] = v59[v65];
            end);
            return ("%s(%s)"):format(v60.connection.key, v8(v64));
        else
            return v60.connection.key;
        end;
    end
}), {
    setStringify = function(_, v67)
        local l_v8_0 = v8;
        v8 = v67;
        return l_v8_0;
    end
});
v6.getStoreKeyName = v7;
v8 = function(v69)
    if l_isNonNullObject_0(v69) then
        local v71 = l_Array_0.map(l_Array_0.sort(l_Object_0.keys(v69), nil), function(v70)
            return {
                v70,
                v8(v69[v70])
            };
        end);
        if not l_Array_0.isArray(v69) then
            return ("{%s}"):format(l_Array_0.join(l_Array_0.map(v71, function(v72)
                return ("\"%s\":%s"):format(v72[1], v72[2]);
            end), ","));
        else
            return ("[%s]"):format(l_Array_0.join(l_Array_0.map(v71, function(v73)
                return v73[2];
            end), ","));
        end;
    else
        return l_HttpService_0:JSONEncode(v69);
    end;
end;
v6.argumentsObjectFromField = function(v74, v75)
    if v74.arguments and #v74.arguments > 0 then
        local v76 = {};
        l_Array_0.forEach(v74.arguments, function(v77)
            v40(v76, v77.name, v77.value, v75);
        end);
        return v76;
    else
        return nil;
    end;
end;
v6.resultKeyNameFromField = function(v78)
    if not v78.alias then
        return v78.name.value;
    else
        return v78.alias.value;
    end;
end;
local function v79(v80, v81, v82)
    if typeof(v80.__typename) == "string" then
        return v80.__typename;
    else
        for _, v84 in ipairs(v81.selections) do
            if not v9(v84) then
                local v85 = v79(v80, l_getFragmentFromSelection_0(v84, v82).selectionSet, v82);
                if typeof(v85) == "string" then
                    return v85;
                end;
            elseif v84.name.value == "__typename" then
                return v80[if not v84.alias then v84.name.value else v84.alias.value];
            end;
        end;
        return nil;
    end;
end;
v6.getTypenameFromResult = v79;
v9 = function(v86)
    return v86.kind == "Field";
end;
v6.isField = v9;
v6.isInlineFragment = function(v87)
    return v87.kind == "InlineFragment";
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Object_0 = v2.Object;
local l_Boolean_0 = v2.Boolean;
local l_String_0 = v2.String;
local v7 = {};
local v8 = require(l_Parent_1.GraphQL);
local l_visit_0 = v8.visit;
local l_REMOVE_0 = v8.REMOVE;
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local v12 = require(script.Parent.getFromAST);
local l_checkDocument_0 = v12.checkDocument;
local l_getOperationDefinition_0 = v12.getOperationDefinition;
local l_getFragmentDefinition_0 = v12.getFragmentDefinition;
local l_getFragmentDefinitions_0 = v12.getFragmentDefinitions;
local l_getMainDefinition_0 = v12.getMainDefinition;
local l_filterInPlace_0 = require(script.Parent.Parent.common.filterInPlace).filterInPlace;
local v19 = require(script.Parent.storeUtils);
local l_isField_0 = v19.isField;
local l_isInlineFragment_0 = v19.isInlineFragment;
local function _(v22)
    local v23 = {};
    l_Array_0.forEach(v22, function(v24)
        v23[v24.name.value] = v24;
    end);
    return v23;
end;
local v26 = nil;
local v27 = nil;
local v28 = nil;
local v29 = nil;
local v30 = {
    kind = "Field",
    name = {
        kind = "Name",
        value = "__typename"
    }
};
local function v31(v32, v33)
    return l_Array_0.every(v32.selectionSet.selections, function(v34)
        local v35 = false;
        if v34.kind == "FragmentSpread" then
            v35 = v31(v33[v34.name.value], v33);
        end;
        return v35;
    end, nil);
end;
local function _(v36)
    local v37 = l_getOperationDefinition_0(v36) or l_getFragmentDefinition_0(v36);
    local v38 = l_getFragmentDefinitions_0(v36);
    local v39 = {};
    l_Array_0.forEach(v38, function(v40)
        v39[v40.name.value] = v40;
    end);
    local l_v39_0 = v39;
    if not l_Array_0.every(v37.selectionSet.selections, function(v42)
        local v43 = false;
        if v42.kind == "FragmentSpread" then
            v43 = v31(l_v39_0[v42.name.value], l_v39_0);
        end;
        return v43;
    end, nil) then
        return v36;
    else
        return nil;
    end;
end;
local function _(v45)
    return function(v46)
        return l_Array_0.some(v45, function(v47)
            local v48;
            if l_Boolean_0.toJSBoolean(v47.name) then
                v48 = true;
                if not (v47.name ~= v46.name.value) then
                    goto label0;
                end;
            end;
            v48 = l_Boolean_0.toJSBoolean(v47.test) and v47:test(v46);
            ::label0::;
            return v48;
        end);
    end;
end;
local function v91(v50, v51)
    local v52 = {};
    local v53 = {};
    local v54 = {};
    local v55 = {};
    local v80 = l_visit_0(v51, {
        Variable = {
            enter = function(_, v57, _, v59)
                if v59.kind ~= "VariableDefinition" then
                    v52[v57.name.value] = true;
                end;
                return nil;
            end
        },
        Field = {
            enter = function(_, v61)
                if not (((not l_Boolean_0.toJSBoolean(v50) or not l_Boolean_0.toJSBoolean(v61.directives)) or not l_Array_0.some(v50, function(v62)
                    return v62.remove;
                end)) or not v61.directives) then
                    local l_some_0 = l_Array_0.some;
                    local l_directives_0 = v61.directives;
                    local l_v50_0 = v50;
                    if l_some_0(l_directives_0, function(v66)
                        return l_Array_0.some(l_v50_0, function(v67)
                            local v68;
                            if l_Boolean_0.toJSBoolean(v67.name) then
                                v68 = true;
                                if not (v67.name ~= v66.name.value) then
                                    goto label1;
                                end;
                            end;
                            v68 = l_Boolean_0.toJSBoolean(v67.test) and v67:test(v66);
                            ::label1::;
                            return v68;
                        end);
                    end) then
                        if v61.arguments then
                            l_Array_0.forEach(v61.arguments, function(v69)
                                if v69.value.kind == "Variable" then
                                    table.insert(v53, {
                                        name = v69.value.name.value
                                    });
                                end;
                            end);
                        end;
                        if v61.selectionSet then
                            l_Array_0.forEach(v29(v61.selectionSet), function(v70)
                                table.insert(v55, {
                                    name = v70.name.value
                                });
                            end);
                        end;
                        return l_REMOVE_0;
                    end;
                end;
                return nil;
            end
        },
        FragmentSpread = {
            enter = function(_, v72)
                v54[v72.name.value] = true;
            end
        },
        Directive = {
            enter = function(_, v74)
                local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
                local l_v50_1 = v50;
                if not l_toJSBoolean_0((function(v77)
                    return l_Array_0.some(l_v50_1, function(v78)
                        local v79;
                        if l_Boolean_0.toJSBoolean(v78.name) then
                            v79 = true;
                            if not (v78.name ~= v77.name.value) then
                                goto label2;
                            end;
                        end;
                        v79 = l_Boolean_0.toJSBoolean(v78.test) and v78:test(v77);
                        ::label2::;
                        return v79;
                    end);
                end)(v74)) then
                    return nil;
                else
                    return l_REMOVE_0;
                end;
            end
        }
    });
    local v81 = l_getOperationDefinition_0(v80) or l_getFragmentDefinition_0(v80);
    local v82 = l_getFragmentDefinitions_0(v80);
    local v83 = {};
    l_Array_0.forEach(v82, function(v84)
        v83[v84.name.value] = v84;
    end);
    local l_v83_0 = v83;
    local v88 = if not l_Array_0.every(v81.selectionSet.selections, function(v86)
        local v87 = false;
        if v86.kind == "FragmentSpread" then
            v87 = v31(l_v83_0[v86.name.value], l_v83_0);
        end;
        return v87;
    end, nil) then v80 else nil;
    if not (not l_Boolean_0.toJSBoolean(v88) or not l_Boolean_0.toJSBoolean(#l_filterInPlace_0(v53, function(v89)
        return not not l_Boolean_0.toJSBoolean(v89.name) and not v52[v89.name];
    end))) then
        v88 = v27(v53, v88);
    end;
    if not (not l_Boolean_0.toJSBoolean(v88) or not l_Boolean_0.toJSBoolean(#l_filterInPlace_0(v55, function(v90)
        return not not l_Boolean_0.toJSBoolean(v90.name) and not v54[v90.name];
    end))) then
        v88 = v28(v55, v88);
    end;
    return v88;
end;
v7.removeDirectivesFromDocument = v91;
v7.addTypenameToDocument = l_Object_0.assign(setmetatable({}, {
    __call = function(_, v93)
        return l_visit_0(l_checkDocument_0(v93), {
            SelectionSet = {
                enter = function(_, v95, _, v97)
                    if l_Boolean_0.toJSBoolean(v97) and v97.kind == "OperationDefinition" then
                        return ;
                    else
                        local l_selections_0 = v95.selections;
                        if l_Boolean_0.toJSBoolean(l_selections_0) then
                            if not l_Array_0.some(l_selections_0, function(v99)
                                local v100 = l_isField_0(v99);
                                if v100 then
                                    v100 = true;
                                    if v99.name.value ~= "__typename" then
                                        v100 = l_String_0.lastIndexOf(v99.name.value, "__", 1) == 1;
                                    end;
                                end;
                                return v100;
                            end) then
                                if (not l_isField_0(v97) or not l_Boolean_0.toJSBoolean(v97.directives)) or not l_Boolean_0.toJSBoolean(l_Array_0.some(v97.directives, function(v101)
                                    return v101.name.value == "export";
                                end)) then
                                    return l_Object_0.assign({}, v95, {
                                        selections = l_Array_0.concat({}, l_selections_0, {
                                            v30
                                        })
                                    });
                                else
                                    return ;
                                end;
                            else
                                return ;
                            end;
                        else
                            return ;
                        end;
                    end;
                end
            }
        });
    end
}), {
    added = function(_, v103)
        return v103 == v30;
    end
});
local v108 = {
    test = function(_, v105)
        local v106 = v105.name.value == "connection";
        if not (not v106 or l_Boolean_0.toJSBoolean(v105.arguments) and not l_Array_0.some(v105.arguments, function(v107)
            return v107.name.value == "key";
        end)) then
            l_invariant_0.warn("Removing an @connection directive even though it does not have a key. " .. "You may want to use the key parameter to specify a store key.");
        end;
        return v106;
    end
};
v7.removeConnectionDirectiveFromDocument = function(v109)
    return (v91({
        v108
    }, l_checkDocument_0(v109)));
end;
local function _(v110, v111, v112)
    if v112 == nil then
        v112 = true;
    end;
    return not not v111 and (v111.selections and l_Array_0.some(v111.selections, function(v113)
        return v26(v110, v113, v112);
    end) or false);
end;
v26 = function(v115, v116, v117)
    if v117 == nil then
        v117 = true;
    end;
    if l_isField_0(v116) then
        if v116.directives then
            local v121 = l_Array_0.some(v116.directives, function(v118)
                return l_Array_0.some(v115, function(v119)
                    local v120;
                    if l_Boolean_0.toJSBoolean(v119.name) then
                        v120 = true;
                        if not (v119.name ~= v118.name.value) then
                            goto label4;
                        end;
                    end;
                    v120 = l_Boolean_0.toJSBoolean(v119.test) and v119:test(v118);
                    ::label4::;
                    return v120;
                end);
            end);
            if not v121 then
                if v117 then
                    local l_selectionSet_0 = v116.selectionSet;
                    local l_v117_0 = v117;
                    if l_v117_0 == nil then
                        l_v117_0 = true;
                    end;
                    do
                        local l_l_v117_0_0 = l_v117_0;
                        v121 = not not l_selectionSet_0 and (l_selectionSet_0.selections and l_Array_0.some(l_selectionSet_0.selections, function(v125)
                            return v26(v115, v125, l_l_v117_0_0);
                        end) or false);
                    end;
                    if v121 then
                        goto label3;
                    end;
                end;
                v121 = false;
            end;
            ::label3::;
            return v121;
        else
            return false;
        end;
    else
        return true;
    end;
end;
local function _(v126)
    return function(v127)
        return l_Array_0.some(v126, function(v128)
            local v129;
            if not (not (v127.value and v127.value.kind == "Variable") or not v127.value.name) then
                v129 = true;
                if v128.name ~= v127.value.name.value then
                    if v128.test then
                        v129 = v128:test(v127);
                        if v129 then
                            goto label5;
                        end;
                    end;
                else
                    goto label5;
                end;
            end;
            v129 = false;
            ::label5::;
            return v129;
        end);
    end;
end;
v27 = function(v131, v132)
    local function v136(v133)
        return l_Array_0.some(v131, function(v134)
            local v135;
            if not (not (v133.value and v133.value.kind == "Variable") or not v133.value.name) then
                v135 = true;
                if v134.name ~= v133.value.name.value then
                    if v134.test then
                        v135 = v134:test(v133);
                        if v135 then
                            goto label6;
                        end;
                    end;
                else
                    goto label6;
                end;
            end;
            v135 = false;
            ::label6::;
            return v135;
        end);
    end;
    local v148 = l_visit_0(v132, {
        OperationDefinition = {
            enter = function(_, v138)
                return l_Object_0.assign({}, v138, {
                    variableDefinitions = not not v138.variableDefinitions and l_Array_0.filter(v138.variableDefinitions, function(v139)
                        return not l_Array_0.some(v131, function(v140)
                            return v140.name == v139.variable.name.value;
                        end);
                    end) or {}
                });
            end
        },
        Field = {
            enter = function(_, v142)
                if l_Array_0.some(v131, function(v143)
                    return v143.remove;
                end) then
                    local v144 = 0;
                    if v142.arguments then
                        l_Array_0.forEach(v142.arguments, function(v145)
                            if v136(v145) then
                                v144 = v144 + 1;
                            end;
                        end);
                    end;
                    if v144 == 1 then
                        return l_REMOVE_0;
                    else
                        --[[ close >= 3 ]]
                    end;
                end;
                return nil;
            end
        },
        Argument = {
            enter = function(_, v147)
                if not l_Boolean_0.toJSBoolean(v136(v147)) then
                    return nil;
                else
                    return l_REMOVE_0;
                end;
            end
        }
    });
    local v149 = l_getOperationDefinition_0(v148) or l_getFragmentDefinition_0(v148);
    local v150 = l_getFragmentDefinitions_0(v148);
    local v151 = {};
    l_Array_0.forEach(v150, function(v152)
        v151[v152.name.value] = v152;
    end);
    local l_v151_0 = v151;
    if not l_Array_0.every(v149.selectionSet.selections, function(v154)
        local v155 = false;
        if v154.kind == "FragmentSpread" then
            v155 = v31(l_v151_0[v154.name.value], l_v151_0);
        end;
        return v155;
    end, nil) then
        return v148;
    else
        return nil;
    end;
end;
v7.removeArgumentsFromDocument = v27;
v28 = function(v156, v157)
    local function v161(_, v159)
        if not l_Array_0.some(v156, function(v160)
            return v160.name == v159.name.value;
        end) then
            return nil;
        else
            return l_REMOVE_0;
        end;
    end;
    local v162 = l_visit_0(v157, {
        FragmentSpread = {
            enter = v161
        },
        FragmentDefinition = {
            enter = v161
        }
    });
    local v163 = l_getOperationDefinition_0(v162) or l_getFragmentDefinition_0(v162);
    local v164 = l_getFragmentDefinitions_0(v162);
    local v165 = {};
    l_Array_0.forEach(v164, function(v166)
        v165[v166.name.value] = v166;
    end);
    local l_v165_0 = v165;
    if not l_Array_0.every(v163.selectionSet.selections, function(v168)
        local v169 = false;
        if v168.kind == "FragmentSpread" then
            v169 = v31(l_v165_0[v168.name.value], l_v165_0);
        end;
        return v169;
    end, nil) then
        return v162;
    else
        return nil;
    end;
end;
v7.removeFragmentSpreadFromDocument = v28;
v29 = function(v170)
    local v171 = {};
    l_Array_0.forEach(v170.selections, function(v172)
        if not l_isField_0(v172) and not l_isInlineFragment_0(v172) or not v172.selectionSet then
            if v172.kind == "FragmentSpread" then
                table.insert(v171, v172);
            end;
            return ;
        else
            l_Array_0.forEach(v29(v172.selectionSet), function(v173)
                table.insert(v171, v173);
            end);
            return ;
        end;
    end);
    return v171;
end;
v7.buildQueryFromSelectionSet = function(v174)
    if l_getMainDefinition_0(v174).operation == "query" then
        return v174;
    else
        return (l_visit_0(v174, {
            OperationDefinition = {
                enter = function(_, v176)
                    return l_Object_0.assign({}, v176, {
                        operation = "query"
                    });
                end
            }
        }));
    end;
end;
v7.removeClientSetsFromDocument = function(v177)
    l_checkDocument_0(v177);
    local v180 = v91({
        {
            test = function(_, v179)
                return v179.name.value == "client";
            end,
            remove = true
        }
    }, v177);
    if l_Boolean_0.toJSBoolean(v180) then
        v180 = l_visit_0(v180, {
            FragmentDefinition = {
                enter = function(_, v182)
                    if not v182.selectionSet or not l_Boolean_0.toJSBoolean((l_Array_0.every(v182.selectionSet.selections, function(v183)
                        return l_isField_0(v183) and v183.name.value == "__typename";
                    end))) then
                        return nil;
                    else
                        return l_REMOVE_0;
                    end;
                end
            }
        });
    end;
    return v180;
end;
return v7;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.GraphQL);
return {};


local v0 = {};
local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_invariant_0 = require(l_Parent_0.jsutils.invariant).invariant;
local l_DEV_0 = require(script.globals).DEV;
l_invariant_0(typeof(l_DEV_0) == "boolean", (tostring(l_DEV_0)));
v0.DEV = l_DEV_0;
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
v0.NULL = require(script.globals).NULL;
local v6 = require(script.graphql.directives);
v0.shouldInclude = v6.shouldInclude;
v0.hasDirectives = v6.hasDirectives;
v0.hasClientExports = v6.hasClientExports;
v0.getDirectiveNames = v6.getDirectiveNames;
v0.getInclusionDirectives = v6.getInclusionDirectives;
local v7 = require(script.graphql.fragments);
v0.createFragmentMap = v7.createFragmentMap;
v0.getFragmentQueryDocument = v7.getFragmentQueryDocument;
v0.getFragmentFromSelection = v7.getFragmentFromSelection;
local v8 = require(script.graphql.getFromAST);
v0.checkDocument = v8.checkDocument;
v0.getOperationDefinition = v8.getOperationDefinition;
v0.getOperationName = v8.getOperationName;
v0.getFragmentDefinitions = v8.getFragmentDefinitions;
v0.getQueryDefinition = v8.getQueryDefinition;
v0.getFragmentDefinition = v8.getFragmentDefinition;
v0.getMainDefinition = v8.getMainDefinition;
v0.getDefaultValues = v8.getDefaultValues;
local v9 = require(script.graphql.storeUtils);
v0.makeReference = v9.makeReference;
v0.isDocumentNode = v9.isDocumentNode;
v0.isReference = v9.isReference;
v0.isField = v9.isField;
v0.isInlineFragment = v9.isInlineFragment;
v0.valueToObjectRepresentation = v9.valueToObjectRepresentation;
v0.storeKeyNameFromField = v9.storeKeyNameFromField;
v0.argumentsObjectFromField = v9.argumentsObjectFromField;
v0.resultKeyNameFromField = v9.resultKeyNameFromField;
v0.getStoreKeyName = v9.getStoreKeyName;
v0.getTypenameFromResult = v9.getTypenameFromResult;
local v10 = require(script.graphql.transform);
v0.addTypenameToDocument = v10.addTypenameToDocument;
v0.buildQueryFromSelectionSet = v10.buildQueryFromSelectionSet;
v0.removeDirectivesFromDocument = v10.removeDirectivesFromDocument;
v0.removeConnectionDirectiveFromDocument = v10.removeConnectionDirectiveFromDocument;
v0.removeArgumentsFromDocument = v10.removeArgumentsFromDocument;
v0.removeFragmentSpreadFromDocument = v10.removeFragmentSpreadFromDocument;
v0.removeClientSetsFromDocument = v10.removeClientSetsFromDocument;
local v11 = require(script.policies.pagination);
v0.concatPagination = v11.concatPagination;
v0.offsetLimitPagination = v11.offsetLimitPagination;
v0.relayStylePagination = v11.relayStylePagination;
v0.Observable = require(script.observables.Observable).Observable;
l_Object_0.assign(v0, require(script.common.mergeDeep));
l_Object_0.assign(v0, require(script.common.cloneDeep));
l_Object_0.assign(v0, require(script.common.maybeDeepFreeze));
l_Object_0.assign(v0, require(script.common.stringifyForDisplay));
l_Object_0.assign(v0, require(script.observables.iteration));
l_Object_0.assign(v0, require(script.observables.asyncMap));
l_Object_0.assign(v0, (require(script.observables.Concast)));
l_Object_0.assign(v0, require(script.observables.subclassing));
l_Object_0.assign(v0, require(script.common.arrays));
l_Object_0.assign(v0, require(script.common.objects));
l_Object_0.assign(v0, require(script.common.errorHandling));
l_Object_0.assign(v0, require(script.common.canUse));
l_Object_0.assign(v0, require(script.common.compact));
l_Object_0.assign(v0, require(script.common.makeUniqueId));
return v0;


local v0 = {};
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.LuauPolyfill);
local l_Boolean_0 = v2.Boolean;
local l_Set_0 = v2.Set;
local l_Array_0 = v2.Array;
local l_Error_0 = v2.Error;
local v7 = require(l_Parent_0.Promise);
local v8 = {};
local l_Observable_0 = require(script.Parent.Observable).Observable;
local l_iterateObserversSafely_0 = require(script.Parent.iteration).iterateObserversSafely;
local l_fixObservableSubclass_0 = require(script.Parent.subclassing).fixObservableSubclass;
local function _(v12)
    return l_Boolean_0.toJSBoolean(v12) and typeof(v12.andThen) == "function";
end;
local v14 = setmetatable({}, {
    __index = l_Observable_0
});
v14.__index = v14;
v14.new = function(v15)
    local v16 = nil;
    v16 = setmetatable(l_Observable_0.new(function(v17)
        v16:addObserver(v17);
        return function()
            return v16:removeObserver(v17);
        end;
    end), v14);
    v16.observers = l_Set_0.new();
    v16.sub = v8;
    v16.source = {};
    v16.latest = nil;
    v16.addCount = 0;
    v16.promise = v7.new(function(v18, v19)
        v16.resolve = function(_, ...)
            v18(...);
        end;
        v16.reject = function(_, ...)
            v19(...);
        end;
    end);
    v16.handlers = {
        next = function(_, v23)
            if v16.sub ~= nil then
                v16.latest = {
                    "next",
                    v23
                };
                l_iterateObserversSafely_0(v16.observers, "next", v23);
            end;
        end,
        error = function(_, v25)
            local l_sub_0 = v16.sub;
            if l_sub_0 ~= nil then
                if l_Boolean_0.toJSBoolean(l_sub_0) then
                    v7.delay(0):andThen(function()
                        return l_sub_0:unsubscribe();
                    end);
                end;
                v16.sub = nil;
                v16.latest = {
                    "error",
                    v25
                };
                v16:reject(v25);
                l_iterateObserversSafely_0(v16.observers, "error", v25);
            end;
        end,
        complete = function(_)
            if v16.sub ~= nil then
                local v28 = table.remove(v16.sources, 1);
                if l_Boolean_0.toJSBoolean(v28) then
                    if not (l_Boolean_0.toJSBoolean(v28) and typeof(v28.andThen) == "function") then
                        v16.sub = v28:subscribe(v16.handlers);
                    else
                        v28:andThen(function(v29)
                            v16.sub = v29:subscribe(v16.handlers);
                        end);
                        return ;
                    end;
                else
                    v16.sub = nil;
                    if v16.latest ~= nil and v16.latest[1] == "next" then
                        v16:resolve(v16.latest[2]);
                    else
                        v16:resolve();
                    end;
                    l_iterateObserversSafely_0(v16.observers, "complete");
                    return ;
                end;
            end;
        end
    };
    v16.cancel = function(_, v31)
        v16:reject(v31);
        v16.sources = {};
        v16.handlers:complete();
    end;
    v16.promise:catch(function()
    end);
    if typeof(v15) == "function" then
        v15 = {
            l_Observable_0.new(v15)
        };
    end;
    local l_v15_0 = v15;
    if not (l_Boolean_0.toJSBoolean(l_v15_0) and typeof(l_v15_0.andThen) == "function") then
        v16:start(v15);
    else
        v15:andThen(function(v33)
            v16:start(v33);
        end, function(...)
            v16.handlers:error(...);
        end);
    end;
    return v16;
end;
v14.start = function(v34, v35)
    if v34.sub ~= v8 then
        return ;
    else
        v34.sources = l_Array_0.from(v35);
        v34.handlers:complete();
        return ;
    end;
end;
v14.deliverLastMessage = function(v36, v37)
    if l_Boolean_0.toJSBoolean(v36.latest) then
        local v38 = v36.latest[1];
        local v39 = v37[v38];
        if l_Boolean_0.toJSBoolean(v39) then
            v39(v37, v36.latest[2]);
        end;
        if (v36.sub == nil and v38 == "next") and v37.complete ~= nil then
            v37:complete();
        end;
    end;
end;
v14.addObserver = function(v40, v41)
    if not v40.observers:has(v41) then
        v40:deliverLastMessage(v41);
        v40.observers:add(v41);
        v40.addCount = v40.addCount + 1;
    end;
end;
v14.removeObserver = function(v42, v43, v44)
    if v42.observers:delete(v43) then
        v42.addCount = v42.addCount - 1;
        if not (not (v42.addCount < 1) or v44) then
            v42.handlers:error(l_Error_0.new("Observable cancelled prematurely"));
        end;
    end;
end;
v14.cleanup = function(v45, v46)
    local v47 = false;
    local v48 = nil;
    local function v49()
        if not v47 then
            v47 = true;
            v45.observers:delete(v48);
            v46();
        end;
    end;
    v48 = {
        next = v49,
        error = v49,
        complete = v49
    };
    local l_addCount_0 = v45.addCount;
    v45:addObserver(v48);
    v45.addCount = l_addCount_0;
end;
v14.of = function(...)
    return l_Observable_0.of(v14, ...);
end;
v14.from = function(...)
    return l_Observable_0.from(v14, ...);
end;
v0.Concast = v14;
l_fixObservableSubclass_0(v14);
return v0;


return {
    Observable = require(script.Parent.Parent.Parent.Parent.ZenObservable).Observable
};


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local v2 = require(l_Parent_0.Promise);
local v3 = {};
local l_Observable_0 = require(script.Parent.Observable).Observable;
v3.asyncMap = function(v5, v6, v7)
    return l_Observable_0.new(function(v8)
        local v9 = nil;
        local l_next_0 = v8.next;
        local l_error_0 = v8.error;
        local l_complete_0 = v8.complete;
        local v13 = 0;
        local v14 = false;
        local v18 = {
            andThen = function(_, v16)
                return v2.new(function(v17)
                    return v17(v16());
                end);
            end
        };
        local _ = function(v19, v20)
            if not l_Boolean_0.toJSBoolean(v19) then
                return function(_, v22)
                    if l_Boolean_0.toJSBoolean(v20) then
                        v20(v8, v22);
                    end;
                end;
            else
                return function(_, v24)
                    v13 = v13 + 1;
                    local function v25()
                        return v19(v24);
                    end;
                    v18 = v18:andThen(function()
                        return v2.delay(0);
                    end):andThen(v25, v25):andThen(function(v26)
                        v13 = v13 - 1;
                        if l_Boolean_0.toJSBoolean(l_next_0) then
                            l_next_0(v8, v26);
                        end;
                        if l_Boolean_0.toJSBoolean(v14) then
                            v9.complete();
                        end;
                    end, function(v27)
                        v13 = v13 - 1;
                        error(v27);
                    end):catch(function(v28)
                        if not l_Boolean_0.toJSBoolean(l_error_0) then
                            return ;
                        else
                            return l_error_0(v8, v28);
                        end;
                    end);
                end;
            end;
        end;
        local v30 = {};
        local l_v6_0 = v6;
        local l_l_v6_0_0 = l_v6_0 --[[ copy: 11 -> 12 ]];
        v30.next = not l_Boolean_0.toJSBoolean(l_v6_0) and function(_, v34)
            if l_Boolean_0.toJSBoolean(l_next_0) then
                l_next_0(v8, v34);
            end;
        end or function(_, v36)
            v13 = v13 + 1;
            local function v37()
                return l_l_v6_0_0(v36);
            end;
            v18 = v18:andThen(function()
                return v2.delay(0);
            end):andThen(v37, v37):andThen(function(v38)
                v13 = v13 - 1;
                if l_Boolean_0.toJSBoolean(l_next_0) then
                    l_next_0(v8, v38);
                end;
                if l_Boolean_0.toJSBoolean(v14) then
                    v9.complete();
                end;
            end, function(v39)
                v13 = v13 - 1;
                error(v39);
            end):catch(function(v40)
                if not l_Boolean_0.toJSBoolean(l_error_0) then
                    return ;
                else
                    return l_error_0(v8, v40);
                end;
            end);
        end;
        l_v6_0 = v7;
        v30.error = not l_Boolean_0.toJSBoolean(l_v6_0) and function(_, v42)
            if l_Boolean_0.toJSBoolean(l_error_0) then
                l_error_0(v8, v42);
            end;
        end or function(_, v44)
            v13 = v13 + 1;
            local function v45()
                return l_v6_0(v44);
            end;
            v18 = v18:andThen(function()
                return v2.delay(0);
            end):andThen(v45, v45):andThen(function(v46)
                v13 = v13 - 1;
                if l_Boolean_0.toJSBoolean(l_next_0) then
                    l_next_0(v8, v46);
                end;
                if l_Boolean_0.toJSBoolean(v14) then
                    v9.complete();
                end;
            end, function(v47)
                v13 = v13 - 1;
                error(v47);
            end):catch(function(v48)
                if not l_Boolean_0.toJSBoolean(l_error_0) then
                    return ;
                else
                    return l_error_0(v8, v48);
                end;
            end);
        end;
        v30.complete = function()
            v14 = true;
            if not (l_Boolean_0.toJSBoolean(v13) or not l_Boolean_0.toJSBoolean(l_complete_0)) then
                l_complete_0(v8);
            end;
        end;
        v9 = v30;
        v30 = v5:subscribe(v9);
        return function()
            return v30:unsubscribe();
        end;
    end);
end;
return v3;


local l_Array_0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill).Array;
local v1 = {};
local _ = require(script.Parent.Observable);
v1.iterateObserversSafely = function(v3, v4, v5)
    local v6 = {};
    v3:forEach(function(v7)
        if v7[v4] ~= nil then
            table.insert(v6, v7);
        end;
    end);
    l_Array_0.forEach(v6, function(v8)
        v8[v4](v8, v5);
    end);
end;
return v1;


local v0 = {};
local _ = require(script.Parent.Parent.Parent.Parent.LuauPolyfill);
local l_Observable_0 = require(script.Parent.Observable).Observable;
v0.fixObservableSubclass = function(v3)
    local function _(v4)
        v3[v4] = l_Observable_0;
    end;
    v3["@@species"] = l_Observable_0;
    return v3;
end;
return v0;


local v0 = {};
local v1 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill);
local l_Boolean_0 = v1.Boolean;
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local function v9(v5, v6)
    local v7 = {};
    l_Array_0.forEach(v6, function(v8)
        v7[v8] = l_Object_0.None;
    end);
    return l_Object_0.assign({}, v5, v7);
end;
local _ = require(script.Parent.Parent.Parent.cache.inmemory.policies_types);
local _ = require(script.Parent.Parent.graphql.storeUtils);
local l_mergeDeep_0 = require(script.Parent.Parent.common.mergeDeep).mergeDeep;
local v13 = nil;
local v14 = nil;
local v15 = nil;
v0.concatPagination = function(v16)
    if v16 == nil then
        v16 = false;
    end;
    return {
        keyArgs = v16,
        merge = function(_, v18, v19)
            if not v18 then
                return v19;
            else
                return (l_Array_0.concat(v18, v19));
            end;
        end
    };
end;
v0.offsetLimitPagination = function(v20)
    if v20 == nil then
        v20 = false;
    end;
    return {
        keyArgs = v20,
        merge = function(_, v22, v23, v24)
            local l_args_0 = v24.args;
            local v26 = nil;
            v26 = if v22 ~= nil then l_Array_0.slice(v22, 1) else {};
            if l_args_0 ~= nil then
                local v27 = nil;
                v27 = l_args_0.offset == nil and 0 or l_args_0.offset;
                for v28 = 1, #v23 do
                    v26[v27 + v28] = v23[v28];
                end;
                return v26;
            else
                return (l_Array_0.concat(v26, v23));
            end;
        end
    };
end;
v0.relayStylePagination = function(v29)
    if v29 == nil then
        v29 = false;
    end;
    return {
        keyArgs = v29,
        read = function(_, v31, v32)
            if v31 then
                local v33 = {};
                local v34 = "";
                local v35 = "";
                l_Array_0.forEach(v31.edges, function(v36)
                    if v32:canRead(v32:readField("node", v36)) then
                        table.insert(v33, v36);
                        if v36.cursor then
                            v34 = (not not l_Boolean_0.toJSBoolean(v34) and v34 or v36.cursor) or "";
                            v35 = not not l_Boolean_0.toJSBoolean(v36.cursor) and v36.cursor or v35;
                        end;
                    end;
                end);
                local l_pageInfo_0 = v31.pageInfo;
                local v38 = l_pageInfo_0 and l_pageInfo_0.startCursor;
                local v39 = l_pageInfo_0 and l_pageInfo_0.endCursor;
                return l_Object_0.assign({}, v13(v31), {
                    edges = v33,
                    pageInfo = l_Object_0.assign({}, v31.pageInfo, {
                        startCursor = not not l_Boolean_0.toJSBoolean(v38) and v38 or v34,
                        endCursor = not not l_Boolean_0.toJSBoolean(v39) and v39 or v35
                    })
                });
            else
                return ;
            end;
        end,
        merge = function(_, v41, v42, v43)
            if v41 == nil then
                v41 = v14();
            end;
            local l_v41_0 = v41;
            local l_args_1 = v43.args;
            local v46 = nil;
            v46 = if not v42.edges then {} else l_Array_0.map(v42.edges, function(v47)
                local v48 = l_Object_0.assign({
                    cursor = ""
                }, v47);
                if v43:isReference(v48) then
                    v48.cursor = v43:readField("cursor", v48);
                end;
                return v48;
            end);
            if v42.pageInfo then
                local l_pageInfo_1 = v42.pageInfo;
                local l_startCursor_0 = l_pageInfo_1.startCursor;
                local l_endCursor_0 = l_pageInfo_1.endCursor;
                local v52 = v46[1];
                local v53 = v46[#v46];
                if not (not v52 or not l_startCursor_0) then
                    v52.cursor = l_startCursor_0;
                end;
                if not (not v53 or not l_endCursor_0) then
                    v53.cursor = l_endCursor_0;
                end;
                local v54 = v52 and v52.cursor;
                if not (not v54 or l_startCursor_0) then
                    v42 = l_mergeDeep_0(v42, {
                        pageInfo = {
                            startCursor = v54
                        }
                    });
                end;
                local v55 = v53 and v53.cursor;
                if not (not v55 or l_endCursor_0) then
                    v42 = l_mergeDeep_0(v42, {
                        pageInfo = {
                            endCursor = v55
                        }
                    });
                end;
            end;
            local l_edges_0 = l_v41_0.edges;
            local v57 = {};
            if not (l_args_1 ~= nil) or not l_args_1.after then
                if not (l_args_1 ~= nil) or not l_Boolean_0.toJSBoolean(l_args_1.before) then
                    if l_Boolean_0.toJSBoolean(v42.edges) then
                        l_edges_0 = {};
                    end;
                else
                    local v59 = l_Array_0.findIndex(l_edges_0, function(v58)
                        return v58.cursor == l_args_1.before;
                    end);
                    v57 = if v59 < 0 then l_edges_0 else l_Array_0.slice(l_edges_0, v59);
                    l_edges_0 = {};
                end;
            else
                local v61 = l_Array_0.findIndex(l_edges_0, function(v60)
                    return v60.cursor == l_args_1.after;
                end);
                if v61 >= 1 then
                    l_edges_0 = l_Array_0.slice(l_edges_0, 1, v61 + 1);
                end;
            end;
            local v62 = l_Array_0.concat(l_edges_0, v46, v57);
            local v63 = l_Object_0.assign({}, v42.pageInfo, l_v41_0.pageInfo);
            if v42.pageInfo then
                local v64 = nil;
                local v65 = nil;
                local v66 = nil;
                local v67 = nil;
                local _ = nil;
                local l_pageInfo_2 = v42.pageInfo;
                v64 = l_pageInfo_2.hasPreviousPage;
                v65 = l_pageInfo_2.hasNextPage;
                v66 = l_pageInfo_2.startCursor;
                v67 = l_pageInfo_2.endCursor;
                l_Object_0.assign(v63, (l_Object_0.assign({}, l_pageInfo_2, {
                    hasPreviousPage = l_Object_0.None,
                    hasNextPage = l_Object_0.None,
                    startCursor = l_Object_0.None,
                    endCursor = l_Object_0.None
                })));
                if not l_Boolean_0.toJSBoolean(#l_edges_0) then
                    if v64 ~= nil then
                        v63.hasPreviousPage = v64;
                    end;
                    if v66 ~= nil then
                        v63.startCursor = v66;
                    end;
                end;
                if not l_Boolean_0.toJSBoolean(#v57) then
                    if v65 ~= nil then
                        v63.hasNextPage = v65;
                    end;
                    if v67 ~= nil then
                        v63.endCursor = v67;
                    end;
                end;
            end;
            return l_Object_0.assign({}, v13(l_v41_0), v13(v42), {
                edges = v62,
                pageInfo = v63
            });
        end
    };
end;
v13 = function(v70)
    return v9(v70, v15);
end;
v15 = {
    "edges",
    "pageInfo"
};
v14 = function()
    return {
        edges = {},
        pageInfo = {
            hasPreviousPage = false,
            hasNextPage = true,
            startCursor = "",
            endCursor = ""
        }
    };
end;
return v0;


local v0 = require(script.Parent.Parent.Parent.Parent.LuauPolyfill);
local v1 = {};
local l_Slot_0 = require(script.Parent.slot).Slot;
v1.Slot = l_Slot_0;
local l_bind_0 = l_Slot_0.bind;
local l_noContext_0 = l_Slot_0.noContext;
v1.bind = l_bind_0;
v1.noContext = l_noContext_0;
local l_setTimeout_0 = v0.setTimeout;
v1.setTimeout = function(v6, v7)
    return l_setTimeout_0(l_bind_0(v6), v7);
end;
return v1;