Module:qhv-noun/data

From Linguifex
Jump to navigation Jump to search


local sub = mw.ustring.sub

local function lengthen(v)
	local switch = {["a"] = "ā", ["e"] = "ē", ["i"] = "ī", ["o"] = "ō", ["u"] = "ū", ["y"] = "ȳ"}
	return switch[v] or v
end

local alldata = {}

alldata["1-l"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["1-l"], {__call = function(self, args, data)
	local stem = args[1]
	local i = sub(stem, -1) == "i"
	local stemi = sub(stem, 1, -2)
	data.decl_type = "lunar first-declension"
	table.insert(data.categories, "High Valyrian first-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "a"}
	data.forms["acc_sg"] = {stem .. "e"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ā"}
	data.forms["ins_sg"] = {i and stemi .. "ȳsa" or stem .. "osa"}
	data.forms["com_sg"] = {i and stemi .. "ȳma" or stem .. "oma"}
	data.forms["voc_sg"] = {i and stemi .. "ȳs" or stem .. "us"}

	if not args.nopl then
		data.forms["nom_pl"] = {i and stemi .. "ī" or stem .. "i"}
		data.forms["acc_pl"] = {i and stemi .. "ī" or stem .. "ī"}
		data.forms["gen_pl"] = {i and stemi .. "ȳti" or stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {i and stemi .. "ȳssi" or stem .. "ossi"}
		data.forms["com_pl"] = {i and stemi .. "ȳmmi" or stem .. "ommi"}
		data.forms["voc_pl"] = {i and stemi .. "īs" or stem .. "is"}
		
		data.forms["nom_pa"] = {i and stemi .. "ȳn" or stem .. "un"}
		data.forms["acc_pa"] = {i and stemi .. "ȳni" or stem .. "uni"}
		data.forms["gen_pa"] = {i and stemi .. "ȳno" or stem .. "uno"}
		data.forms["dat_pa"] = {i and stemi .. "ȳnta" or stem .. "unta"}
		data.forms["loc_pa"] = {i and stemi .. "ȳnna" or stem .. "unna"}
		data.forms["ins_pa"] = {i and stemi .. "ȳssa" or stem .. "ussa"}
		data.forms["com_pa"] = {i and stemi .. "ȳmma" or stem .. "umma"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ar"}
		data.forms["acc_co"] = {stem .. "ari"}
		data.forms["gen_co"] = {stem .. "aro"}
		data.forms["dat_co"] = {stem .. "arta"}
		data.forms["loc_co"] = {stem .. "arra"}
		data.forms["ins_co"] = {stem .. "arza"}
		data.forms["com_co"] = {stem .. "arma"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["-illa"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["-illa"], {__call = function(self, args, data)
	local stem = args[1]
	local i = sub(stem, -1) == "i"
	local stemi = sub(stem, 1, -2)
	data.decl_type = "aquatic first-declension"
	table.insert(data.categories, "High Valyrian first-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "a"}
	data.forms["acc_sg"] = {stem .. "e"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ā"}
	data.forms["ins_sg"] = {i and stemi .. "ȳsa" or stem .. "osa"}
	data.forms["com_sg"] = {i and stemi .. "ȳma" or stem .. "oma"}
	data.forms["voc_sg"] = {i and stemi .. "ȳs" or stem .. "us"}

	if not args.nopl then
		data.forms["nom_pl"] = {i and stemi .. "ī" or stem .. "i"}
		data.forms["acc_pl"] = {i and stemi .. "ī" or stem .. "ī"}
		data.forms["gen_pl"] = {i and stemi .. "ȳti" or stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {i and stemi .. "ȳssi" or stem .. "ossi"}
		data.forms["com_pl"] = {i and stemi .. "ȳmmi" or stem .. "ommi"}
		data.forms["voc_pl"] = {i and stemi .. "īs" or stem .. "is"}
		
		data.forms["nom_pa"] = {i and stemi .. "ȳn" or stem .. "un"}
		data.forms["acc_pa"] = {i and stemi .. "ȳni" or stem .. "uni"}
		data.forms["gen_pa"] = {i and stemi .. "ȳno" or stem .. "uno"}
		data.forms["dat_pa"] = {i and stemi .. "ȳnta" or stem .. "unta"}
		data.forms["loc_pa"] = {i and stemi .. "ȳnna" or stem .. "unna"}
		data.forms["ins_pa"] = {i and stemi .. "ȳssa" or stem .. "ussa"}
		data.forms["com_pa"] = {i and stemi .. "ȳmma" or stem .. "umma"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ar"}
		data.forms["acc_co"] = {stem .. "ari"}
		data.forms["gen_co"] = {stem .. "aro"}
		data.forms["dat_co"] = {stem .. "arta"}
		data.forms["loc_co"] = {stem .. "arra"}
		data.forms["ins_co"] = {stem .. "arza"}
		data.forms["com_co"] = {stem .. "arma"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["1-a"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["1-a"], {__call = function(self, args, data)
	local stem = args[1]
	local v = sub(stem, -2, -2)
	local stemr = (sub(stem, -1) == "m" and sub(stem, 1, -3) .. lengthen(v) .. "b"
					or sub(stem, -1) == "n" and sub(stem, 1, -3) .. lengthen(v) .. "d"
					or stem)
	data.decl_type = "aquatic first-declension"
	table.insert(data.categories, "High Valyrian first-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "ar"}
	data.forms["acc_sg"] = {stemr .. "ri"}
	data.forms["gen_sg"] = {stemr .. "ro"}
	data.forms["dat_sg"] = {stemr .. "rot"}
	data.forms["loc_sg"] = {stem .. "ār"}
	data.forms["ins_sg"] = {stemr .. "rosa"}
	data.forms["com_sg"] = {stemr .. "roma"}
	data.forms["voc_sg"] = {stem .. "us"}

	if not args.nopl then
		data.forms["nom_pl"] = {stemr .. "ri"}
		data.forms["acc_pl"] = {stemr .. "rī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stemr .. "rossi"}
		data.forms["com_pl"] = {stemr .. "rommi"}
		data.forms["voc_pl"] = {stem .. "is"}
		
		data.forms["nom_pa"] = {stemr .. "run"}
		data.forms["acc_pa"] = {stemr .. "runi"}
		data.forms["gen_pa"] = {stemr .. "runo"}
		data.forms["dat_pa"] = {stemr .. "runta"}
		data.forms["loc_pa"] = {stemr .. "runna"}
		data.forms["ins_pa"] = {stemr .. "russa"}
		data.forms["com_pa"] = {stemr .. "rumma"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stemr .. "rar"}
		data.forms["acc_co"] = {stemr .. "rari"}
		data.forms["gen_co"] = {stemr .. "raro"}
		data.forms["dat_co"] = {stemr .. "rarta"}
		data.forms["loc_co"] = {stemr .. "rarra"}
		data.forms["ins_co"] = {stemr .. "rarza"}
		data.forms["com_co"] = {stemr .. "rarma"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["p-1"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["p-1"], {__call = function(self, args, data)
	local stem = args[1]
	local i = sub(stem, -1) == "i"
	local stemi = sub(stem, 1, -2)
	data.decl_type = "sixth-declension"
	table.insert(data.categories, "High Valyrian sixth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {i and stemi .. "ȳn" or stem .. "un"}
	data.forms["acc_sg"] = {i and stemi .. "ȳni" or stem .. "uni"}
	data.forms["gen_sg"] = {i and stemi .. "ȳno" or stem .. "uno"}
	data.forms["dat_sg"] = {i and stemi .. "ȳnta" or stem .. "unta"}
	data.forms["loc_sg"] = {i and stemi .. "ȳnna" or stem .. "unna"}
	data.forms["ins_sg"] = {i and stemi .. "ȳssa" or stem .. "ussa"}
	data.forms["com_sg"] = {i and stemi .. "ȳmma" or stem .. "umma"}
	data.forms["voc_sg"] = data.forms["ins_sg"]

	if not args.nopl then
		data.forms["nom_pl"] = {i and stemi .. "y" or stem .. "i"}
		data.forms["acc_pl"] = {i and stemi .. "ī" or stem .. "ī"}
		data.forms["gen_pl"] = {}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {}
		data.forms["com_pl"] = {}
		data.forms["voc_pl"] = {}
	end
end
})

alldata["2-l"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["2-l"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "lunar second-declension"
	table.insert(data.categories, "High Valyrian second-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "y"}
	data.forms["acc_sg"] = {stem .. "i"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ȳ"}
	data.forms["ins_sg"] = {stem .. "omy"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "i"}
		data.forms["acc_pl"] = {stem .. "ī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = {stem .. "ī"}
		data.forms["ins_pl"] = {stem .. "ommi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "ys"}
		
		data.forms["nom_pa"] = {stem .. "yn"}
		data.forms["acc_pa"] = {stem .. "yni"}
		data.forms["gen_pa"] = {stem .. "yno"}
		data.forms["dat_pa"] = {stem .. "ynty"}
		data.forms["loc_pa"] = {stem .. "ynny"}
		data.forms["ins_pa"] = {stem .. "yssy"}
		data.forms["com_pa"] = {stem .. "ymmy"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "yr"}
		data.forms["acc_co"] = {stem .. "yri"}
		data.forms["gen_co"] = {stem .. "yro"}
		data.forms["dat_co"] = {stem .. "yrty"}
		data.forms["loc_co"] = {stem .. "yrry"}
		data.forms["ins_co"] = {stem .. "yrzy"}
		data.forms["com_co"] = {stem .. "yrmy"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["2-s"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["2-s"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "solar second-declension"
	table.insert(data.categories, "High Valyrian second-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "ys"}
	data.forms["acc_sg"] = {stem .. "i"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ȳ"}
	data.forms["ins_sg"] = {stem .. "omy"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "yssy"}
		data.forms["acc_pl"] = {stem .. "ī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = {stem .. "ī"}
		data.forms["ins_pl"] = {stem .. "ommi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "yssys"}
		
		data.forms["nom_pa"] = {stem .. "yn"}
		data.forms["acc_pa"] = {stem .. "yni"}
		data.forms["gen_pa"] = {stem .. "yno"}
		data.forms["dat_pa"] = {stem .. "ynty"}
		data.forms["loc_pa"] = {stem .. "ynny"}
		data.forms["ins_pa"] = {stem .. "yssy"}
		data.forms["com_pa"] = {stem .. "ymmy"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "yr"}
		data.forms["acc_co"] = {stem .. "yri"}
		data.forms["gen_co"] = {stem .. "yro"}
		data.forms["dat_co"] = {stem .. "yrty"}
		data.forms["loc_co"] = {stem .. "yrry"}
		data.forms["ins_co"] = {stem .. "yrzy"}
		data.forms["com_co"] = {stem .. "yrmy"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-l"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-l"], {__call = function(self, args, data)
	local stem = args[1]
	local i = sub(stem, -1) == "i"
	local stemi = sub(stem, 1, -2)
	data.decl_type = "lunar third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "o"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "ō"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {i and stemi .. "ȳso" or stem .. "oso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {stem .. "os"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "a"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {i and stemi .. "ȳti" or stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {i and stemi .. "ȳssi" or stem .. "ossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {i and stemi .. "īs" or stem .. "as"}
		
		data.forms["nom_pa"] = {i and stemi .. "ȳn" or stem .. "un"}
		data.forms["acc_pa"] = {i and stemi .. "ȳni" or stem .. "uni"}
		data.forms["gen_pa"] = {i and stemi .. "ȳno" or stem .. "uno"}
		data.forms["dat_pa"] = {i and stemi .. "ȳnto" or stem .. "unto"}
		data.forms["loc_pa"] = {i and stemi .. "ȳnno" or stem .. "unno"}
		data.forms["ins_pa"] = {i and stemi .. "ȳsso" or stem .. "usso"}
		data.forms["com_pa"] = {i and stemi .. "ȳmmo" or stem .. "ummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "or"}
		data.forms["acc_co"] = {i and stemi .. "ȳri" or stem .. "ori"}
		data.forms["gen_co"] = {i and stemi .. "ȳro" or stem .. "oro"}
		data.forms["dat_co"] = {i and stemi .. "ȳrto" or stem .. "orto"}
		data.forms["loc_co"] = {i and stemi .. "ȳrro" or stem .. "orro"}
		data.forms["ins_co"] = {i and stemi .. "ȳrzo" or stem .. "orzo"}
		data.forms["com_co"] = {i and stemi .. "ȳrmo" or stem .. "ormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-s"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-s"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "os"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {stem .. "oso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "ossa"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "ossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "ossas"}
		
		data.forms["nom_pa"] = {stem .. "un"}
		data.forms["acc_pa"] = {stem .. "uni"}
		data.forms["gen_pa"] = {stem .. "uno"}
		data.forms["dat_pa"] = {stem .. "unto"}
		data.forms["loc_pa"] = {stem .. "unno"}
		data.forms["ins_pa"] = {stem .. "usso"}
		data.forms["com_pa"] = {stem .. "ummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "or"}
		data.forms["acc_co"] = {stem .. "ori"}
		data.forms["gen_co"] = {stem .. "oro"}
		data.forms["dat_co"] = {stem .. "orto"}
		data.forms["loc_co"] = {stem .. "orro"}
		data.forms["ins_co"] = {stem .. "orzo"}
		data.forms["com_co"] = {stem .. "ormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-s-k"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-s-k"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "k-stem solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")
	table.insert(data.categories, "High Valyrian k-stem " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "ks"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "ko"}
	data.forms["dat_sg"] = {stem .. "kot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {stem .. "kso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "kossa"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "koti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "kossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "kossas"}
		
		data.forms["nom_pa"] = {stem .. "kun"}
		data.forms["acc_pa"] = {stem .. "kuni"}
		data.forms["gen_pa"] = {stem .. "kuno"}
		data.forms["dat_pa"] = {stem .. "kunto"}
		data.forms["loc_pa"] = {stem .. "kunno"}
		data.forms["ins_pa"] = {stem .. "kusso"}
		data.forms["com_pa"] = {stem .. "kummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "kor"}
		data.forms["acc_co"] = {stem .. "kori"}
		data.forms["gen_co"] = {stem .. "koro"}
		data.forms["dat_co"] = {stem .. "korto"}
		data.forms["loc_co"] = {stem .. "korro"}
		data.forms["ins_co"] = {stem .. "korzo"}
		data.forms["com_co"] = {stem .. "kormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-s-v"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-s-v"], {__call = function(self, args, data)
	local stem = nil and "" or args[1]
	data.decl_type = "v-stem solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")
	table.insert(data.categories, "High Valyrian v-stem " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "ȳs"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "yvo"}
	data.forms["dat_sg"] = {stem .. "yvot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {stem .. "ȳso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "yvossa"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "yvoti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "yvossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "yvossas"}
		
		data.forms["nom_pa"] = {stem .. "yvun"}
		data.forms["acc_pa"] = {stem .. "yvuni"}
		data.forms["gen_pa"] = {stem .. "yvuno"}
		data.forms["dat_pa"] = {stem .. "yvunto"}
		data.forms["loc_pa"] = {stem .. "yvunno"}
		data.forms["ins_pa"] = {stem .. "yvusso"}
		data.forms["com_pa"] = {stem .. "yvummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "yvor"}
		data.forms["acc_co"] = {stem .. "yvori"}
		data.forms["gen_co"] = {stem .. "yvoro"}
		data.forms["dat_co"] = {stem .. "yvorto"}
		data.forms["loc_co"] = {stem .. "yvorro"}
		data.forms["ins_co"] = {stem .. "yvorzo"}
		data.forms["com_co"] = {stem .. "yvormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-s-h"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-s-h"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "h-stem solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")
	table.insert(data.categories, "High Valyrian h-stem " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "s"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "ho"}
	data.forms["dat_sg"] = {stem .. "hot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {stem .. "so"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "hossa"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "hoti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "hossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "hossas"}
		
		data.forms["nom_pa"] = {stem .. "hun"}
		data.forms["acc_pa"] = {stem .. "huni"}
		data.forms["gen_pa"] = {stem .. "huno"}
		data.forms["dat_pa"] = {stem .. "hunto"}
		data.forms["loc_pa"] = {stem .. "hunno"}
		data.forms["ins_pa"] = {stem .. "husso"}
		data.forms["com_pa"] = {stem .. "hummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "hor"}
		data.forms["acc_co"] = {stem .. "hori"}
		data.forms["gen_co"] = {stem .. "horo"}
		data.forms["dat_co"] = {stem .. "horto"}
		data.forms["loc_co"] = {stem .. "horro"}
		data.forms["ins_co"] = {stem .. "horzo"}
		data.forms["com_co"] = {stem .. "hormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-t"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-t"], {__call = function(self, args, data)
	local stem = args[1]
	local i = sub(stem, -1) == "i"
	local stemi = sub(stem, 1, -2)
	data.decl_type = "terrestrial third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "on"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {i and stemi .. "ȳso" or stem .. "oso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {stem .. "os"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "a"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {i and stemi .. "ȳti" or stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {i and stemi .. "ȳssi" or stem .. "ossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {i and stemi .. "īs" or stem .. "as"}
		
		data.forms["nom_pa"] = {i and stemi .. "ȳn" or stem .. "un"}
		data.forms["acc_pa"] = {i and stemi .. "ȳni" or stem .. "uni"}
		data.forms["gen_pa"] = {i and stemi .. "ȳno" or stem .. "uno"}
		data.forms["dat_pa"] = {i and stemi .. "ȳnto" or stem .. "unto"}
		data.forms["loc_pa"] = {i and stemi .. "ȳnno" or stem .. "unno"}
		data.forms["ins_pa"] = {i and stemi .. "ȳsso" or stem .. "usso"}
		data.forms["com_pa"] = {i and stemi .. "ȳmmo" or stem .. "ummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "or"}
		data.forms["acc_co"] = {i and stemi .. "ȳndi" or stem .. "ondi"}
		data.forms["gen_co"] = {i and stemi .. "ȳndo" or stem .. "ondo"}
		data.forms["dat_co"] = data.forms["gen_co"]
		data.forms["loc_co"] = {i and stemi .. "ȳrro" or stem .. "orro"}
		data.forms["ins_co"] = {i and stemi .. "ȳrzo" or stem .. "orzo"}
		data.forms["com_co"] = {i and stemi .. "ȳrmo" or stem .. "ormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["3-a"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["3-a"], {__call = function(self, args, data)
	local stem = args[1]
	local v = sub(stem, -2, -2)
	local stemr = (sub(stem, -1) == "m" and sub(stem, 1, -3) .. lengthen(v) .. "b"
					or sub(stem, -1) == "n" and sub(stem, 1, -3) .. lengthen(v) .. "d"
					or stem)
	data.decl_type = "aquatic third-declension"
	table.insert(data.categories, "High Valyrian third-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "or"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stemr .. "ro"}
	data.forms["dat_sg"] = {stemr .. "rot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {stemr .. "roso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {stem .. "os"}

	if not args.nopl then
		data.forms["nom_pl"] = {stemr .. "ra"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stemr .. "roti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stemr .. "rossi"}
		data.forms["com_pl"] = data.forms["ins_pl"]
		data.forms["voc_pl"] = {stem .. "as"}
		
		data.forms["nom_pa"] = {stemr .. "run"}
		data.forms["acc_pa"] = {stemr .. "runi"}
		data.forms["gen_pa"] = {stemr .. "runo"}
		data.forms["dat_pa"] = {stemr .. "runto"}
		data.forms["loc_pa"] = {stemr .. "runno"}
		data.forms["ins_pa"] = {stemr .. "russo"}
		data.forms["com_pa"] = {stemr .. "rummo"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stemr .. "ror"}
		data.forms["acc_co"] = {stemr .. "rori"}
		data.forms["gen_co"] = {stemr .. "roro"}
		data.forms["dat_co"] = {stemr .. "rorto"}
		data.forms["loc_co"] = {stemr .. "rorro"}
		data.forms["ins_co"] = {stemr .. "rorzo"}
		data.forms["com_co"] = {stemr .. "rormo"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["4-l"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["4-l"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "lunar fourth-declension"
	table.insert(data.categories, "High Valyrian fourth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "e"}
	data.forms["acc_sg"] = {stem .. "ī"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ē"}
	data.forms["ins_sg"] = {stem .. "ose"}
	data.forms["com_sg"] = {stem .. "ome"}
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "i"}
		data.forms["acc_pl"] = {stem .. "ī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "ossi"}
		data.forms["com_pl"] = {stem .. "ommi"}
		data.forms["voc_pl"] = {stem .. "is"}
		
		data.forms["nom_pa"] = {stem .. "in"}
		data.forms["acc_pa"] = {stem .. "ini"}
		data.forms["gen_pa"] = {stem .. "ino"}
		data.forms["dat_pa"] = {stem .. "inte"}
		data.forms["loc_pa"] = {stem .. "inne"}
		data.forms["ins_pa"] = {stem .. "isse"}
		data.forms["com_pa"] = {stem .. "imme"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "er"}
		data.forms["acc_co"] = {stem .. "eri"}
		data.forms["gen_co"] = {stem .. "ero"}
		data.forms["dat_co"] = {stem .. "erte"}
		data.forms["loc_co"] = {stem .. "erre"}
		data.forms["ins_co"] = {stem .. "erze"}
		data.forms["com_co"] = {stem .. "erme"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["4-s"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["4-s"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "solar fourth-declension"
	table.insert(data.categories, "High Valyrian fourth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "es"}
	data.forms["acc_sg"] = {stem .. "ī"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ē"}
	data.forms["ins_sg"] = {stem .. "ose"}
	data.forms["com_sg"] = {stem .. "ome"}
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "esse"}
		data.forms["acc_pl"] = {stem .. "ī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "ossi"}
		data.forms["com_pl"] = {stem .. "ommi"}
		data.forms["voc_pl"] = {stem .. "esses"}
		
		data.forms["nom_pa"] = {stem .. "in"}
		data.forms["acc_pa"] = {stem .. "ini"}
		data.forms["gen_pa"] = {stem .. "ino"}
		data.forms["dat_pa"] = {stem .. "inte"}
		data.forms["loc_pa"] = {stem .. "inne"}
		data.forms["ins_pa"] = {stem .. "isse"}
		data.forms["com_pa"] = {stem .. "imme"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "er"}
		data.forms["acc_co"] = {stem .. "eri"}
		data.forms["gen_co"] = {stem .. "ero"}
		data.forms["dat_co"] = {stem .. "erte"}
		data.forms["loc_co"] = {stem .. "erre"}
		data.forms["ins_co"] = {stem .. "erze"}
		data.forms["com_co"] = {stem .. "erme"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["4-t"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["4-t"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "terrestrial fourth-declension"
	table.insert(data.categories, "High Valyrian fourth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "ien"}
	data.forms["acc_sg"] = {stem .. "ī"}
	data.forms["gen_sg"] = {stem .. "io"}
	data.forms["dat_sg"] = {stem .. "iot"}
	data.forms["loc_sg"] = {stem .. "iēn"}
	data.forms["ins_sg"] = {stem .. "ȳse"}
	data.forms["com_sg"] = {stem .. "ȳme"}
	data.forms["voc_sg"] = {stem .. "ies"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "ī"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "ȳti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "ȳssi"}
		data.forms["com_pl"] = {stem .. "ȳmmi"}
		data.forms["voc_pl"] = {stem .. "īs"}
		
		data.forms["nom_pa"] = {stem .. "ȳn"}
		data.forms["acc_pa"] = {stem .. "ȳni"}
		data.forms["gen_pa"] = {stem .. "ȳno"}
		data.forms["dat_pa"] = {stem .. "ȳnte"}
		data.forms["loc_pa"] = {stem .. "ȳnne"}
		data.forms["ins_pa"] = {stem .. "ȳsse"}
		data.forms["com_pa"] = {stem .. "ȳmme"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ior"}
		data.forms["acc_co"] = {stem .. "ȳndi"}
		data.forms["gen_co"] = {stem .. "ȳndo"}
		data.forms["dat_co"] = {stem .. "ȳnde"}
		data.forms["loc_co"] = {stem .. "ȳrre"}
		data.forms["ins_co"] = {stem .. "ȳrze"}
		data.forms["com_co"] = {stem .. "ȳrme"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["5-l"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["5-l"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "lunar fifth-declension"
	table.insert(data.categories, "High Valyrian fifth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "i"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "io"}
	data.forms["dat_sg"] = {stem .. "iot"}
	data.forms["loc_sg"] = {stem .. "ī"}
	data.forms["ins_sg"] = {stem .. "ȳsi"}
	data.forms["com_sg"] = {stem .. "ȳmi"}
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "a"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "ȳti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "ȳssi"}
		data.forms["com_pl"] = {stem .. "ȳmmi"}
		data.forms["voc_pl"] = {stem .. "as"}
		
		data.forms["nom_pa"] = {stem .. "in"}
		data.forms["acc_pa"] = {stem .. "ini"}
		data.forms["gen_pa"] = {stem .. "ino"}
		data.forms["dat_pa"] = {stem .. "inti"}
		data.forms["loc_pa"] = {stem .. "inni"}
		data.forms["ins_pa"] = {stem .. "issi"}
		data.forms["com_pa"] = {stem .. "immi"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ir"}
		data.forms["acc_co"] = {stem .. "iri"}
		data.forms["gen_co"] = {stem .. "iro"}
		data.forms["dat_co"] = {stem .. "irti"}
		data.forms["loc_co"] = {stem .. "irri"}
		data.forms["ins_co"] = {stem .. "irzi"}
		data.forms["com_co"] = {stem .. "irmi"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["5-s"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["5-s"], {__call = function(self, args, data)
	local stem = args[1]
	data.decl_type = "solar fifth-declension"
	table.insert(data.categories, "High Valyrian fifth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "is"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {stem .. "io"}
	data.forms["dat_sg"] = {stem .. "iot"}
	data.forms["loc_sg"] = {stem .. "ī"}
	data.forms["ins_sg"] = {stem .. "ȳsi"}
	data.forms["com_sg"] = {stem .. "ȳmi"}
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "issa"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {stem .. "ȳti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "ȳssi"}
		data.forms["com_pl"] = {stem .. "ȳmmi"}
		data.forms["voc_pl"] = {stem .. "issas"}
		
		data.forms["nom_pa"] = {stem .. "in"}
		data.forms["acc_pa"] = {stem .. "ini"}
		data.forms["gen_pa"] = {stem .. "ino"}
		data.forms["dat_pa"] = {stem .. "inti"}
		data.forms["loc_pa"] = {stem .. "inni"}
		data.forms["ins_pa"] = {stem .. "issi"}
		data.forms["com_pa"] = {stem .. "immi"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ir"}
		data.forms["acc_co"] = {stem .. "iri"}
		data.forms["gen_co"] = {stem .. "iro"}
		data.forms["dat_co"] = {stem .. "irti"}
		data.forms["loc_co"] = {stem .. "irri"}
		data.forms["ins_co"] = {stem .. "irzi"}
		data.forms["com_co"] = {stem .. "irmi"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["5-a"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["5-a"], {__call = function(self, args, data)
	local stem = args[1]
	local v = sub(stem, -2, -2)
	local stemr = (sub(stem, -1) == "m" and sub(stem, 1, -3) .. lengthen(v) .. "b"
					or sub(stem, -1) == "n" and sub(stem, 1, -3) .. lengthen(v) .. "d"
					or stem)
	local z = sub(stem, -2) == "rz"
	local stemz = sub(stem, 1, -3)
	data.decl_type = "aquatic fifth-declension"
	table.insert(data.categories, "High Valyrian fifth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "ir"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {z and stemz .. "rjio" or stemr .. "rio"}
	data.forms["dat_sg"] = {z and stemz .. "rjiot" or stemr .. "riot"}
	data.forms["loc_sg"] = {stem .. "īr"}
	data.forms["ins_sg"] = {z and stemz .. "rjȳsi" or stemr .. "ȳsi"}
	data.forms["com_sg"] = {z and stemz .. "rjȳmi" or stemr .. "ȳmi"}
	data.forms["voc_sg"] = {stem .. "ys"}

	if not args.nopl then
		data.forms["nom_pl"] = {z and stemz .. "rja" or stemr .. "ra"}
		data.forms["acc_pl"] = data.forms["nom_pl"]
		data.forms["gen_pl"] = {z and stemz .. "rjȳti" or stemr .. "rȳti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {z and stemz .. "rjȳssi" or stemr .. "rȳssi"}
		data.forms["com_pl"] = {z and stemz .. "rjȳmmi" or stemr .. "rȳmmi"}
		data.forms["voc_pl"] = {stem .. "as"}
		
		data.forms["nom_pa"] = {z and stemz .. "rjin" or stemr .. "rin"}
		data.forms["acc_pa"] = {z and stemz .. "rjini" or stemr .. "rini"}
		data.forms["gen_pa"] = {z and stemz .. "rjino" or stemr .. "rino"}
		data.forms["dat_pa"] = {z and stemz .. "rjinti" or stemr .. "rinti"}
		data.forms["loc_pa"] = {z and stemz .. "rjinni" or stemr .. "rinni"}
		data.forms["ins_pa"] = {z and stemz .. "rjissi" or stemr .. "rissi"}
		data.forms["com_pa"] = {z and stemz .. "rjimmi" or stemr .. "rimmi"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {z and stemz .. "rjir" or stemr .. "rir"}
		data.forms["acc_co"] = {z and stemz .. "rjiri" or stemr .. "riri"}
		data.forms["gen_co"] = {z and stemz .. "rjiro" or stemr .. "riro"}
		data.forms["dat_co"] = {z and stemz .. "rjirti" or stemr .. "rirti"}
		data.forms["loc_co"] = {z and stemz .. "rjirri" or stemr .. "rirri"}
		data.forms["ins_co"] = {z and stemz .. "rjirzi" or stemr .. "rirzi"}
		data.forms["com_co"] = {z and stemz .. "rjirmi" or stemr .. "rirmi"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["ōz"] = function(args, data)
	data.decl_type = "n-stem solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension nouns")
	table.insert(data.categories, "High Valyrian n-stem nouns")

	data.forms["nom_sg"] = {"ōz"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"ono"}
	data.forms["dat_sg"] = {"onot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"ōzo"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]
	
	data.forms["nom_pl"] = {"onossa"}
	data.forms["acc_pl"] = data.forms["nom_pl"]
	data.forms["gen_pl"] = {"onoti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"onossi"}
	data.forms["com_pl"] = data.forms["ins_pl"]
	data.forms["voc_pl"] = {"onossas"}
	
	data.forms["nom_pa"] = {"onun"}
	data.forms["acc_pa"] = {"onuni"}
	data.forms["gen_pa"] = {"onuno"}
	data.forms["dat_pa"] = {"onunto"}
	data.forms["loc_pa"] = {"onunno"}
	data.forms["ins_pa"] = {"onusso"}
	data.forms["com_pa"] = {"onummo"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
		
	data.forms["nom_co"] = {"onor"}
	data.forms["acc_co"] = {"onori"}
	data.forms["gen_co"] = {"onoro"}
	data.forms["dat_co"] = {"onorto"}
	data.forms["loc_co"] = {"onorro"}
	data.forms["ins_co"] = {"onorzo"}
	data.forms["com_co"] = {"onormo"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["Mȳr"] = function(args, data)
	data.decl_type = "solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension nouns")

	data.forms["nom_sg"] = {"Mȳr"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"Mȳro"}
	data.forms["dat_sg"] = {"Mȳrot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"Mȳroso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]
end

alldata["6"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["6"], {__call = function(self, args, data)
	local stem = args[1] 
	data.decl_type = "sixth-declension"
	table.insert(data.categories, "High Valyrian sixth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "i", stem}
	data.forms["acc_sg"] = {stem .. "i"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ī"}
	data.forms["ins_sg"] = {stem .. "isi"}
	data.forms["com_sg"] = {stem .. "imi"}
	data.forms["voc_sg"] = {stem .. "is"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "i"}
		data.forms["acc_pl"] = {stem .. "ī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "issi"}
		data.forms["com_pl"] = {stem .. "immi"}
		data.forms["voc_pl"] = {stem .. "issis"}
		
		data.forms["nom_pa"] = {stem .. "in"}
		data.forms["acc_pa"] = {stem .. "ini"}
		data.forms["gen_pa"] = {stem .. "ino"}
		data.forms["dat_pa"] = {stem .. "inti"}
		data.forms["loc_pa"] = {stem .. "inni"}
		data.forms["ins_pa"] = {stem .. "issi"}
		data.forms["com_pa"] = {stem .. "immi"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ir"}
		data.forms["acc_co"] = {stem .. "iri"}
		data.forms["gen_co"] = {stem .. "iro"}
		data.forms["dat_co"] = {stem .. "irti"}
		data.forms["loc_co"] = {stem .. "irri"}
		data.forms["ins_co"] = {stem .. "irzi"}
		data.forms["com_co"] = {stem .. "irmi"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["6-u"] = {
	params = {
		[1] = {},
		["nopl"] = {},
	},
}
setmetatable(alldata["6-u"], {__call = function(self, args, data)
	local stem = args[1] 
	data.decl_type = "sixth-declension"
	table.insert(data.categories, "High Valyrian sixth-declension " .. (data.proper and "proper " or "") .. "nouns")

	data.forms["nom_sg"] = {stem .. "i", stem}
	data.forms["acc_sg"] = {stem .. "i"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ī"}
	data.forms["ins_sg"] = {stem .. "isi"}
	data.forms["com_sg"] = {stem .. "imi"}
	data.forms["voc_sg"] = {stem .. "is"}

	if not args.nopl then
		data.forms["nom_pl"] = {stem .. "i"}
		data.forms["acc_pl"] = {stem .. "ī"}
		data.forms["gen_pl"] = {stem .. "oti"}
		data.forms["dat_pl"] = data.forms["gen_pl"]
		data.forms["loc_pl"] = data.forms["gen_pl"]
		data.forms["ins_pl"] = {stem .. "issi"}
		data.forms["com_pl"] = {stem .. "immi"}
		data.forms["voc_pl"] = {stem .. "issis"}
		
		data.forms["nom_pa"] = {stem .. "in"}
		data.forms["acc_pa"] = {stem .. "ini"}
		data.forms["gen_pa"] = {stem .. "ino"}
		data.forms["dat_pa"] = {stem .. "inti"}
		data.forms["loc_pa"] = {stem .. "inni"}
		data.forms["ins_pa"] = {stem .. "issi"}
		data.forms["com_pa"] = {stem .. "immi"}
		data.forms["voc_pa"] = data.forms["ins_pa"]
		
		data.forms["nom_co"] = {stem .. "ir"}
		data.forms["acc_co"] = {stem .. "iri"}
		data.forms["gen_co"] = {stem .. "iro"}
		data.forms["dat_co"] = {stem .. "irti"}
		data.forms["loc_co"] = {stem .. "irri"}
		data.forms["ins_co"] = {stem .. "irzi"}
		data.forms["com_co"] = {stem .. "irmi"}
		data.forms["voc_co"] = data.forms["ins_co"]
	end
end
})

alldata["mhysa"] = function(args, data)
	data.decl_type = "sixth-declension"
	table.insert(data.categories, "High Valyrian sixth-declension nouns")

	data.forms["nom_sg"] = {"mhysa"}
	data.forms["acc_sg"] = {"mhysi"}
	data.forms["gen_sg"] = {"mhyso"}
	data.forms["dat_sg"] = {"mhysot"}
	data.forms["loc_sg"] = {"mhysī"}
	data.forms["ins_sg"] = {"mhysisi"}
	data.forms["com_sg"] = {"mhysimi"}
	data.forms["voc_sg"] = {"mhysis"}


	data.forms["nom_pl"] = {"mhysi"}
	data.forms["acc_pl"] = {"mhysī"}
	data.forms["gen_pl"] = {"mhysoti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"mhysissi"}
	data.forms["com_pl"] = {"mhysimmi"}
	data.forms["voc_pl"] = {"mhysissis"}
	
	data.forms["nom_pa"] = {"mhysin"}
	data.forms["acc_pa"] = {"mhysini"}
	data.forms["gen_pa"] = {"mhysino"}
	data.forms["dat_pa"] = {"mhysinti"}
	data.forms["loc_pa"] = {"mhysinni"}
	data.forms["ins_pa"] = {"mhysissi"}
	data.forms["com_pa"] = {"mhysimmi"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {"mhysir"}
	data.forms["acc_co"] = {"mhysiri"}
	data.forms["gen_co"] = {"mhysiro"}
	data.forms["dat_co"] = {"mhysirti"}
	data.forms["loc_co"] = {"mhysirri"}
	data.forms["ins_co"] = {"mhysirzi"}
	data.forms["com_co"] = {"mhysirmi"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["bianor"] = function(args, data)
	data.decl_type = "lunar third-declension"
	table.insert(data.categories, "High Valyrian third-declension nouns")

	data.forms["nom_sg"] = {"bianor"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"biādro"}
	data.forms["dat_sg"] = {"biādrot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"biādroso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {"bianos"}


	data.forms["nom_pl"] = {"biādra"}
	data.forms["acc_pl"] = data.forms["nom_pl"]
	data.forms["gen_pl"] = {"biādroti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"biādrossi"}
	data.forms["com_pl"] = {"biādrossi"}
	data.forms["voc_pl"] = {"biādras"}
	
	data.forms["nom_pa"] = {"biādrun"}
	data.forms["acc_pa"] = {"biādruni"}
	data.forms["gen_pa"] = {"biādruno"}
	data.forms["dat_pa"] = {"biādrunto"}
	data.forms["loc_pa"] = {"biādrunno"}
	data.forms["ins_pa"] = {"biādrusso"}
	data.forms["com_pa"] = {"biādrummo"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {"biādror"}
	data.forms["acc_co"] = {"biādrori"}
	data.forms["gen_co"] = {"biādroro"}
	data.forms["dat_co"] = {"biādrorto"}
	data.forms["loc_co"] = {"biādrorro"}
	data.forms["ins_co"] = {"biādrorzo"}
	data.forms["com_co"] = {"biādrormo"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["nāqopsir"] = function(args, data)
	data.decl_type = "lunar fifth-declension"
	table.insert(data.categories, "High Valyrian fifth-declension nouns")

	data.forms["nom_sg"] = {"nāqopsir"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"nāqobjio", "nāqōjio"}
	data.forms["dat_sg"] = {"nāqobjiot", "nāqōjiot"}
	data.forms["loc_sg"] = {"nāqobjī", "nāqōjī"}
	data.forms["ins_sg"] = {"nāqobjȳsi", "nāqōjȳsi"}
	data.forms["com_sg"] = {"nāqobjȳmi", "nāqōjȳmi"}
	data.forms["voc_sg"] = {"nāqobjys", "nāqōjys"}


	data.forms["nom_pl"] = {"nāqobja", "nāqōja"}
	data.forms["acc_pl"] = data.forms["nom_pl"]
	data.forms["gen_pl"] = {"nāqobjȳti", "nāqōjȳti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"nāqobjȳssi", "nāqōjȳssi"}
	data.forms["com_pl"] = {"nāqobjȳmmi", "nāqōjȳmmi"}
	data.forms["voc_pl"] = {"nāqobjas", "nāqōjas"}
	
	data.forms["nom_pa"] = {"nāqobjin", "nāqōjin"}
	data.forms["acc_pa"] = {"nāqobjini", "nāqōjini"}
	data.forms["gen_pa"] = {"nāqobjino", "nāqōjino"}
	data.forms["dat_pa"] = {"nāqobjinti", "nāqōjinti"}
	data.forms["loc_pa"] = {"nāqobjinni", "nāqōjinni"}
	data.forms["ins_pa"] = {"nāqobjissi", "nāqōjissi"}
	data.forms["com_pa"] = {"nāqobjimmi", "nāqōjimmi"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {"nāqobjir", "nāqōjir"}
	data.forms["acc_co"] = {"nāqobjiri", "nāqōjiri"}
	data.forms["gen_co"] = {"nāqobjiro", "nāqōjiro"}
	data.forms["dat_co"] = {"nāqobjirti", "nāqōjirti"}
	data.forms["loc_co"] = {"nāqobjirri", "nāqōjirri"}
	data.forms["ins_co"] = {"nāqobjirzi", "nāqōjirzi"}
	data.forms["com_co"] = {"nāqobjirmi", "nāqōjirmi"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["ēs"] = function(args, data)
	data.decl_type = "l-stem solar third-declension"
	table.insert(data.categories, "High Valyrian third-declension nouns")
	table.insert(data.categories, "High Valyrian l-stem nouns")

	data.forms["nom_sg"] = {"ēs"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"elo"}
	data.forms["dat_sg"] = {"elot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"ēso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = data.forms["nom_sg"]


	data.forms["nom_pl"] = {"elossa"}
	data.forms["acc_pl"] = data.forms["nom_pl"]
	data.forms["gen_pl"] = {"eloti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"elossi"}
	data.forms["com_pl"] = data.forms["ins_pl"]
	data.forms["voc_pl"] = {"elossas"}
	
	data.forms["nom_pa"] = {"elun"}
	data.forms["acc_pa"] = {"eluni"}
	data.forms["gen_pa"] = {"eluno"}
	data.forms["dat_pa"] = {"elunto"}
	data.forms["loc_pa"] = {"elunno"}
	data.forms["ins_pa"] = {"elusso"}
	data.forms["com_pa"] = {"elummo"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {"elor"}
	data.forms["acc_co"] = {"elori"}
	data.forms["gen_co"] = {"eloro"}
	data.forms["dat_co"] = {"elorto"}
	data.forms["loc_co"] = {"elorro"}
	data.forms["ins_co"] = {"elorzo"}
	data.forms["com_co"] = {"elormo"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["jelmor"] = function(args, data)
	data.decl_type = "aquatic third-declension"
	table.insert(data.categories, "High Valyrian third-declension nouns")

	data.forms["nom_sg"] = {"jelmor"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"jēmbro"}
	data.forms["dat_sg"] = {"jēmbrot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"jēmbroso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {"jelmos"}

	data.forms["nom_pl"] = {"jēmbra"}
	data.forms["acc_pl"] = data.forms["nom_pl"]
	data.forms["gen_pl"] = {"jēmbroti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"jēmbrossi"}
	data.forms["com_pl"] = data.forms["ins_pl"]
	data.forms["voc_pl"] = {"jelmas"}
	
	data.forms["nom_pa"] = {"jēmbrun"}
	data.forms["acc_pa"] = {"jēmbruni"}
	data.forms["gen_pa"] = {"jēmbruno"}
	data.forms["dat_pa"] = {"jēmbrunto"}
	data.forms["loc_pa"] = {"jēmbrunno"}
	data.forms["ins_pa"] = {"jēmbrusso"}
	data.forms["com_pa"] = {"jēmbrummo"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {"jēmbror"}
	data.forms["acc_co"] = {"jēmbrori"}
	data.forms["gen_co"] = {"jēmbroro"}
	data.forms["dat_co"] = {"jēmbrorto"}
	data.forms["loc_co"] = {"jēmbrorro"}
	data.forms["ins_co"] = {"jēmbrorzo"}
	data.forms["com_co"] = {"jēmbrormo"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["Qelbria"] = function(args, data)
	data.decl_type = "aquatic first-declension"
	table.insert(data.categories, "High Valyrian first-declension nouns")

	data.forms["nom_sg"] = {"Qelbria"}
	data.forms["acc_sg"] = {"Qelbri"}
	data.forms["gen_sg"] = {"Qelbro"}
	data.forms["dat_sg"] = {"Qelbrot"}
	data.forms["loc_sg"] = {"Qelbrār"}
	data.forms["ins_sg"] = {"Qelbrosa"}
	data.forms["com_sg"] = {"Qelbroma"}
	data.forms["voc_sg"] = {"Qelbrus"}
end

alldata["sēter"] = function(args, data)
	data.decl_type = "aquatic third-declension"
	table.insert(data.categories, "High Valyrian third-declension nouns")

	data.forms["nom_sg"] = {"sēter"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"sētero"}
	data.forms["dat_sg"] = {"sēterot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"sēteroso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {"sēteros"}
	
	data.forms["nom_pl"] = {"sētera"}
	data.forms["acc_pl"] = data.forms["nom_pl"]
	data.forms["gen_pl"] = {"sēteroti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {"sēterossi"}
	data.forms["com_pl"] = data.forms["ins_pl"]
	data.forms["voc_pl"] = {"sēteras"}
	
	data.forms["nom_pa"] = {"sēterun"}
	data.forms["acc_pa"] = {"sēteruni"}
	data.forms["gen_pa"] = {"sēteruno"}
	data.forms["dat_pa"] = {"sēterunto"}
	data.forms["loc_pa"] = {"sēterunno"}
	data.forms["ins_pa"] = {"sēterusso"}
	data.forms["com_pa"] = {"sēterummo"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {"sēteror"}
	data.forms["acc_co"] = {"sēterori"}
	data.forms["gen_co"] = {"sēteroro"}
	data.forms["dat_co"] = {"sēterorto"}
	data.forms["loc_co"] = {"sēterorro"}
	data.forms["ins_co"] = {"sēterorzo"}
	data.forms["com_co"] = {"sēterormo"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

alldata["Junkae"] = function(args, data)
	data.decl_type = "sixth-declension"
	table.insert(data.categories, "High Valyrian sixth-declension proper nouns")

	data.forms["nom_sg"] = {"Junkae"}
	data.forms["acc_sg"] = data.forms["nom_sg"]
	data.forms["gen_sg"] = {"Junkaeho"}
	data.forms["dat_sg"] = {"Junkaehot"}
	data.forms["loc_sg"] = data.forms["dat_sg"]
	data.forms["ins_sg"] = {"Junkaeso"}
	data.forms["com_sg"] = data.forms["ins_sg"]
	data.forms["voc_sg"] = {"Junkaes"}
end

alldata["nager"] = function(args, data)
	local stem = "nager"
	data.decl_type = "irregular"
	
	
	data.forms["nom_sg"] = {stem}
	data.forms["acc_sg"] = {stem .. "ī"}
	data.forms["gen_sg"] = {stem .. "o"}
	data.forms["dat_sg"] = {stem .. "ot"}
	data.forms["loc_sg"] = {stem .. "ē"}
	data.forms["ins_sg"] = {stem .. "ose"}
	data.forms["com_sg"] = {stem .. "ome"}
	data.forms["voc_sg"] = {stem .. "ys"}

	data.forms["nom_pl"] = {stem .. "i"}
	data.forms["acc_pl"] = {stem .. "ī"}
	data.forms["gen_pl"] = {stem .. "oti"}
	data.forms["dat_pl"] = data.forms["gen_pl"]
	data.forms["loc_pl"] = data.forms["gen_pl"]
	data.forms["ins_pl"] = {stem .. "ossi"}
	data.forms["com_pl"] = {stem .. "ommi"}
	data.forms["voc_pl"] = {stem .. "īs"}
	
	data.forms["nom_pa"] = {stem .. "in"}
	data.forms["acc_pa"] = {stem .. "ini"}
	data.forms["gen_pa"] = {stem .. "ino"}
	data.forms["dat_pa"] = {stem .. "inte"}
	data.forms["loc_pa"] = {stem .. "inne"}
	data.forms["ins_pa"] = {stem .. "isse"}
	data.forms["com_pa"] = {stem .. "imme"}
	data.forms["voc_pa"] = data.forms["ins_pa"]
	
	data.forms["nom_co"] = {stem .. "er"}
	data.forms["acc_co"] = {stem .. "eri"}
	data.forms["gen_co"] = {stem .. "ero"}
	data.forms["dat_co"] = {stem .. "erte"}
	data.forms["loc_co"] = {stem .. "erre"}
	data.forms["ins_co"] = {stem .. "erze"}
	data.forms["com_co"] = {stem .. "erme"}
	data.forms["voc_co"] = data.forms["ins_co"]
end

return alldata