local function N(N,u)local v={}for N,u in ipairs(u)do v[u]=u end return setmetatable(v,{__index=function(u,v)error(string.format("\037\115 \105\115 \110\111\116 \105\110 \037\115\033",v,N),2)end,__newindex=function()error(string.format("\067\114\101\097\116\105\110\103 \110\101\119 \109\101\109\098\101\114\115 \105\110 \037\115 \105\115 \110\111\116 \097\108\108\111\119\101\100\033",N),2)end})end

local function makeEnum(enumName, members)
	local enum = {}

	for _, memberName in ipairs(members) do
		enum[memberName] = memberName
	end

	return setmetatable(enum, {
		__index = function(_, k)
			error(string.format("%s is not in %s!", k, enumName), 2)
		end,
		__newindex = function()
			error(string.format("Creating new members in %s is not allowed!", enumName), 2)
		end,
	})
end
