[go: nahoru, domu]

Module:zu-verbs

Archived revision by Smashhoof (talk | contribs) as of 18:40, 27 November 2018.

This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local m_common = require("Module:zu-common")

local lang = require("Module:languages").getByCode("zu")

local export = {}


function export.verb(frame)
	local params = {
		[1] = {},
		
		["i"] = {type = "boolean"},
		["passive"] = {type = "boolean"},
		}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	local data = {forms = {}, info = "", categories = {}}
	
	if args[1] == "L" or args[1] == "H" or args[1] == "HH" then
		data.info = "tone " .. args[1]
		table.insert(data.categories, lang:getCanonicalName() .. " verbs with tone " .. args[1])
	elseif args[1] then
		error("The tone class must be \"L\", \"H\" or \"HH\".")
	else
		data.info = "tone unknown"
		table.insert(data.categories, lang:getCanonicalName() .. " verbs needing tone")
	end
	
	if args["i"] then
		data.info = data.info .. ", latent ''i''"
		table.insert(data.categories, lang:getCanonicalName() .. " verbs with latent i")
	end
	
	local base = mw.ustring.gsub(mw.title.getCurrentTitle().subpageText, "a$", "")
	
	local syllables = m_common.split_syllables(mw.title.getCurrentTitle().subpageText)
	
	local a = "a"
	local al = "ā"
	local e = "e"
	local e2 = "e"
	local i = "i"   -- preceding consonant
	local i2 = "i"  -- no preceding consonant
	local o2 = "o"
	local u = "u"   -- after b
	local u2 = "u"  -- no preceding consonant
	local u3 = "u"  -- after a consonant other than b
	local w = "w"  -- before the remote past prefix in o- stems
	
	local yi = ""
	local ku = ""
	
	local neg = "i"
	if args["passive"] or base == "zw" then
		neg = "a"
	end
	
	if syllables[1] == "a" or syllables[1] == "e" or syllables[1] == "o" then
		base = mw.ustring.gsub(base, "^[aeo]", "")
		a = syllables[1]
		al = syllables[1] .. "̄"
		e = syllables[1]
		e2 = "ey" .. syllables[1]
		i = syllables[1]
		i2 = "y" .. syllables[1]
		o2 = "ow" .. syllables[1]
		u = syllables[1]
		u2 = "w" .. syllables[1]
		u3 = "w" .. syllables[1]
		ku = "kw" .. syllables[1]
		if syllables[1] == "o" then
			u3 = syllables[1]
			w = ""
			ku = "k" .. syllables[1]
		end
		yi = "y" .. syllables[1]
	elseif args["i"] then
		a = "e"
		
		ku = "ku"
		yi = "yi"
	elseif #syllables == 1 then
		ku = "ku"
		yi = "yi"
	end
	
	-- Infinitive
	data.forms["pos_inf"] = {"uk" .. u3 .. base .. "a"}
	data.forms["neg_inf"] = {"ukung" .. a .. base .. neg}
	
	-- Imperative
	data.forms["simp_impr_sg"]     = {yi .. base .. "a"}
	data.forms["simp_impr_pl"]     = {yi .. base .. "ani"}
	
	data.forms["objc_impr_sg"]     = {yi .. base .. "e"}
	data.forms["objc_impr_pl"]     = {yi .. base .. "eni"}
	
	-- Present
	data.forms["pos_abs_pres_1sg"] = {"ngiy" .. a .. base .. "a", "ng" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_2sg"] = {  "uy" .. a .. base .. "a",         u2 .. base .. "a"}
	data.forms["pos_abs_pres_1pl"] = { "siy" .. a .. base .. "a",  "s" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_2pl"] = { "niy" .. a .. base .. "a",  "n" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_c1"]  = {  "uy" .. a .. base .. "a",         u2 .. base .. "a"}
	data.forms["pos_abs_pres_c2"]  = { "bay" .. a .. base .. "a",  "b" .. a  .. base .. "a"}
	data.forms["pos_abs_pres_c3"]  = {  "uy" .. a .. base .. "a",         u2 .. base .. "a"}
	data.forms["pos_abs_pres_c4"]  = {  "iy" .. a .. base .. "a",         i2 .. base .. "a"}
	data.forms["pos_abs_pres_c5"]  = { "liy" .. a .. base .. "a",  "l" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_c6"]  = {  "ay" .. a .. base .. "a",         a  .. base .. "a"}
	data.forms["pos_abs_pres_c7"]  = { "siy" .. a .. base .. "a",  "s" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_c8"]  = { "ziy" .. a .. base .. "a",  "z" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_c9"]  = {  "iy" .. a .. base .. "a",         i2 .. base .. "a"}
	data.forms["pos_abs_pres_c10"] = { "ziy" .. a .. base .. "a",  "z" .. i  .. base .. "a"}
	data.forms["pos_abs_pres_c11"] = { "luy" .. a .. base .. "a",  "l" .. u3 .. base .. "a"}
	data.forms["pos_abs_pres_c14"] = { "buy" .. a .. base .. "a",  "b" .. u  .. base .. "a"}
	data.forms["pos_abs_pres_c15"] = { "kuy" .. a .. base .. "a",  "k" .. u3 .. base .. "a"}
	data.forms["pos_abs_pres_c17"] = { "kuy" .. a .. base .. "a",  "k" .. u3 .. base .. "a"}
	
	data.forms["pos_rel_pres_1sg"] = {"eng" .. i  .. base .. "ayo", "eng" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_2sg"] = {         o2 .. base .. "ayo",          o2 .. base .. "a"}
	data.forms["pos_rel_pres_1pl"] = { "es" .. i  .. base .. "ayo",  "es" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_2pl"] = { "en" .. i  .. base .. "ayo",  "en" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_c1"]  = {         o2 .. base .. "ayo",          o2 .. base .. "a"}
	data.forms["pos_rel_pres_c2"]  = { "ab" .. a  .. base .. "ayo",  "ab" .. a  .. base .. "a"}
	data.forms["pos_rel_pres_c3"]  = {         o2 .. base .. "ayo",          o2 .. base .. "a"}
	data.forms["pos_rel_pres_c4"]  = {         e2 .. base .. "ayo",          e2 .. base .. "a"}
	data.forms["pos_rel_pres_c5"]  = { "el" .. i  .. base .. "ayo",  "el" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_c6"]  = {         a  .. base .. "ayo",          a  .. base .. "a"}
	data.forms["pos_rel_pres_c7"]  = { "es" .. i  .. base .. "ayo",  "es" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_c8"]  = { "ez" .. i  .. base .. "ayo",  "ez" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_c9"]  = {         e2 .. base .. "ayo",          e2 .. base .. "a"}
	data.forms["pos_rel_pres_c10"] = { "ez" .. i  .. base .. "ayo",  "ez" .. i  .. base .. "a"}
	data.forms["pos_rel_pres_c11"] = { "ol" .. u3 .. base .. "ayo",  "ol" .. u3 .. base .. "a"}
	data.forms["pos_rel_pres_c14"] = { "ob" .. u  .. base .. "ayo",  "ob" .. u  .. base .. "a"}
	data.forms["pos_rel_pres_c15"] = { "ok" .. u3 .. base .. "ayo",  "ok" .. u3 .. base .. "a"}
	data.forms["pos_rel_pres_c17"] = { "ok" .. u3 .. base .. "ayo",  "ok" .. u3 .. base .. "a"}
	
	data.forms["pos_par_pres_1sg"] = {"ng" .. i  .. base .. "a"}
	data.forms["pos_par_pres_2sg"] = {        u2 .. base .. "a"}
	data.forms["pos_par_pres_1pl"] = { "s" .. i  .. base .. "a"}
	data.forms["pos_par_pres_2pl"] = { "n" .. i  .. base .. "a"}
	data.forms["pos_par_pres_c1"]  = {        e  .. base .. "a"}
	data.forms["pos_par_pres_c2"]  = { "b" .. e  .. base .. "a"}
	data.forms["pos_par_pres_c3"]  = {        u2 .. base .. "a"}
	data.forms["pos_par_pres_c4"]  = {        i2 .. base .. "a"}
	data.forms["pos_par_pres_c5"]  = { "l" .. i  .. base .. "a"}
	data.forms["pos_par_pres_c6"]  = {        e  .. base .. "a"}
	data.forms["pos_par_pres_c7"]  = { "s" .. i  .. base .. "a"}
	data.forms["pos_par_pres_c8"]  = { "z" .. i  .. base .. "a"}
	data.forms["pos_par_pres_c9"]  = {        i2 .. base .. "a"}
	data.forms["pos_par_pres_c10"] = { "z" .. i  .. base .. "a"}
	data.forms["pos_par_pres_c11"] = { "l" .. u3 .. base .. "a"}
	data.forms["pos_par_pres_c14"] = { "b" .. u  .. base .. "a"}
	data.forms["pos_par_pres_c15"] = { "k" .. u3 .. base .. "a"}
	data.forms["pos_par_pres_c17"] = { "k" .. u3 .. base .. "a"}
	
	data.forms["neg_abs_pres_1sg"] = {"ang" .. i  .. base .. neg}
	data.forms["neg_abs_pres_2sg"] = { "aw" .. u  .. base .. neg}
	data.forms["neg_abs_pres_1pl"] = { "as" .. i  .. base .. neg}
	data.forms["neg_abs_pres_2pl"] = { "an" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c1"]  = { "ak" .. a  .. base .. neg}
	data.forms["neg_abs_pres_c2"]  = { "ab" .. a  .. base .. neg}
	data.forms["neg_abs_pres_c3"]  = { "aw" .. u  .. base .. neg}
	data.forms["neg_abs_pres_c4"]  = { "ay" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c5"]  = { "al" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c6"]  = { "aw" .. a  .. base .. neg}
	data.forms["neg_abs_pres_c7"]  = { "as" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c8"]  = { "az" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c9"]  = { "ay" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c10"] = { "az" .. i  .. base .. neg}
	data.forms["neg_abs_pres_c11"] = { "al" .. u3 .. base .. neg}
	data.forms["neg_abs_pres_c14"] = { "ab" .. u  .. base .. neg}
	data.forms["neg_abs_pres_c15"] = { "ak" .. u3 .. base .. neg}
	data.forms["neg_abs_pres_c17"] = { "ak" .. u3 .. base .. neg}
	
	data.forms["neg_rel_pres_1sg"] = {"enging" .. a  .. base .. neg}
	data.forms["neg_rel_pres_2sg"] = {   "ong" .. a  .. base .. neg}
	data.forms["neg_rel_pres_1pl"] = { "esing" .. a  .. base .. neg}
	data.forms["neg_rel_pres_2pl"] = { "ening" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c1"]  = {   "ong" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c2"]  = { "abang" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c3"]  = {   "ong" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c4"]  = {   "eng" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c5"]  = { "eling" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c6"]  = {   "ang" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c7"]  = { "esing" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c8"]  = { "ezing" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c9"]  = {   "eng" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c10"] = { "ezing" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c11"] = { "olung" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c14"] = { "obung" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c15"] = { "okung" .. a  .. base .. neg}
	data.forms["neg_rel_pres_c17"] = { "okung" .. a  .. base .. neg}
	
	data.forms["neg_par_pres_1sg"] = {"nging" .. a  .. base .. neg}
	data.forms["neg_par_pres_2sg"] = {  "ung" .. a  .. base .. neg}
	data.forms["neg_par_pres_1pl"] = { "sing" .. a  .. base .. neg}
	data.forms["neg_par_pres_2pl"] = { "ning" .. a  .. base .. neg}
	data.forms["neg_par_pres_c1"]  = {  "eng" .. a  .. base .. neg}
	data.forms["neg_par_pres_c2"]  = { "beng" .. a  .. base .. neg}
	data.forms["neg_par_pres_c3"]  = {  "ung" .. a  .. base .. neg}
	data.forms["neg_par_pres_c4"]  = {  "ing" .. a  .. base .. neg}
	data.forms["neg_par_pres_c5"]  = { "ling" .. a  .. base .. neg}
	data.forms["neg_par_pres_c6"]  = {  "eng" .. a  .. base .. neg}
	data.forms["neg_par_pres_c7"]  = { "sing" .. a  .. base .. neg}
	data.forms["neg_par_pres_c8"]  = { "zing" .. a  .. base .. neg}
	data.forms["neg_par_pres_c9"]  = {  "ing" .. a  .. base .. neg}
	data.forms["neg_par_pres_c10"] = { "zing" .. a  .. base .. neg}
	data.forms["neg_par_pres_c11"] = { "lung" .. a  .. base .. neg}
	data.forms["neg_par_pres_c14"] = { "bung" .. a  .. base .. neg}
	data.forms["neg_par_pres_c15"] = { "kung" .. a  .. base .. neg}
	data.forms["neg_par_pres_c17"] = { "kung" .. a  .. base .. neg}
	
	-- Recent past
	if #syllables > 2 and mw.ustring.find(base, "[ae][lmns]$") then
		local base2 = mw.ustring.gsub(base, "a([^aeiou]+)$", "e%1")
		
		data.forms["pos_abs_recp_1sg"] = {"ng" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_2sg"] = {        u2 .. base2 .. "e"}
		data.forms["pos_abs_recp_1pl"] = { "s" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_2pl"] = { "n" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_c1"]  = {        u2 .. base2 .. "e"}
		data.forms["pos_abs_recp_c2"]  = { "b" .. a  .. base2 .. "e"}
		data.forms["pos_abs_recp_c3"]  = {        u2 .. base2 .. "e"}
		data.forms["pos_abs_recp_c4"]  = {        i2 .. base2 .. "e"}
		data.forms["pos_abs_recp_c5"]  = { "l" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_c6"]  = {        a  .. base2 .. "e"}
		data.forms["pos_abs_recp_c7"]  = { "s" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_c8"]  = { "z" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_c9"]  = {        i2 .. base2 .. "e"}
		data.forms["pos_abs_recp_c10"] = { "z" .. i  .. base2 .. "e"}
		data.forms["pos_abs_recp_c11"] = { "l" .. u3 .. base2 .. "e"}
		data.forms["pos_abs_recp_c14"] = { "b" .. u  .. base2 .. "e"}
		data.forms["pos_abs_recp_c15"] = { "k" .. u3 .. base2 .. "e"}
		data.forms["pos_abs_recp_c17"] = { "k" .. u3 .. base2 .. "e"}
		
		data.forms["pos_rel_recp_1sg"] = {"eng" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_2sg"] = {         o2 .. base2 .. "e"}
		data.forms["pos_rel_recp_1pl"] = { "es" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_2pl"] = { "en" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_c1"]  = {         o2 .. base2 .. "e"}
		data.forms["pos_rel_recp_c2"]  = { "ab" .. a  .. base2 .. "e"}
		data.forms["pos_rel_recp_c3"]  = {         o2 .. base2 .. "e"}
		data.forms["pos_rel_recp_c4"]  = {         e2 .. base2 .. "e"}
		data.forms["pos_rel_recp_c5"]  = { "el" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_c6"]  = {         a  .. base2 .. "e"}
		data.forms["pos_rel_recp_c7"]  = { "es" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_c8"]  = { "ez" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_c9"]  = {         e2 .. base2 .. "e"}
		data.forms["pos_rel_recp_c10"] = { "ez" .. i  .. base2 .. "e"}
		data.forms["pos_rel_recp_c11"] = { "ol" .. u3 .. base2 .. "e"}
		data.forms["pos_rel_recp_c14"] = { "ob" .. u  .. base2 .. "e"}
		data.forms["pos_rel_recp_c15"] = { "ok" .. u3 .. base2 .. "e"}
		data.forms["pos_rel_recp_c17"] = { "ok" .. u3 .. base2 .. "e"}
		
		data.forms["pos_par_recp_1sg"] = {"ng" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_2sg"] = {        u2 .. base2 .. "e"}
		data.forms["pos_par_recp_1pl"] = { "s" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_2pl"] = { "n" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_c1"]  = {        e  .. base2 .. "e"}
		data.forms["pos_par_recp_c2"]  = { "b" .. e  .. base2 .. "e"}
		data.forms["pos_par_recp_c3"]  = {        u2 .. base2 .. "e"}
		data.forms["pos_par_recp_c4"]  = {        i2 .. base2 .. "e"}
		data.forms["pos_par_recp_c5"]  = { "l" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_c6"]  = {        e  .. base2 .. "e"}
		data.forms["pos_par_recp_c7"]  = { "s" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_c8"]  = { "z" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_c9"]  = {        i2 .. base2 .. "e"}
		data.forms["pos_par_recp_c10"] = { "z" .. i  .. base2 .. "e"}
		data.forms["pos_par_recp_c11"] = { "l" .. u3 .. base2 .. "e"}
		data.forms["pos_par_recp_c14"] = { "b" .. u  .. base2 .. "e"}
		data.forms["pos_par_recp_c15"] = { "k" .. u3 .. base2 .. "e"}
		data.forms["pos_par_recp_c17"] = { "k" .. u3 .. base2 .. "e"}
	elseif args["passive"] then
		local base2, pass_recp_long, pass_recp_short
		if mw.ustring.find(base, "iw$") then
			base2 = base
			pass_recp_long = "e"
			pass_recp_short = "ē"
		else
			base2 = mw.ustring.gsub(base, "w$", "")
			pass_recp_long = "iwe"
			pass_recp_short = "wē"
		end
		
		data.forms["pos_abs_recp_1sg"] = {"ng" .. i  .. base2 .. pass_recp_long, "ng" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_2sg"] = {        u2 .. base2 .. pass_recp_long,         u2 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_1pl"] = { "s" .. i  .. base2 .. pass_recp_long,  "s" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_2pl"] = { "n" .. i  .. base2 .. pass_recp_long,  "n" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c1"]  = {        u2 .. base2 .. pass_recp_long,         u2 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c2"]  = { "b" .. a  .. base2 .. pass_recp_long,  "b" .. a  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c3"]  = {        u2 .. base2 .. pass_recp_long,         u2 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c4"]  = {        i2 .. base2 .. pass_recp_long,         i2 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c5"]  = { "l" .. i  .. base2 .. pass_recp_long,  "l" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c6"]  = {        a  .. base2 .. pass_recp_long,         a  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c7"]  = { "s" .. i  .. base2 .. pass_recp_long,  "s" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c8"]  = { "z" .. i  .. base2 .. pass_recp_long,  "z" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c9"]  = {        i2 .. base2 .. pass_recp_long,         i2 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c10"] = { "z" .. i  .. base2 .. pass_recp_long,  "z" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c11"] = { "l" .. u3 .. base2 .. pass_recp_long,  "l" .. u3 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c14"] = { "b" .. u  .. base2 .. pass_recp_long,  "b" .. u  .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c15"] = { "k" .. u3 .. base2 .. pass_recp_long,  "k" .. u3 .. base2 .. pass_recp_short}
		data.forms["pos_abs_recp_c17"] = { "k" .. u3 .. base2 .. pass_recp_long,  "k" .. u3 .. base2 .. pass_recp_short}
		
		data.forms["pos_rel_recp_1sg"] = {"eng" .. i  .. base2 .. pass_recp_long, "eng" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_2sg"] = {         o2 .. base2 .. pass_recp_long,          o2 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_1pl"] = { "es" .. i  .. base2 .. pass_recp_long,  "es" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_2pl"] = { "en" .. i  .. base2 .. pass_recp_long,  "en" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c1"]  = {         o2 .. base2 .. pass_recp_long,          o2 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c2"]  = { "ab" .. a  .. base2 .. pass_recp_long,  "ab" .. a  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c3"]  = {         o2 .. base2 .. pass_recp_long,          o2 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c4"]  = {         e2 .. base2 .. pass_recp_long,          e2 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c5"]  = { "el" .. i  .. base2 .. pass_recp_long,  "el" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c6"]  = {         a  .. base2 .. pass_recp_long,          a  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c7"]  = { "es" .. i  .. base2 .. pass_recp_long,  "es" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c8"]  = { "ez" .. i  .. base2 .. pass_recp_long,  "ez" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c9"]  = {         e2 .. base2 .. pass_recp_long,          e2 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c10"] = { "ez" .. i  .. base2 .. pass_recp_long,  "ez" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c11"] = { "ol" .. u3 .. base2 .. pass_recp_long,  "ol" .. u3 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c14"] = { "ob" .. u  .. base2 .. pass_recp_long,  "ob" .. u  .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c15"] = { "ok" .. u3 .. base2 .. pass_recp_long,  "ok" .. u3 .. base2 .. pass_recp_short}
		data.forms["pos_rel_recp_c17"] = { "ok" .. u3 .. base2 .. pass_recp_long,  "ok" .. u3 .. base2 .. pass_recp_short}
		
		data.forms["pos_par_recp_1sg"] = {"ng" .. i  .. base2 .. pass_recp_long, "ng" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_2sg"] = {        u2 .. base2 .. pass_recp_long,         u2 .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_1pl"] = { "s" .. i  .. base2 .. pass_recp_long,  "s" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_2pl"] = { "n" .. i  .. base2 .. pass_recp_long,  "n" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c1"]  = {        e  .. base2 .. pass_recp_long,         e  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c2"]  = { "b" .. e  .. base2 .. pass_recp_long,  "b" .. e  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c3"]  = {        u2 .. base2 .. pass_recp_long,         u2 .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c4"]  = {        i2 .. base2 .. pass_recp_long,         i2 .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c5"]  = { "l" .. i  .. base2 .. pass_recp_long,  "l" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c6"]  = {        e  .. base2 .. pass_recp_long,         e  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c7"]  = { "s" .. i  .. base2 .. pass_recp_long,  "s" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c8"]  = { "z" .. i  .. base2 .. pass_recp_long,  "z" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c9"]  = {        i2 .. base2 .. pass_recp_long,         i2 .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c10"] = { "z" .. i  .. base2 .. pass_recp_long,  "z" .. i  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c11"] = { "l" .. u3 .. base2 .. pass_recp_long,  "l" .. u3 .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c14"] = { "b" .. u  .. base2 .. pass_recp_long,  "b" .. u  .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c15"] = { "k" .. u3 .. base2 .. pass_recp_long,  "k" .. u3 .. base2 .. pass_recp_short}
		data.forms["pos_par_recp_c17"] = { "k" .. u3 .. base2 .. pass_recp_long,  "k" .. u3 .. base2 .. pass_recp_short}
	else
		data.forms["pos_abs_recp_1sg"] = {"ng" .. i  .. base .. "ile", "ng" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_2sg"] = {        u2 .. base .. "ile",         u2 .. base .. "ē"}
		data.forms["pos_abs_recp_1pl"] = { "s" .. i  .. base .. "ile",  "s" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_2pl"] = { "n" .. i  .. base .. "ile",  "n" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_c1"]  = {        u2 .. base .. "ile",         u2 .. base .. "ē"}
		data.forms["pos_abs_recp_c2"]  = { "b" .. a  .. base .. "ile",  "b" .. a  .. base .. "ē"}
		data.forms["pos_abs_recp_c3"]  = {        u2 .. base .. "ile",         u2 .. base .. "ē"}
		data.forms["pos_abs_recp_c4"]  = {        i2 .. base .. "ile",         i2 .. base .. "ē"}
		data.forms["pos_abs_recp_c5"]  = { "l" .. i  .. base .. "ile",  "l" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_c6"]  = {        a  .. base .. "ile",         a  .. base .. "ē"}
		data.forms["pos_abs_recp_c7"]  = { "s" .. i  .. base .. "ile",  "s" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_c8"]  = { "z" .. i  .. base .. "ile",  "z" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_c9"]  = {        i2 .. base .. "ile",         i2 .. base .. "ē"}
		data.forms["pos_abs_recp_c10"] = { "z" .. i  .. base .. "ile",  "z" .. i  .. base .. "ē"}
		data.forms["pos_abs_recp_c11"] = { "l" .. u3 .. base .. "ile",  "l" .. u3 .. base .. "ē"}
		data.forms["pos_abs_recp_c14"] = { "b" .. u  .. base .. "ile",  "b" .. u  .. base .. "ē"}
		data.forms["pos_abs_recp_c15"] = { "k" .. u3 .. base .. "ile",  "k" .. u3 .. base .. "ē"}
		data.forms["pos_abs_recp_c17"] = { "k" .. u3 .. base .. "ile",  "k" .. u3 .. base .. "ē"}
		
		data.forms["pos_rel_recp_1sg"] = {"eng" .. i  .. base .. "ile", "eng" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_2sg"] = {         o2 .. base .. "ile",          o2 .. base .. "ē"}
		data.forms["pos_rel_recp_1pl"] = { "es" .. i  .. base .. "ile",  "es" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_2pl"] = { "en" .. i  .. base .. "ile",  "en" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_c1"]  = {         o2 .. base .. "ile",          o2 .. base .. "ē"}
		data.forms["pos_rel_recp_c2"]  = { "ab" .. a  .. base .. "ile",  "ab" .. a  .. base .. "ē"}
		data.forms["pos_rel_recp_c3"]  = {         o2 .. base .. "ile",          o2 .. base .. "ē"}
		data.forms["pos_rel_recp_c4"]  = {         e2 .. base .. "ile",          e2 .. base .. "ē"}
		data.forms["pos_rel_recp_c5"]  = { "el" .. i  .. base .. "ile",  "el" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_c6"]  = {         a  .. base .. "ile",          a  .. base .. "ē"}
		data.forms["pos_rel_recp_c7"]  = { "es" .. i  .. base .. "ile",  "es" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_c8"]  = { "ez" .. i  .. base .. "ile",  "ez" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_c9"]  = {         e2 .. base .. "ile",          e2 .. base .. "ē"}
		data.forms["pos_rel_recp_c10"] = { "ez" .. i  .. base .. "ile",  "ez" .. i  .. base .. "ē"}
		data.forms["pos_rel_recp_c11"] = { "ol" .. u3 .. base .. "ile",  "ol" .. u3 .. base .. "ē"}
		data.forms["pos_rel_recp_c14"] = { "ob" .. u  .. base .. "ile",  "ob" .. u  .. base .. "ē"}
		data.forms["pos_rel_recp_c15"] = { "ok" .. u3 .. base .. "ile",  "ok" .. u3 .. base .. "ē"}
		data.forms["pos_rel_recp_c17"] = { "ok" .. u3 .. base .. "ile",  "ok" .. u3 .. base .. "ē"}
		
		data.forms["pos_par_recp_1sg"] = {"ng" .. i  .. base .. "ile", "ng" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_2sg"] = {        u2 .. base .. "ile",         u2 .. base .. "ē"}
		data.forms["pos_par_recp_1pl"] = { "s" .. i  .. base .. "ile",  "s" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_2pl"] = { "n" .. i  .. base .. "ile",  "n" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_c1"]  = {        e  .. base .. "ile",         e  .. base .. "ē"}
		data.forms["pos_par_recp_c2"]  = { "b" .. e  .. base .. "ile",  "b" .. e  .. base .. "ē"}
		data.forms["pos_par_recp_c3"]  = {        u2 .. base .. "ile",         u2 .. base .. "ē"}
		data.forms["pos_par_recp_c4"]  = {        i2 .. base .. "ile",         i2 .. base .. "ē"}
		data.forms["pos_par_recp_c5"]  = { "l" .. i  .. base .. "ile",  "l" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_c6"]  = {        e  .. base .. "ile",         e  .. base .. "ē"}
		data.forms["pos_par_recp_c7"]  = { "s" .. i  .. base .. "ile",  "s" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_c8"]  = { "z" .. i  .. base .. "ile",  "z" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_c9"]  = {        i2 .. base .. "ile",         i2 .. base .. "ē"}
		data.forms["pos_par_recp_c10"] = { "z" .. i  .. base .. "ile",  "z" .. i  .. base .. "ē"}
		data.forms["pos_par_recp_c11"] = { "l" .. u3 .. base .. "ile",  "l" .. u3 .. base .. "ē"}
		data.forms["pos_par_recp_c14"] = { "b" .. u  .. base .. "ile",  "b" .. u  .. base .. "ē"}
		data.forms["pos_par_recp_c15"] = { "k" .. u3 .. base .. "ile",  "k" .. u3 .. base .. "ē"}
		data.forms["pos_par_recp_c17"] = { "k" .. u3 .. base .. "ile",  "k" .. u3 .. base .. "ē"}
	end
	
	data.forms["neg_abs_recp_1sg"] = {"ang" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_2sg"] = { "aw" .. u  .. base .. "anga"}
	data.forms["neg_abs_recp_1pl"] = { "as" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_2pl"] = { "an" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c1"]  = { "ak" .. a  .. base .. "anga"}
	data.forms["neg_abs_recp_c2"]  = { "ab" .. a  .. base .. "anga"}
	data.forms["neg_abs_recp_c3"]  = { "aw" .. u  .. base .. "anga"}
	data.forms["neg_abs_recp_c4"]  = { "ay" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c5"]  = { "al" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c6"]  = { "aw" .. a  .. base .. "anga"}
	data.forms["neg_abs_recp_c7"]  = { "as" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c8"]  = { "az" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c9"]  = { "ay" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c10"] = { "az" .. i  .. base .. "anga"}
	data.forms["neg_abs_recp_c11"] = { "al" .. u3 .. base .. "anga"}
	data.forms["neg_abs_recp_c14"] = { "ab" .. u  .. base .. "anga"}
	data.forms["neg_abs_recp_c15"] = { "ak" .. u3 .. base .. "anga"}
	data.forms["neg_abs_recp_c17"] = { "ak" .. u3 .. base .. "anga"}
	
	data.forms["neg_rel_recp_1sg"] = {"enging" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_2sg"] = {   "ong" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_1pl"] = { "esing" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_2pl"] = { "ening" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c1"]  = {   "ong" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c2"]  = { "abang" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c3"]  = {   "ong" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c4"]  = {   "eng" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c5"]  = { "eling" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c6"]  = {   "ang" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c7"]  = { "esing" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c8"]  = { "ezing" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c9"]  = {   "eng" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c10"] = { "ezing" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c11"] = { "olung" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c14"] = { "obung" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c15"] = { "okung" .. a  .. base .. "anga"}
	data.forms["neg_rel_recp_c17"] = { "okung" .. a  .. base .. "anga"}
	
	data.forms["neg_par_recp_1sg"] = {"nging" .. a .. base .. "anga"}
	data.forms["neg_par_recp_2sg"] = {  "ung" .. a .. base .. "anga"}
	data.forms["neg_par_recp_1pl"] = { "sing" .. a .. base .. "anga"}
	data.forms["neg_par_recp_2pl"] = { "ning" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c1"]  = {  "eng" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c2"]  = { "beng" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c3"]  = {  "ung" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c4"]  = {  "ing" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c5"]  = { "ling" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c6"]  = {  "eng" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c7"]  = { "sing" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c8"]  = { "zing" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c9"]  = {  "ing" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c10"] = { "zing" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c11"] = { "lung" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c14"] = { "bung" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c15"] = { "kung" .. a .. base .. "anga"}
	data.forms["neg_par_recp_c17"] = { "kung" .. a .. base .. "anga"}
	
	-- Remote past
	data.forms["pos_abs_remp_1sg"] = {"ng" .. al .. base .. "a"}
	data.forms["pos_abs_remp_2sg"] = { "w" .. al .. base .. "a"}
	data.forms["pos_abs_remp_1pl"] = { "s" .. al .. base .. "a"}
	data.forms["pos_abs_remp_2pl"] = { "n" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c1"]  = { "w" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c2"]  = { "b" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c3"]  = { "w" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c4"]  = { "y" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c5"]  = { "l" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c6"]  = {        al .. base .. "a"}
	data.forms["pos_abs_remp_c7"]  = { "s" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c8"]  = { "z" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c9"]  = { "y" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c10"] = { "z" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c11"] = { "l" .. w .. al .. base .. "a"}
	data.forms["pos_abs_remp_c14"] = { "b" .. al .. base .. "a"}
	data.forms["pos_abs_remp_c15"] = { "k" .. w .. al .. base .. "a"}
	data.forms["pos_abs_remp_c17"] = { "k" .. w .. al .. base .. "a"}
	
	data.forms["pos_rel_remp_1sg"] = {"eng" .. al .. base .. "a"}
	data.forms["pos_rel_remp_2sg"] = { "ow" .. al .. base .. "a"}
	data.forms["pos_rel_remp_1pl"] = { "es" .. al .. base .. "a"}
	data.forms["pos_rel_remp_2pl"] = { "en" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c1"]  = { "ow" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c2"]  = { "ab" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c3"]  = { "ow" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c4"]  = { "ey" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c5"]  = { "el" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c6"]  = {         al .. base .. "a"}
	data.forms["pos_rel_remp_c7"]  = { "es" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c8"]  = { "ez" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c9"]  = { "ey" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c10"] = { "ez" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c11"] = { "ol" .. w .. al .. base .. "a"}
	data.forms["pos_rel_remp_c14"] = { "ob" .. al .. base .. "a"}
	data.forms["pos_rel_remp_c15"] = { "ok" .. w .. al .. base .. "a"}
	data.forms["pos_rel_remp_c17"] = { "ok" .. w .. al .. base .. "a"}
	
	data.forms["pos_par_remp_1sg"] = {"ng" .. al .. base .. "a"}
	data.forms["pos_par_remp_2sg"] = { "w" .. al .. base .. "a"}
	data.forms["pos_par_remp_1pl"] = { "s" .. al .. base .. "a"}
	data.forms["pos_par_remp_2pl"] = { "n" .. al .. base .. "a"}
	data.forms["pos_par_remp_c1"]  = {        al .. base .. "a"}
	data.forms["pos_par_remp_c2"]  = { "b" .. al .. base .. "a"}
	data.forms["pos_par_remp_c3"]  = { "w" .. al .. base .. "a"}
	data.forms["pos_par_remp_c4"]  = { "y" .. al .. base .. "a"}
	data.forms["pos_par_remp_c5"]  = { "l" .. al .. base .. "a"}
	data.forms["pos_par_remp_c6"]  = {        al .. base .. "a"}
	data.forms["pos_par_remp_c7"]  = { "s" .. al .. base .. "a"}
	data.forms["pos_par_remp_c8"]  = { "z" .. al .. base .. "a"}
	data.forms["pos_par_remp_c9"]  = { "y" .. al .. base .. "a"}
	data.forms["pos_par_remp_c10"] = { "z" .. al .. base .. "a"}
	data.forms["pos_par_remp_c11"] = { "l" .. w .. al .. base .. "a"}
	data.forms["pos_par_remp_c14"] = { "b" .. al .. base .. "a"}
	data.forms["pos_par_remp_c15"] = { "k" .. w .. al .. base .. "a"}
	data.forms["pos_par_remp_c17"] = { "k" .. w .. al .. base .. "a"}
	
	data.forms["neg_abs_remp_1sg"] = data.forms["neg_abs_recp_1sg"]
	data.forms["neg_abs_remp_2sg"] = data.forms["neg_abs_recp_2sg"]
	data.forms["neg_abs_remp_1pl"] = data.forms["neg_abs_recp_1pl"]
	data.forms["neg_abs_remp_2pl"] = data.forms["neg_abs_recp_2pl"]
	data.forms["neg_abs_remp_c1"]  = data.forms["neg_abs_recp_c1"] 
	data.forms["neg_abs_remp_c2"]  = data.forms["neg_abs_recp_c2"] 
	data.forms["neg_abs_remp_c3"]  = data.forms["neg_abs_recp_c3"] 
	data.forms["neg_abs_remp_c4"]  = data.forms["neg_abs_recp_c4"] 
	data.forms["neg_abs_remp_c5"]  = data.forms["neg_abs_recp_c5"] 
	data.forms["neg_abs_remp_c6"]  = data.forms["neg_abs_recp_c6"] 
	data.forms["neg_abs_remp_c7"]  = data.forms["neg_abs_recp_c7"] 
	data.forms["neg_abs_remp_c8"]  = data.forms["neg_abs_recp_c8"] 
	data.forms["neg_abs_remp_c9"]  = data.forms["neg_abs_recp_c9"] 
	data.forms["neg_abs_remp_c10"] = data.forms["neg_abs_recp_c10"]
	data.forms["neg_abs_remp_c11"] = data.forms["neg_abs_recp_c11"]
	data.forms["neg_abs_remp_c14"] = data.forms["neg_abs_recp_c14"]
	data.forms["neg_abs_remp_c15"] = data.forms["neg_abs_recp_c15"]
	data.forms["neg_abs_remp_c17"] = data.forms["neg_abs_recp_c17"]
	
	data.forms["neg_rel_remp_1sg"] = data.forms["neg_rel_recp_1sg"]
	data.forms["neg_rel_remp_2sg"] = data.forms["neg_rel_recp_2sg"]
	data.forms["neg_rel_remp_1pl"] = data.forms["neg_rel_recp_1pl"]
	data.forms["neg_rel_remp_2pl"] = data.forms["neg_rel_recp_2pl"]
	data.forms["neg_rel_remp_c1"]  = data.forms["neg_rel_recp_c1"] 
	data.forms["neg_rel_remp_c2"]  = data.forms["neg_rel_recp_c2"] 
	data.forms["neg_rel_remp_c3"]  = data.forms["neg_rel_recp_c3"] 
	data.forms["neg_rel_remp_c4"]  = data.forms["neg_rel_recp_c4"] 
	data.forms["neg_rel_remp_c5"]  = data.forms["neg_rel_recp_c5"] 
	data.forms["neg_rel_remp_c6"]  = data.forms["neg_rel_recp_c6"] 
	data.forms["neg_rel_remp_c7"]  = data.forms["neg_rel_recp_c7"] 
	data.forms["neg_rel_remp_c8"]  = data.forms["neg_rel_recp_c8"] 
	data.forms["neg_rel_remp_c9"]  = data.forms["neg_rel_recp_c9"] 
	data.forms["neg_rel_remp_c10"] = data.forms["neg_rel_recp_c10"]
	data.forms["neg_rel_remp_c11"] = data.forms["neg_rel_recp_c11"]
	data.forms["neg_rel_remp_c14"] = data.forms["neg_rel_recp_c14"]
	data.forms["neg_rel_remp_c15"] = data.forms["neg_rel_recp_c15"]
	data.forms["neg_rel_remp_c17"] = data.forms["neg_rel_recp_c17"]
	
	data.forms["neg_par_remp_1sg"] = data.forms["neg_par_recp_1sg"]
	data.forms["neg_par_remp_2sg"] = data.forms["neg_par_recp_2sg"]
	data.forms["neg_par_remp_1pl"] = data.forms["neg_par_recp_1pl"]
	data.forms["neg_par_remp_2pl"] = data.forms["neg_par_recp_2pl"]
	data.forms["neg_par_remp_c1"]  = data.forms["neg_par_recp_c1"] 
	data.forms["neg_par_remp_c2"]  = data.forms["neg_par_recp_c2"] 
	data.forms["neg_par_remp_c3"]  = data.forms["neg_par_recp_c3"] 
	data.forms["neg_par_remp_c4"]  = data.forms["neg_par_recp_c4"] 
	data.forms["neg_par_remp_c5"]  = data.forms["neg_par_recp_c5"] 
	data.forms["neg_par_remp_c6"]  = data.forms["neg_par_recp_c6"] 
	data.forms["neg_par_remp_c7"]  = data.forms["neg_par_recp_c7"] 
	data.forms["neg_par_remp_c8"]  = data.forms["neg_par_recp_c8"] 
	data.forms["neg_par_remp_c9"]  = data.forms["neg_par_recp_c9"] 
	data.forms["neg_par_remp_c10"] = data.forms["neg_par_recp_c10"]
	data.forms["neg_par_remp_c11"] = data.forms["neg_par_recp_c11"]
	data.forms["neg_par_remp_c14"] = data.forms["neg_par_recp_c14"]
	data.forms["neg_par_remp_c15"] = data.forms["neg_par_recp_c15"]
	data.forms["neg_par_remp_c17"] = data.forms["neg_par_recp_c17"]
	
	-- Potential
	data.forms["pos_abs_potn_1sg"] = {"nging" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_2sg"] = {  "ung" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_1pl"] = { "sing" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_2pl"] = { "ning" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c1"]  = {  "ang" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c2"]  = { "bang" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c3"]  = {  "ung" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c4"]  = {  "ing" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c5"]  = { "ling" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c6"]  = {  "ang" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c7"]  = { "sing" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c8"]  = { "zing" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c9"]  = {  "ing" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c10"] = { "zing" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c11"] = { "lung" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c14"] = { "bung" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c15"] = { "kung" .. a  .. base .. "a"}
	data.forms["pos_abs_potn_c17"] = { "kung" .. a  .. base .. "a"}
	
	data.forms["pos_par_potn_1sg"] = {"nging" .. a  .. base .. "a"}
	data.forms["pos_par_potn_2sg"] = {  "ung" .. a  .. base .. "a"}
	data.forms["pos_par_potn_1pl"] = { "sing" .. a  .. base .. "a"}
	data.forms["pos_par_potn_2pl"] = { "ning" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c1"]  = {  "eng" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c2"]  = { "beng" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c3"]  = {  "ung" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c4"]  = {  "ing" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c5"]  = { "ling" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c6"]  = {  "eng" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c7"]  = { "sing" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c8"]  = { "zing" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c9"]  = {  "ing" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c10"] = { "zing" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c11"] = { "lung" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c14"] = { "bung" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c15"] = { "kung" .. a  .. base .. "a"}
	data.forms["pos_par_potn_c17"] = { "kung" .. a  .. base .. "a"}
	
	data.forms["neg_abs_potn_1sg"] = {"nging" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_2sg"] = {  "ung" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_1pl"] = { "sing" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_2pl"] = { "ning" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c1"]  = {  "ang" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c2"]  = { "bang" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c3"]  = {  "ung" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c4"]  = {  "ing" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c5"]  = { "ling" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c6"]  = {  "ang" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c7"]  = { "sing" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c8"]  = { "zing" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c9"]  = {  "ing" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c10"] = { "zing" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c11"] = { "lung" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c14"] = { "bung" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c15"] = { "kung" .. e  .. base .. "e"}
	data.forms["neg_abs_potn_c17"] = { "kung" .. e  .. base .. "e"}
	
	data.forms["neg_par_potn_1sg"] = {"nging" .. e  .. base .. "e"}
	data.forms["neg_par_potn_2sg"] = {  "ung" .. e  .. base .. "e"}
	data.forms["neg_par_potn_1pl"] = { "sing" .. e  .. base .. "e"}
	data.forms["neg_par_potn_2pl"] = { "ning" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c1"]  = {  "eng" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c2"]  = { "beng" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c3"]  = {  "ung" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c4"]  = {  "ing" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c5"]  = { "ling" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c6"]  = {  "eng" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c7"]  = { "sing" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c8"]  = { "zing" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c9"]  = {  "ing" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c10"] = { "zing" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c11"] = { "lung" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c14"] = { "bung" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c15"] = { "kung" .. e  .. base .. "e"}
	data.forms["neg_par_potn_c17"] = { "kung" .. e  .. base .. "e"}
	
	-- Immediate future
	data.forms["pos_abs_immf_1sg"] = {"ngizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_2sg"] = {  "uzo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_1pl"] = { "sizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_2pl"] = { "nizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c1"]  = {  "uzo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c2"]  = { "bazo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c3"]  = {  "uzo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c4"]  = {  "izo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c5"]  = { "lizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c6"]  = {  "azo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c7"]  = { "sizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c8"]  = { "zizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c9"]  = {  "izo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c10"] = { "zizo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c11"] = { "luzo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c14"] = { "buzo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c15"] = { "kuzo" .. ku .. base .. "a"}
	data.forms["pos_abs_immf_c17"] = { "kuzo" .. ku .. base .. "a"}
	
	data.forms["pos_rel_immf_1sg"] = {"engizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_2sg"] = {   "ozo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_1pl"] = { "esizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_2pl"] = { "enizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c1"]  = {   "ozo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c2"]  = { "abazo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c3"]  = {   "ozo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c4"]  = {   "ezo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c5"]  = { "elizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c6"]  = {   "azo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c7"]  = { "esizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c8"]  = { "ezizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c9"]  = {   "ezo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c10"] = { "ezizo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c11"] = { "oluzo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c14"] = { "obuzo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c15"] = { "okuzo" .. ku .. base .. "a"}
	data.forms["pos_rel_immf_c17"] = { "okuzo" .. ku .. base .. "a"}
	
	data.forms["pos_par_immf_1sg"] = {"ngizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_2sg"] = {  "uzo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_1pl"] = { "sizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_2pl"] = { "nizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c1"]  = {  "ezo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c2"]  = { "bezo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c3"]  = {  "uzo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c4"]  = {  "izo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c5"]  = { "lizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c6"]  = {  "ezo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c7"]  = { "sizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c8"]  = { "zizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c9"]  = {  "izo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c10"] = { "zizo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c11"] = { "luzo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c14"] = { "buzo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c15"] = { "kuzo" .. ku .. base .. "a"}
	data.forms["pos_par_immf_c17"] = { "kuzo" .. ku .. base .. "a"}
	
	data.forms["neg_abs_immf_1sg"] = {"angizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_2sg"] = { "awuzu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_1pl"] = { "asizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_2pl"] = { "anizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c1"]  = { "akazu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c2"]  = { "abazu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c3"]  = { "awuzu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c4"]  = { "ayizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c5"]  = { "alizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c6"]  = { "awazu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c7"]  = { "asizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c8"]  = { "azizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c9"]  = { "ayizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c10"] = { "azizu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c11"] = { "aluzu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c14"] = { "abuzu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c15"] = { "akuzu" .. ku .. base .. "a"}
	data.forms["neg_abs_immf_c17"] = { "akuzu" .. ku .. base .. "a"}
	
	data.forms["neg_par_immf_1sg"] = {"ngingezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_2sg"] = {  "ungezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_1pl"] = { "singezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_2pl"] = { "ningezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c1"]  = {  "engezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c2"]  = { "bengezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c3"]  = {  "ungezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c4"]  = {  "ingezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c5"]  = { "lingezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c6"]  = {  "engezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c7"]  = { "singezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c8"]  = { "zingezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c9"]  = {  "ingezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c10"] = { "zingezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c11"] = { "lungezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c14"] = { "bungezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c15"] = { "kungezu" .. ku .. base .. "a"}
	data.forms["neg_par_immf_c17"] = { "kungezu" .. ku .. base .. "a"}
	
	-- Remote future
	data.forms["pos_abs_remf_1sg"] = {"ngiyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_2sg"] = {  "uyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_1pl"] = { "siyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_2pl"] = { "niyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c1"]  = {  "uyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c2"]  = { "bayo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c3"]  = {  "uyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c4"]  = {  "iyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c5"]  = { "liyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c6"]  = {  "ayo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c7"]  = { "siyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c8"]  = { "ziyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c9"]  = {  "iyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c10"] = { "ziyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c11"] = { "luyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c14"] = { "buyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c15"] = { "kuyo" .. ku .. base .. "a"}
	data.forms["pos_abs_remf_c17"] = { "kuyo" .. ku .. base .. "a"}
	
	data.forms["pos_rel_remf_1sg"] = {"engiyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_2sg"] = {   "oyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_1pl"] = { "esiyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_2pl"] = { "eniyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c1"]  = {   "oyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c2"]  = { "abayo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c3"]  = {   "oyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c4"]  = {   "eyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c5"]  = { "eliyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c6"]  = {   "ayo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c7"]  = { "esiyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c8"]  = { "eziyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c9"]  = {   "eyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c10"] = { "eziyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c11"] = { "oluyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c14"] = { "obuyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c15"] = { "okuyo" .. ku .. base .. "a"}
	data.forms["pos_rel_remf_c17"] = { "okuyo" .. ku .. base .. "a"}
	
	data.forms["pos_par_remf_1sg"] = {"ngiyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_2sg"] = {  "uyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_1pl"] = { "siyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_2pl"] = { "niyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c1"]  = {  "eyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c2"]  = { "beyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c3"]  = {  "uyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c4"]  = {  "iyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c5"]  = { "liyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c6"]  = {  "eyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c7"]  = { "siyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c8"]  = { "ziyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c9"]  = {  "iyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c10"] = { "ziyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c11"] = { "luyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c14"] = { "buyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c15"] = { "kuyo" .. ku .. base .. "a"}
	data.forms["pos_par_remf_c17"] = { "kuyo" .. ku .. base .. "a"}
	
	data.forms["neg_abs_remf_1sg"] = {"angiyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_2sg"] = { "awuyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_1pl"] = { "asiyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_2pl"] = { "aniyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c1"]  = { "akayu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c2"]  = { "abayu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c3"]  = { "awuyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c4"]  = { "ayiyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c5"]  = { "aliyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c6"]  = { "awayu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c7"]  = { "asiyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c8"]  = { "aziyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c9"]  = { "ayiyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c10"] = { "aziyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c11"] = { "aluyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c14"] = { "abuyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c15"] = { "akuyu" .. ku .. base .. "a"}
	data.forms["neg_abs_remf_c17"] = { "akuyu" .. ku .. base .. "a"}
	
	data.forms["neg_par_remf_1sg"] = {"ngingeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_2sg"] = {  "ungeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_1pl"] = { "singeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_2pl"] = { "ningeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c1"]  = {  "engeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c2"]  = { "bengeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c3"]  = {  "ungeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c4"]  = {  "ingeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c5"]  = { "lingeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c6"]  = {  "engeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c7"]  = { "singeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c8"]  = { "zingeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c9"]  = {  "ingeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c10"] = { "zingeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c11"] = { "lungeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c14"] = { "bungeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c15"] = { "kungeyu" .. ku .. base .. "a"}
	data.forms["neg_par_remf_c17"] = { "kungeyu" .. ku .. base .. "a"}
	
	-- Present subjunctive
	data.forms["pos_pres_subj_1sg"] = {"ng" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_2sg"] = {        u2 .. base .. "e"}
	data.forms["pos_pres_subj_1pl"] = { "s" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_2pl"] = { "n" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_c1"]  = {        a  .. base .. "e"}
	data.forms["pos_pres_subj_c2"]  = { "b" .. a  .. base .. "e"}
	data.forms["pos_pres_subj_c3"]  = {        u2 .. base .. "e"}
	data.forms["pos_pres_subj_c4"]  = {        i2 .. base .. "e"}
	data.forms["pos_pres_subj_c5"]  = { "l" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_c6"]  = {        a  .. base .. "e"}
	data.forms["pos_pres_subj_c7"]  = { "s" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_c8"]  = { "z" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_c9"]  = {        i2 .. base .. "e"}
	data.forms["pos_pres_subj_c10"] = { "z" .. i  .. base .. "e"}
	data.forms["pos_pres_subj_c11"] = { "l" .. u3 .. base .. "e"}
	data.forms["pos_pres_subj_c14"] = { "b" .. u  .. base .. "e"}
	data.forms["pos_pres_subj_c15"] = { "k" .. u3 .. base .. "e"}
	data.forms["pos_pres_subj_c17"] = { "k" .. u3 .. base .. "e"}
	
	data.forms["neg_pres_subj_1sg"] = {"nging" .. a  .. base .. neg}
	data.forms["neg_pres_subj_2sg"] = {  "ung" .. a  .. base .. neg}
	data.forms["neg_pres_subj_1pl"] = { "sing" .. a  .. base .. neg}
	data.forms["neg_pres_subj_2pl"] = { "ning" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c1"]  = {  "ang" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c2"]  = { "bang" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c3"]  = {  "ung" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c4"]  = {  "ing" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c5"]  = { "ling" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c6"]  = {  "ang" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c7"]  = { "sing" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c8"]  = { "zing" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c9"]  = {  "ing" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c10"] = { "zing" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c11"] = { "lung" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c14"] = { "bung" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c15"] = { "kung" .. a  .. base .. neg}
	data.forms["neg_pres_subj_c17"] = { "kung" .. a  .. base .. neg}
	
	-- Past subjunctive
	data.forms["pos_past_subj_1sg"] = {"ng" .. a .. base .. "a"}
	data.forms["pos_past_subj_2sg"] = { "w" .. a .. base .. "a"}
	data.forms["pos_past_subj_1pl"] = { "s" .. a .. base .. "a"}
	data.forms["pos_past_subj_2pl"] = { "n" .. a .. base .. "a"}
	data.forms["pos_past_subj_c1"]  = { "w" .. a .. base .. "a"}
	data.forms["pos_past_subj_c2"]  = { "b" .. a .. base .. "a"}
	data.forms["pos_past_subj_c3"]  = { "w" .. a .. base .. "a"}
	data.forms["pos_past_subj_c4"]  = { "y" .. a .. base .. "a"}
	data.forms["pos_past_subj_c5"]  = { "l" .. a .. base .. "a"}
	data.forms["pos_past_subj_c6"]  = {        a .. base .. "a"}
	data.forms["pos_past_subj_c7"]  = { "s" .. a .. base .. "a"}
	data.forms["pos_past_subj_c8"]  = { "z" .. a .. base .. "a"}
	data.forms["pos_past_subj_c9"]  = { "y" .. a .. base .. "a"}
	data.forms["pos_past_subj_c10"] = { "z" .. a .. base .. "a"}
	data.forms["pos_past_subj_c11"] = { "l" .. w .. a .. base .. "a"}
	data.forms["pos_past_subj_c14"] = { "b" .. a .. base .. "a"}
	data.forms["pos_past_subj_c15"] = { "k" .. w .. a .. base .. "a"}
	data.forms["pos_past_subj_c17"] = { "k" .. w .. a .. base .. "a"}
	
	data.forms["neg_past_subj_1sg"] = {"ngang" .. a  .. base .. "a", "ang" .. a .. base .. "a", "angang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_2sg"] = { "wang" .. a  .. base .. "a", "aw" .. a .. base .. "a", "awang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_1pl"] = { "sang" .. a  .. base .. "a", "as" .. a .. base .. "a", "asang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_2pl"] = { "nang" .. a  .. base .. "a", "an" .. a .. base .. "a", "anang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c1"]  = { "wang" .. a  .. base .. "a", "ak" .. a .. base .. "a", "akang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c2"]  = { "bang" .. a  .. base .. "a", "ab" .. a .. base .. "a", "abang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c3"]  = { "wang" .. a  .. base .. "a", "aw" .. a .. base .. "a", "awang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c4"]  = { "yang" .. a  .. base .. "a", "ay" .. a .. base .. "a", "ayang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c5"]  = { "lang" .. a  .. base .. "a", "al" .. a .. base .. "a", "alang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c6"]  = {  "ang" .. a  .. base .. "a", "aw" .. a .. base .. "a", "awang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c7"]  = { "sang" .. a  .. base .. "a", "as" .. a .. base .. "a", "asang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c8"]  = { "zang" .. a  .. base .. "a", "az" .. a .. base .. "a", "azang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c9"]  = { "yang" .. a  .. base .. "a", "ay" .. a .. base .. "a", "ayang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c10"] = { "zang" .. a  .. base .. "a", "az" .. a .. base .. "a", "azang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c11"] = { "lwang" .. a .. base .. "a", "al" .. w .. a .. base .. "a", "alwang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c14"] = { "bang" .. a  .. base .. "a", "ab" .. a .. base .. "a", "abang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c15"] = { "kwang" .. a .. base .. "a", "ak" .. w .. a .. base .. "a", "akwang" .. a  .. base .. "a"}
	data.forms["neg_past_subj_c17"] = { "kwang" .. a .. base .. "a", "ak" .. w .. a .. base .. "a", "akwang" .. a  .. base .. "a"}
	
	return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end


-- Make the table
function make_table(data)
	local function repl(param)
		if param == "info" then
			return mw.getContentLanguage():ucfirst(data.info or "")
		end
		
		local form = data.forms[param]
		
		if not form or #form == 0 then
			return "—"
		end
		
		local ret = {}
		
		for key, subform in ipairs(form) do
			table.insert(ret, m_links.full_link({lang = lang, term = subform}))
		end
		
		return table.concat(ret, ", ")
	end
	
	local names = {
		["inf"] = "infinitive",
		["impr"] = "imperative",
		
		["pres"] = "present",
		["recp"] = "recent past",
		["remp"] = "remote past",
		["potn"] = "potential",
		["immf"] = "immediate future",
		["remf"] = "remote future",
		
		["pres_subj"] = "present subjunctive",
		["past_subj"] = "past subjunctive",
		
		["pos"] = "positive",
		["pos_abs"] = "positive absolute",
		["pos_rel"] = "positive relative",
		["pos_par"] = "positive participial",
		["neg"] = "negative",
		["neg_abs"] = "negative absolute",
		["neg_rel"] = "negative relative",
		["neg_par"] = "negative participial",
		
		["simp"] = "simple",
		["objc"] = "+ object concord",
		
		["sg"] = "singular",
		["1sg"] = "1st singular",
		["2sg"] = "2nd singular",
		["pl"] = "plural",
		["1pl"] = "1st plural",
		["2pl"] = "2nd plural",
		
		["c1"] = "class 1",
		["c2"] = "class 2",
		["c3"] = "class 3",
		["c4"] = "class 4",
		["c5"] = "class 5",
		["c6"] = "class 6",
		["c7"] = "class 7",
		["c8"] = "class 8",
		["c9"] = "class 9",
		["c10"] = "class 10",
		["c11"] = "class 11",
		["c14"] = "class 14",
		["c15"] = "class 15",
		["c17"] = "class 17",
	}
	
	local classes = {"1sg", "2sg", "1pl", "2pl", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c14", "c15", "c17"}
	local numbers = {"sg", "pl"}
	local rows = {"inf", "impr", "pres", "recp", "remp", "potn", "immf", "remf", "pres_subj", "past_subj"}
	local cols_rel = {"pos_abs", "pos_rel", "pos_par", "neg_abs", "neg_rel", "neg_par"}
	local cols_norel = {"pos", "neg"}
	local cols_impr = {"simp", "objc"}
	
	local maxcols = 0
	
	for _, row in ipairs(rows) do
		maxcols = math.max(maxcols, #row)
	end
	
	local wikicode = {}
	
	table.insert(wikicode, "{| class=\"wikitable inflection-table vsSwitcher vsToggleCategory-inflection\" style=\"border-style: double; border-width: 3px; margin: 0;\"")
	table.insert(wikicode, "|-")
	table.insert(wikicode, "! class=\"vsToggleElement\" style=\"background: #CCC; text-align: left;\" colspan=\"" .. tostring(maxcols + 1) .. "\" | {{{info}}}")
	
	table.insert(wikicode, "|- class=\"vsShow\"")
	table.insert(wikicode, "! style=\"min-width: 8em;\" |"  .. mw.getContentLanguage():ucfirst(names["inf"]))
	table.insert(wikicode, "| style=\"min-width: 12em;\" | {{{pos_inf}}}")
	
	for _, row in ipairs(rows) do
		local cols = cols_rel
		
		if row == "inf" or row == "pres_subj" or row == "past_subj" then
			cols = cols_norel
		elseif row == "impr" then
			cols = cols_impr
		end
		
		if row ~= "inf" then
			table.insert(wikicode, "|- class=\"vsHide\"")
			table.insert(wikicode, "|")
			table.insert(wikicode, "! colspan=\"" .. tostring(#cols) .. "\" | " .. mw.getContentLanguage():ucfirst(names[row]))
		end
		
		table.insert(wikicode, "|- class=\"vsHide\"")
		table.insert(wikicode, "| style=\"min-width: 8em;\" |")
		
		for _, col in ipairs(cols) do
			table.insert(wikicode, "! style=\"min-width: 12em;\" | " .. mw.getContentLanguage():ucfirst(names[col]))
		end
		
		for _, class in ipairs(row == "inf" and {"inf"} or row == "impr" and numbers or classes) do
			table.insert(wikicode, "|- class=\"vsHide\"")
			table.insert(wikicode, "! " .. mw.getContentLanguage():ucfirst(names[class]))
			
			for _, col in ipairs(cols) do
				table.insert(wikicode, "| {{{" .. col .. "_" .. row .. (row == "inf" and "" or "_" .. class) .. "}}}")
			end
		end
	end
	
	table.insert(wikicode, "|}")
	
	wikicode = table.concat(wikicode, "\n")
	
	return mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)
end


function export.derived_verbs(frame)
	local labels = {
		["appl"] = "applicative",
		["caus"] = "causative",
		["dim"] = "diminutive",
		["intn"] = "intensive",
		["neut"] = "neuter-passive",
		["pasv"] = "passive",
		["pfv"] = "perfective",
		["reci"] = "reciprocal",
		["stat"] = "stative",
	}
	
	local params = {
		["appl"] = {list = true},
		["caus"] = {list = true},
		["dim"] = {list = true},
		["intn"] = {list = true},
		["neut"] = {list = true},
		["pasv"] = {list = true},
		["pfv"] = {list = true},
		["reci"] = {list = true},
		["stat"] = {list = true},
		}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	local forms = {}
	
	for _, label in ipairs({"appl", "caus", "dim", "intn", "neut", "pasv", "pfv", "reci", "stat"}) do
		if #args[label] > 0 then
			for i, form in ipairs(args[label]) do
				args[label][i] = m_links.full_link({lang = lang, term = form, alt = "-" .. form, pos = i == #args[label] and labels[label] or nil})
			end
			
			table.insert(forms, "* " .. table.concat(args[label], ", "))
		end
	end
	
	return table.concat(forms, "\n")
end


return export