local C=require(script.Parent.Parent.None)local Z=require(script.Parent.copyDeep)local function J(...)local N={}for F=1,select("\035",...),1 do local z=select(F,...)for F,z in pairs(z)do if z==C then N[F]=nil elseif type(z)=="\116\097\098\108\101"then if N[F]==nil or type(N[F]~="\116\097\098\108\101")then N[F]=Z(z)else N[F]=J(N[F],z)end else N[F]=z end end end return N end return J

local None = require(script.Parent.Parent.None)
local copyDeep = require(script.Parent.copyDeep)

local function joinDeep(...)
	local new = {}

	for dictionaryIndex = 1, select("#", ...) do
		local dictionary = select(dictionaryIndex, ...)

		for k, v in pairs(dictionary) do
			if v == None then
				new[k] = nil
			elseif type(v) == "table" then
				if new[k] == nil or type(new[k] ~= "table") then
					new[k] = copyDeep(v)
				else
					new[k] = joinDeep(new[k], v)
				end
			else
				new[k] = v
			end
		end
	end

	return new
end

return joinDeep