local function deep(t)
  local new = {}
  for k, v in pairs(t) do
    local ty = type(v)
    if ty == "table" then
      new[k] = deep(v)
    else
      new[k] = v
    end
  end
  return new
end
local shallow = function(t)
  local new = {}
  for k, v in pairs(t) do
    new[k] = v
  end
  return new
end
return {deep = deep, shallow = shallow}
