-- Questo modulo contiene il codice per il template:It-conj, che genera la coniugazione di tutti i verbi italiani
-- La funzione itconj genera la tabella di coniugazione utilizzando i parametri passati dal template

p = {}

local function categorizza(cat, titolo)
local NS = tostring(mw.title.getCurrentTitle().namespace);

	if NS == '100' then
		return string.format('[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, titolo)
	else
		return ''
	end
end


function p.itconj(frame)
    pframe = frame:getParent()
    config = frame.args
    args = pframe.args
    titolo = mw.title.getCurrentTitle().subpageText --il titolo della pagina, senza 'Appendice/Coniugazioni/Italiano'
-- Argomenti passati dal template
    stem = args[1]
    aus = config["ausiliare"] or " "
-- Inizializzazione di tutte le variabili interne, che potrebbero altrimenti risultare nulle
	descr = ""; conjdescr = ""; conjcat = ""; reg_irreg = ""; irregolare = ""; irregolarecat = ""; irregolaredescr = ""
	refl_exist = ""; refl_link = ""; refl_conjlink = ""
    ausiliare = ""
    inf = ""; ger = ""; par= ""; pp = ""; pplur = ""; pprifl = ""
    pres1s = ""; pres1s2 = ""; pres2s=""; pres3s = ""; pres1p = ""; pres2p = ""; pres3p = ""
    imperf1s = ""; imperf2s=""; imperf3s = ""; imperf1p = ""; imperf2p = ""; imperf3p = ""
    prem1s = ""; prem1s2 = ""; prem2s = ""; prem3s = ""; prem3s2 = ""; prem1p = ""; prem2p = ""; prem3p = ""; prem3p2 = ""
    fut1s = ""; fut2s=""; fut3s = ""; fut1p =" "; fut2p = ""; fut3p = ""
    cond1s = ""; cond2s=""; cond3s = ""; cond1p = ""; cond2p = ""; cond3p = ""
    cong123s = ""; cong3s = nil; cong1p = ""; cong2p = ""; cong3p = ""
    congimp12s = ""; congimp3s = ""; congimp1p = ""; congimp2p = ""; congimp3p = ""
    imp2s=""; imp2s2 = ""; imp2sneg = ""; imp2s3 = ""; imp3s = ""; imp1p = ""; imp2p = ""; imp3p = ""
    mi = ""; ti = ""; si = ""; ci = ""; vi = ""
    paspros = ""; trappros = ""; traprem = ""; futant = ""; condpas = ""; congpas = ""; congtrap = ""
    paspros1s = ""; paspros2s=""; paspros3s = ""; paspros1p = ""; paspros2p = ""; paspros3p = ""
    trappros1s = ""; trappros2s=""; trappros3s = ""; trappros1p = ""; trappros2p = ""; trappros3p = ""
    traprem1s = ""; traprem2s=""; traprem3s = ""; traprem1p = ""; traprem2p = ""; traprem3p = ""
    futant1s = ""; futant2s=""; futant3s = ""; futant1p = ""; futant2p = ""; futant3p = ""
    condpas1s = ""; condpas2s=""; condpas3s = ""; condpas1p = ""; condpas2p = ""; condpas3p = ""
    congpas1s = ""; congpas2s=""; congpas3s = ""; congpas1p = ""; congpas2p = ""; congpas3p = ""
    congtrap1s = ""; congtrap2s=""; congtrap3s = ""; congtrap1p = ""; congtrap2p = ""; congtrap3p = ""
-- A partire dalla coniugazione, genera le forme coniugate standard per ciascuna tipologia di verbo
    type = config["type"]
    if type == nil then
        inf = p.wiki(args["inf"])
    elseif (type == "are") or (type == "arsi") then
		if mw.title.new(stem.. "arsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "arsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "arsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "arsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "are")
        ger = p.wiki(stem .. "ando");  par = p.wiki(stem .. "ante");  pp = p.wiki(stem .. "ato"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "o");  pres2s = p.wiki(stem .. "i");  pres3s = p.wiki(stem .. "a")
        pres1p = p.wiki(stem .. "iamo");  pres2p = p.wiki(stem .. "ate");  pres3p = p.wiki(stem .. "ano")        
        imperf1s = p.wiki(stem .. "avo");  imperf2s = p.wiki(stem .. "avi");  imperf3s = p.wiki(stem .. "ava")
        imperf1p = p.wiki(stem .. "avamo");  imperf2p = p.wiki(stem .. "avate");  imperf3p = p.wiki(stem .. "avano") 
        prem1s = p.wiki(stem .. "ai");  prem2s = p.wiki(stem .. "asti");  prem3s = p.wiki(stem .. "ò")
        prem1p = p.wiki(stem .. "ammo");  prem2p = p.wiki(stem .. "aste");  prem3p = p.wiki(stem .. "arono") 
        fut1s = p.wiki(stem .. "erò");  fut2s = p.wiki(stem .. "erai");  fut3s = p.wiki(stem .. "erà")
        fut1p = p.wiki(stem .. "eremo");  fut2p = p.wiki(stem .. "erete");  fut3p = p.wiki(stem .. "eranno") 
        cond1s = p.wiki(stem .. "erei");  cond2s = p.wiki(stem .. "eresti");  cond3s = p.wiki(stem .. "erebbe")
        cond1p = p.wiki(stem .. "eremmo");  cond2p = p.wiki(stem .. "ereste");  cond3p = p.wiki(stem .. "erebbero") 
        cong123s = p.wiki(stem .. "i"); cong3s = nil
        cong1p = p.wiki(stem .. "iamo");  cong2p = p.wiki(stem .. "iate");  cong3p = p.wiki(stem .. "ino")
        congimp12s = p.wiki(stem .. "assi");  congimp3s = p.wiki(stem .. "asse")
        congimp1p = p.wiki(stem .. "assimo");  congimp2p = p.wiki(stem .. "aste");  congimp3p = p.wiki(stem .. "assero")
        imp2s = p.wiki(stem .. "a");  imp3s = p.wiki(stem .. "i")
        imp1p = p.wiki(stem .. "iamo");  imp2p = p.wiki(stem .. "ate");  imp3p = p.wiki(stem .. "ino")
    elseif (type == "care") or (type == "carsi") or (type == "gare") or (type == "garsi") then
		if mw.title.new(stem.. "arsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "arsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "arsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "arsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "are")
        ger = p.wiki(stem .. "ando");  par = p.wiki(stem .. "ante");  pp = p.wiki(stem .. "ato"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "o");  pres2s = p.wiki(stem .. "hi");  pres3s = p.wiki(stem .. "a")
        pres1p = p.wiki(stem .. "hiamo");  pres2p = p.wiki(stem .. "ate");  pres3p = p.wiki(stem .. "ano")        
        imperf1s = p.wiki(stem .. "avo");  imperf2s = p.wiki(stem .. "avi");  imperf3s = p.wiki(stem .. "ava")
        imperf1p = p.wiki(stem .. "avamo");  imperf2p = p.wiki(stem .. "avate");  imperf3p = p.wiki(stem .. "avano") 
        prem1s = p.wiki(stem .. "ai");  prem2s = p.wiki(stem .. "asti");  prem3s = p.wiki(stem .. "ò")
        prem1p = p.wiki(stem .. "ammo");  prem2p = p.wiki(stem .. "aste");  prem3p = p.wiki(stem .. "arono") 
        fut1s = p.wiki(stem .. "herò");  fut2s = p.wiki(stem .. "herai");  fut3s = p.wiki(stem .. "herà")
        fut1p = p.wiki(stem .. "heremo");  fut2p = p.wiki(stem .. "herete");  fut3p = p.wiki(stem .. "heranno") 
        cond1s = p.wiki(stem .. "herei");  cond2s = p.wiki(stem .. "heresti");  cond3s = p.wiki(stem .. "herebbe")
        cond1p = p.wiki(stem .. "heremmo");  cond2p = p.wiki(stem .. "hereste");  cond3p = p.wiki(stem .. "herebbero") 
        cong123s = p.wiki(stem .. "hi"); cong3s = nil
        cong1p = p.wiki(stem .. "hiamo");  cong2p = p.wiki(stem .. "hiate");  cong3p = p.wiki(stem .. "hino")
        congimp12s = p.wiki(stem .. "assi");  congimp3s = p.wiki(stem .. "asse")
        congimp1p = p.wiki(stem .. "assimo");  congimp2p = p.wiki(stem .. "aste");  congimp3p = p.wiki(stem .. "assero")
        imp2s = p.wiki(stem .. "a");  imp3s = p.wiki(stem .. "hi")
        imp1p = p.wiki(stem .. "hiamo");  imp2p = p.wiki(stem .. "ate");  imp3p = p.wiki(stem .. "hino") 
    elseif (type == "iare") or (type == "iarsi") then
		if mw.title.new(stem.. "arsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "arsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "arsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "arsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "are")
        ger = p.wiki(stem .. "ando");  par = p.wiki(stem .. "ante");  pp = p.wiki(stem .. "ato"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "o");  pres2s = p.wiki(stem);  pres3s = p.wiki(stem .. "a")
        pres1p = p.wiki(stem .. "amo");  pres2p = p.wiki(stem .. "ate");  pres3p = p.wiki(stem .. "ano")        
        imperf1s = p.wiki(stem .. "avo");  imperf2s = p.wiki(stem .. "avi");  imperf3s = p.wiki(stem .. "ava")
        imperf1p = p.wiki(stem .. "avamo");  imperf2p = p.wiki(stem .. "avate");  imperf3p = p.wiki(stem .. "avano") 
        prem1s = p.wiki(stem .. "ai");  prem2s = p.wiki(stem .. "asti");  prem3s = p.wiki(stem .. "ò")
        prem1p = p.wiki(stem .. "ammo");  prem2p = p.wiki(stem .. "aste");  prem3p = p.wiki(stem .. "arono") 
        fut1s = p.wiki(stem .. "erò");  fut2s = p.wiki(stem .. "erai");  fut3s = p.wiki(stem .. "erà")
        fut1p = p.wiki(stem .. "eremo");  fut2p = p.wiki(stem .. "erete");  fut3p = p.wiki(stem .. "eranno") 
        cond1s = p.wiki(stem .. "erei");  cond2s = p.wiki(stem .. "eresti");  cond3s = p.wiki(stem .. "erebbe")
        cond1p = p.wiki(stem .. "eremmo");  cond2p = p.wiki(stem .. "ereste");  cond3p = p.wiki(stem .. "erebbero") 
        cong123s = p.wiki(stem); cong3s = nil
        cong1p = p.wiki(stem .. "amo");  cong2p = p.wiki(stem .. "ate");  cong3p = p.wiki(stem .. "no")
        congimp12s = p.wiki(stem .. "assi");  congimp3s = p.wiki(stem .. "asse")
        congimp1p = p.wiki(stem .. "assimo");  congimp2p = p.wiki(stem .. "aste");  congimp3p = p.wiki(stem .. "assero")
        imp2s = p.wiki(stem .. "a");  imp3s = p.wiki(stem)
        imp1p = p.wiki(stem .. "amo");  imp2p = p.wiki(stem .. "ate");  imp3p = p.wiki(stem .. "no")        
    elseif (type == "ciare") or (type == "ciarsi") or (type == "giare") or (type == "giarsi") then
		if mw.title.new(stem.. "iarsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "iarsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "iarsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "iarsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "iare")
        ger = p.wiki(stem .. "iando");  par = p.wiki(stem .. "iante");  pp = p.wiki(stem .. "iato"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "io");  pres2s = p.wiki(stem .. "i");  pres3s = p.wiki(stem .. "ia")
        pres1p = p.wiki(stem .. "iamo");  pres2p = p.wiki(stem .. "iate");  pres3p = p.wiki(stem .. "iano")
        imperf1s = p.wiki(stem .. "iavo");  imperf2s = p.wiki(stem .. "iavi");  imperf3s = p.wiki(stem .. "iava")
        imperf1p = p.wiki(stem .. "iavamo");  imperf2p = p.wiki(stem .. "iavate");  imperf3p = p.wiki(stem .. "iavano")
        prem1s = p.wiki(stem .. "iai");  prem2s = p.wiki(stem .. "iasti");  prem3s = p.wiki(stem .. "iò")
        prem1p = p.wiki(stem .. "iammo");  prem2p = p.wiki(stem .. "iaste");  prem3p = p.wiki(stem .. "iarono") 
        fut1s = p.wiki(stem .. "erò");  fut2s = p.wiki(stem .. "erai");  fut3s = p.wiki(stem .. "erà")
        fut1p = p.wiki(stem .. "eremo");  fut2p = p.wiki(stem .. "erete");  fut3p = p.wiki(stem .. "eranno") 
        cond1s = p.wiki(stem .. "erei");  cond2s = p.wiki(stem .. "eresti");  cond3s = p.wiki(stem .. "erebbe")
        cond1p = p.wiki(stem .. "eremmo");  cond2p = p.wiki(stem .. "ereste");  cond3p = p.wiki(stem .. "erebbero") 
        cong123s = p.wiki(stem .. "i"); cong3s = nil
        cong1p = p.wiki(stem .. "iamo");  cong2p = p.wiki(stem .. "iate");  cong3p = p.wiki(stem .. "ino")
        congimp12s = p.wiki(stem .. "iassi");  congimp3s = p.wiki(stem .. "iasse")
        congimp1p = p.wiki(stem .. "iassimo");  congimp2p = p.wiki(stem .. "iaste");  congimp3p = p.wiki(stem .. "iassero")
        imp2s = p.wiki(stem .. "ia");  imp3s = p.wiki(stem .. "i")
        imp1p = p.wiki(stem .. "iamo");  imp2p = p.wiki(stem .. "iate");  imp3p = p.wiki(stem .. "ino")
    elseif (type == "ere") or (type == "ersi") then
		if mw.title.new(stem.. "ersi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "ersi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "ersi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "ersi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "ere")
        ger = p.wiki(stem .. "endo");  par = p.wiki(stem .. "ente");  pp = p.wiki(stem .. "uto"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "o");  pres2s = p.wiki(stem .. "i");  pres3s = p.wiki(stem .. "e")
        pres1p = p.wiki(stem .. "iamo");  pres2p = p.wiki(stem .. "ete");  pres3p = p.wiki(stem .. "ono")        
        imperf1s = p.wiki(stem .. "evo");  imperf2s = p.wiki(stem .. "evi");  imperf3s = p.wiki(stem .. "eva")
        imperf1p = p.wiki(stem .. "evamo");  imperf2p = p.wiki(stem .. "evate");  imperf3p = p.wiki(stem .. "evano") 
        prem1s = p.wiki(stem .. "etti"); if args["prem1s"] ~= nil then prem1s2 = '' else prem1s2 = p.wiki(stem .. "ei") end; prem2s = p.wiki(stem .. "esti");  prem3s = p.wiki(stem .. "ette"); if args["prem3s"] ~= nil then prem3s2 = '' else prem3s2 = p.wiki(stem .. "é") end
        prem1p = p.wiki(stem .. "emmo");  prem2p = p.wiki(stem .. "este");  prem3p = p.wiki(stem .. "ettero"); if args["prem3p"] ~= nil then prem3p2 = '' else prem3p2 = p.wiki(stem .. "erono") end 
        fut1s = p.wiki(stem .. "erò");  fut2s = p.wiki(stem .. "erai");  fut3s = p.wiki(stem .. "erà")
        fut1p = p.wiki(stem .. "eremo");  fut2p = p.wiki(stem .. "erete");  fut3p = p.wiki(stem .. "eranno") 
        cond1s = p.wiki(stem .. "erei");  cond2s = p.wiki(stem .. "eresti");  cond3s = p.wiki(stem .. "erebbe")
        cond1p = p.wiki(stem .. "eremmo");  cond2p = p.wiki(stem .. "ereste");  cond3p = p.wiki(stem .. "erebbero") 
        cong123s = p.wiki(stem .. "a"); cong3s = nil
        cong1p = p.wiki(stem .. "iamo");  cong2p = p.wiki(stem .. "iate");  cong3p = p.wiki(stem .. "ano")
        congimp12s = p.wiki(stem .. "essi");  congimp3s = p.wiki(stem .. "esse")
        congimp1p = p.wiki(stem .. "essimo");  congimp2p = p.wiki(stem .. "este");  congimp3p = p.wiki(stem .. "essero")
        imp2s = p.wiki(stem .. "i");  imp3s = p.wiki(stem .. "a")
        imp1p = p.wiki(stem .. "iamo");  imp2p = p.wiki(stem .. "ete");  imp3p = p.wiki(stem .. "ano")
    elseif (type == "gliere") or (type == "gliersi") then
		if mw.title.new(stem.. "gliersi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "gliersi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "gliersi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "gliersi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "gliere")
        ger = p.wiki(stem .. "gliendo");  par = p.wiki(stem .. "gliente");  pp = p.wiki(stem .. "lto"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "lgo");  pres2s = p.wiki(stem .. "gli");  pres3s = p.wiki(stem .. "glie")
        pres1p = p.wiki(stem .. "gliamo");  pres2p = p.wiki(stem .. "gliete");  pres3p = p.wiki(stem .. "lgono")        
        imperf1s = p.wiki(stem .. "glievo");  imperf2s = p.wiki(stem .. "glievi");  imperf3s = p.wiki(stem .. "glieva")
        imperf1p = p.wiki(stem .. "glievamo");  imperf2p = p.wiki(stem .. "glievate");  imperf3p = p.wiki(stem .. "glievano") 
        prem1s = p.wiki(stem .. "lsi"); prem2s = p.wiki(stem .. "gliesti");  prem3s = p.wiki(stem .. "lse")
        prem1p = p.wiki(stem .. "gliemmo");  prem2p = p.wiki(stem .. "glieste");  prem3p = p.wiki(stem .. "lsero")
        fut1s = p.wiki(stem .. "glierò");  fut2s = p.wiki(stem .. "glierai");  fut3s = p.wiki(stem .. "glierà")
        fut1p = p.wiki(stem .. "glieremo");  fut2p = p.wiki(stem .. "glierete");  fut3p = p.wiki(stem .. "glieranno") 
        cond1s = p.wiki(stem .. "glierei");  cond2s = p.wiki(stem .. "glieresti");  cond3s = p.wiki(stem .. "glierebbe")
        cond1p = p.wiki(stem .. "glieremmo");  cond2p = p.wiki(stem .. "gliereste");  cond3p = p.wiki(stem .. "glierebbero") 
        cong123s = p.wiki(stem .. "lga"); cong3s = nil
        cong1p = p.wiki(stem .. "gliamo");  cong2p = p.wiki(stem .. "gliate");  cong3p = p.wiki(stem .. "lgano")
        congimp12s = p.wiki(stem .. "gliessi");  congimp3s = p.wiki(stem .. "gliesse")
        congimp1p = p.wiki(stem .. "gliessimo");  congimp2p = p.wiki(stem .. "glieste");  congimp3p = p.wiki(stem .. "gliessero")
        imp2s = p.wiki(stem .. "gli");  imp3s = p.wiki(stem .. "lga")
        imp1p = p.wiki(stem .. "gliamo");  imp2p = p.wiki(stem .. "gliete");  imp3p = p.wiki(stem .. "lgano")
    elseif (type == "ire") or (type == "irsi") then
		if mw.title.new(stem.. "irsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "irsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "irsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "irsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "ire")
        ger = p.wiki(stem .. "endo");  par = p.wiki(stem .. "ente");  pp = p.wiki(stem .. "ito"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "o");  pres2s = p.wiki(stem .. "i");  pres3s = p.wiki(stem .. "e")
        pres1p = p.wiki(stem .. "iamo");  pres2p = p.wiki(stem .. "ite");  pres3p = p.wiki(stem .. "ono")        
        imperf1s = p.wiki(stem .. "ivo");  imperf2s = p.wiki(stem .. "ivi");  imperf3s = p.wiki(stem .. "iva")
        imperf1p = p.wiki(stem .. "ivamo");  imperf2p = p.wiki(stem .. "ivate");  imperf3p = p.wiki(stem .. "ivano") 
        prem1s = p.wiki(stem .. "ii");  prem2s = p.wiki(stem .. "isti");  prem3s = p.wiki(stem .. "ì")
        prem1p = p.wiki(stem .. "immo");  prem2p = p.wiki(stem .. "iste");  prem3p = p.wiki(stem .. "irono") 
        fut1s = p.wiki(stem .. "irò");  fut2s = p.wiki(stem .. "irai");  fut3s = p.wiki(stem .. "irà")
        fut1p = p.wiki(stem .. "iremo");  fut2p = p.wiki(stem .. "irete");  fut3p = p.wiki(stem .. "iranno") 
        cond1s = p.wiki(stem .. "irei");  cond2s = p.wiki(stem .. "iresti");  cond3s = p.wiki(stem .. "irebbe")
        cond1p = p.wiki(stem .. "iremmo");  cond2p = p.wiki(stem .. "ireste");  cond3p = p.wiki(stem .. "irebbero") 
        cong123s = p.wiki(stem .. "a"); cong3s = nil
        cong1p = p.wiki(stem .. "iamo");  cong2p = p.wiki(stem .. "iate");  cong3p = p.wiki(stem .. "ano")
        congimp12s = p.wiki(stem .. "issi");  congimp3s = p.wiki(stem .. "isse")
        congimp1p = p.wiki(stem .. "issimo");  congimp2p = p.wiki(stem .. "iste");  congimp3p = p.wiki(stem .. "issero")
        imp2s = p.wiki(stem .. "i");  imp3s = p.wiki(stem .. "a")
        imp1p = p.wiki(stem .. "iamo");  imp2p = p.wiki(stem .. "ite");  imp3p = p.wiki(stem .. "ano")  
    elseif (type == "ire-b") or (type == "irsi-b") then
		if mw.title.new(stem.. "irsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "irsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "irsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "irsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "ire")
        ger = p.wiki(stem .. "endo");  par = p.wiki(stem .. "ente");  pp = p.wiki(stem .. "ito"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "isco");  pres2s = p.wiki(stem .. "isci");  pres3s = p.wiki(stem .. "isce")
        pres1p = p.wiki(stem .. "iamo");  pres2p = p.wiki(stem .. "ite");  pres3p = p.wiki(stem .. "iscono")        
        imperf1s = p.wiki(stem .. "ivo");  imperf2s = p.wiki(stem .. "ivi");  imperf3s = p.wiki(stem .. "iva")
        imperf1p = p.wiki(stem .. "ivamo");  imperf2p = p.wiki(stem .. "ivate");  imperf3p = p.wiki(stem .. "ivano") 
        prem1s = p.wiki(stem .. "ii");  prem2s = p.wiki(stem .. "isti");  prem3s = p.wiki(stem .. "ì")
        prem1p = p.wiki(stem .. "immo");  prem2p = p.wiki(stem .. "iste");  prem3p = p.wiki(stem .. "irono") 
        fut1s = p.wiki(stem .. "irò");  fut2s = p.wiki(stem .. "irai");  fut3s = p.wiki(stem .. "irà")
        fut1p = p.wiki(stem .. "iremo");  fut2p = p.wiki(stem .. "irete");  fut3p = p.wiki(stem .. "iranno") 
        cond1s = p.wiki(stem .. "irei");  cond2s = p.wiki(stem .. "iresti");  cond3s = p.wiki(stem .. "irebbe")
        cond1p = p.wiki(stem .. "iremmo");  cond2p = p.wiki(stem .. "ireste");  cond3p = p.wiki(stem .. "irebbero") 
        cong123s = p.wiki(stem .. "isca"); cong3s = nil
        cong1p = p.wiki(stem .. "iamo");  cong2p = p.wiki(stem .. "iate");  cong3p = p.wiki(stem .. "iscano")
        congimp12s = p.wiki(stem .. "issi");  congimp3s = p.wiki(stem .. "isse")
        congimp1p = p.wiki(stem .. "issimo");  congimp2p = p.wiki(stem .. "iste");  congimp3p = p.wiki(stem .. "issero")
        imp2s = p.wiki(stem .. "isci");  imp3s = p.wiki(stem .. "isca")
        imp1p = p.wiki(stem .. "iamo");  imp2p = p.wiki(stem .. "ite");  imp3p = p.wiki(stem .. "iscano")        
    elseif type == "fare" or (type == "farsi") then
		if mw.title.new(stem.. "farsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "farsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "farsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "farsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "fare")
        ger = p.wiki(stem .. "facendo");  par = p.wiki(stem .. "facente");  pp = p.wiki(stem .. "fatto"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "faccio");  pres2s = p.wiki(stem .. "fai");  pres3s = p.wiki(stem .. "fà")
        pres1s2 = p.wiki(stem .. "fò")
        pres1p = p.wiki(stem .. "facciamo");  pres2p = p.wiki(stem .. "fate");  pres3p = p.wiki(stem .. "fanno")        
        imperf1s = p.wiki(stem .. "facevo");  imperf2s = p.wiki(stem .. "facevi");  imperf3s = p.wiki(stem .. "faceva")
        imperf1p = p.wiki(stem .. "facevamo");  imperf2p = p.wiki(stem .. "facevate");  imperf3p = p.wiki(stem .. "facevano") 
        prem1s = p.wiki(stem .. "feci");  prem2s = p.wiki(stem .. "facesti");  prem3s = p.wiki(stem .. "fece")
        prem1p = p.wiki(stem .. "facemmo");  prem2p = p.wiki(stem .. "faceste");  prem3p = p.wiki(stem .. "fecero") 
        fut1s = p.wiki(stem .. "farò");  fut2s = p.wiki(stem .. "farai");  fut3s = p.wiki(stem .. "farà")
        fut1p = p.wiki(stem .. "faremo");  fut2p = p.wiki(stem .. "farete");  fut3p = p.wiki(stem .. "faranno") 
        cond1s = p.wiki(stem .. "farei");  cond2s = p.wiki(stem .. "faresti");  cond3s = p.wiki(stem .. "farebbe")
        cond1p = p.wiki(stem .. "faremmo");  cond2p = p.wiki(stem .. "fareste");  cond3p = p.wiki(stem .. "farebbero") 
        cong123s = p.wiki(stem .. "faccia"); cong3s = nil
        cong1p = p.wiki(stem .. "facciamo");  cong2p = p.wiki(stem .. "facciate");  cong3p = p.wiki(stem .. "facciano")
        congimp12s = p.wiki(stem .. "facessi");  congimp3s = p.wiki(stem .. "facesse")
        congimp1p = p.wiki(stem .. "facessimo");  congimp2p = p.wiki(stem .. "faceste");  congimp3p = p.wiki(stem .. "facessero")
        imp2s = p.wiki(stem .. "fai");  imp3s = p.wiki(stem .. "faccia")
        imp2s2 = p.wiki(stem .. "fa'")
        imp1p = p.wiki(stem .. "facciamo");  imp2p = p.wiki(stem .. "fate");  imp3p = p.wiki(stem .. "facciano")
    elseif (type == "urre") or (type == "ursi") then
		if mw.title.new(stem.. "ursi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "ursi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "ursi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "ursi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "urre")
        ger = p.wiki(stem .. "ucendo");  par = p.wiki(stem .. "ucente");  pp = p.wiki(stem .. "otto"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "uco");  pres2s = p.wiki(stem .. "uci");  pres3s = p.wiki(stem .. "uce")
        pres1p = p.wiki(stem .. "uciamo");  pres2p = p.wiki(stem .. "ucete");  pres3p = p.wiki(stem .. "ucono")        
        imperf1s = p.wiki(stem .. "ucevo");  imperf2s = p.wiki(stem .. "ucevi");  imperf3s = p.wiki(stem .. "uceva")
        imperf1p = p.wiki(stem .. "ucevamo");  imperf2p = p.wiki(stem .. "ucevate");  imperf3p = p.wiki(stem .. "ucevano") 
        prem1s = p.wiki(stem .. "ussi");  prem2s = p.wiki(stem .. "ucesti");  prem3s = p.wiki(stem .. "usse")
        prem1p = p.wiki(stem .. "ucemmo");  prem2p = p.wiki(stem .. "uceste");  prem3p = p.wiki(stem .. "ussero")
        fut1s = p.wiki(stem .. "urrò");  fut2s = p.wiki(stem .. "urrai");  fut3s = p.wiki(stem .. "urrà")
        fut1p = p.wiki(stem .. "urremo");  fut2p = p.wiki(stem .. "urrete");  fut3p = p.wiki(stem .. "urranno") 
        cond1s = p.wiki(stem .. "urrei");  cond2s = p.wiki(stem .. "urresti");  cond3s = p.wiki(stem .. "urrebbe")
        cond1p = p.wiki(stem .. "urremmo");  cond2p = p.wiki(stem .. "urreste");  cond3p = p.wiki(stem .. "urrebbero") 
        cong123s = p.wiki(stem .. "uca"); cong3s = nil
        cong1p = p.wiki(stem .. "uciamo");  cong2p = p.wiki(stem .. "uciate");  cong3p = p.wiki(stem .. "ucano")
        congimp12s = p.wiki(stem .. "ucessi");  congimp3s = p.wiki(stem .. "ucesse")
        congimp1p = p.wiki(stem .. "ucessimo");  congimp2p = p.wiki(stem .. "uceste");  congimp3p = p.wiki(stem .. "ucessero")
        imp2s = p.wiki(stem .. "uci");  imp3s = p.wiki(stem .. "uca")
        imp1p = p.wiki(stem .. "uciamo");  imp2p = p.wiki(stem .. "ucete");  imp3p = p.wiki(stem .. "ucano")
    elseif (type == "orre") or (type == "orsi") then
		if mw.title.new(stem.. "orsi").exists == true or mw.title.new("Appendice:Coniugazioni/Italiano/".. stem.. "orsi").exists == true then --cerca se esiste il lemma o la coniugazione della forma riflessiva del verbo
			refl_exist = true; refl_link = p.wiki(stem .. "orsi"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "orsi|coniugazione]])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
        inf = p.wiki(stem .. "orre")
        ger = p.wiki(stem .. "onendo");  par = p.wiki(stem .. "onente");  pp = p.wiki(stem .. "osto"); pplur = p.plurale(-3, pp, "i]]")
        pres1s = p.wiki(stem .. "ongo");  pres2s = p.wiki(stem .. "oni");  pres3s = p.wiki(stem .. "one")
        pres1p = p.wiki(stem .. "oniamo");  pres2p = p.wiki(stem .. "onete");  pres3p = p.wiki(stem .. "ongono")        
        imperf1s = p.wiki(stem .. "onevo");  imperf2s = p.wiki(stem .. "onevi");  imperf3s = p.wiki(stem .. "oneva")
        imperf1p = p.wiki(stem .. "onevamo");  imperf2p = p.wiki(stem .. "onevate");  imperf3p = p.wiki(stem .. "onevano") 
        prem1s = p.wiki(stem .. "osi");  prem2s = p.wiki(stem .. "onesti");  prem3s = p.wiki(stem .. "ose")
        prem1p = p.wiki(stem .. "onemmo");  prem2p = p.wiki(stem .. "oneste");  prem3p = p.wiki(stem .. "osero")
        fut1s = p.wiki(stem .. "orrò");  fut2s = p.wiki(stem .. "orrai");  fut3s = p.wiki(stem .. "orrà")
        fut1p = p.wiki(stem .. "orremo");  fut2p = p.wiki(stem .. "orrete");  fut3p = p.wiki(stem .. "orranno") 
        cond1s = p.wiki(stem .. "orrei");  cond2s = p.wiki(stem .. "orresti");  cond3s = p.wiki(stem .. "orrebbe")
        cond1p = p.wiki(stem .. "orremmo");  cond2p = p.wiki(stem .. "orreste");  cond3p = p.wiki(stem .. "orrebbero") 
        cong123s = p.wiki(stem .. "onga"); cong3s = nil
        cong1p = p.wiki(stem .. "oniamo");  cong2p = p.wiki(stem .. "oniate");  cong3p = p.wiki(stem .. "ongano")
        congimp12s = p.wiki(stem .. "onessi");  congimp3s = p.wiki(stem .. "onesse")
        congimp1p = p.wiki(stem .. "onessimo");  congimp2p = p.wiki(stem .. "oneste");  congimp3p = p.wiki(stem .. "onessero")
        imp2s = p.wiki(stem .. "oni");  imp3s = p.wiki(stem .. "onga")
        imp1p = p.wiki(stem .. "oniamo");  imp2p = p.wiki(stem .. "oniate");  imp3p = p.wiki(stem .. "ongano")
else error("Verb type " .. type .. "not supported.")
    end
-- Genera le voci verbali specifiche per i verbi riflessivi
    if type == "arsi" then
    	refl_link = p.wiki(stem .. "are"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "are|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "arsi")
        ger = p.wiki(stem .. "andosi"); par = p.wiki(stem .. "antesi") 
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl =  p.wiki(stem .. "atosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "ati")
        imp1p = p.wiki(stem .. "iamoci"); imp2p = p.wiki(stem .. "atevi")
    elseif type == "carsi" or type == "garsi" then
    	refl_link = p.wiki(stem .. "are"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "are|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "arsi")
        ger = p.wiki(stem .. "andosi"); par = p.wiki(stem .. "antesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl =  p.wiki(stem .. "atosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "ati")
        imp1p = p.wiki(stem .. "hiamoci"); imp2p = p.wiki(stem .. "atevi")
	elseif type == "iarsi" then
		refl_link = p.wiki(stem .. "are"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "are|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "arsi")
        ger = p.wiki(stem .. "andosi"); par = p.wiki(stem .. "antesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl =  p.wiki(stem .. "atosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "ati")
        imp1p = p.wiki(stem .. "amoci"); imp2p = p.wiki(stem .. "atevi")
    elseif type == "ciarsi" or type == "giarsi" then
    	refl_link = p.wiki(stem .. "iare"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "iare|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "iarsi")
        ger = p.wiki(stem .. "iandosi"); par = p.wiki(stem .. "iantesi"); pprifl = ", ".. p.wiki(stem .. "iatosi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl =  p.wiki(stem .. "iatosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "iati")
        imp1p = p.wiki(stem .. "iamoci"); imp2p = p.wiki(stem .. "iatevi")
    elseif type == "ersi" then
    	refl_link = p.wiki(stem .. "ere"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "ere|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "ersi")
        ger = p.wiki(stem .. "endosi"); par = p.wiki(stem .. "entesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl =  p.wiki(stem .. "utosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "iti")
        imp1p = p.wiki(stem .. "iamoci"); imp2p = p.wiki(stem .. "etevi")
    elseif type == "gliersi" then
    	refl_link = p.wiki(stem .. "gliere"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "gliere|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "gliersi")
        ger = p.wiki(stem .. "gliendosi"); par = p.wiki(stem .. "glientesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl = p.wiki(stem .. "ltosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "gliti")
        imp1p = p.wiki(stem .. "gliamoci"); imp2p = p.wiki(stem .. "glietevi")
    elseif type == "irsi" then
    	refl_link = p.wiki(stem .. "ire"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "ire|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "irsi")
        ger = p.wiki(stem .. "endosi"); par = p.wiki(stem .. "entesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl = p.wiki(stem .. "itosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "iti")
        imp1p = p.wiki(stem .. "iamoci"); imp2p = p.wiki(stem .. "itevi")
    elseif type == "irsi-b" then
    	refl_link = p.wiki(stem .. "ire"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "ire|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "irsi")
        ger = p.wiki(stem .. "endosi"); par = p.wiki(stem .. "entesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl = p.wiki(stem .. "itosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "isciti")
        imp1p = p.wiki(stem .. "iamoci"); imp2p = p.wiki(stem .. "itevi")
    elseif type == "ursi" then
    	refl_link = p.wiki(stem .. "urre"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "urre|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "ursi")
        ger = p.wiki(stem .. "ucendosi"); par = p.wiki(stem .. "ucentesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl = p.wiki(stem .. "ottosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "uciti")
        imp1p = p.wiki(stem .. "uciamoci"); imp2p = p.wiki(stem .. "ucetevi")
    elseif type == "orsi" then
    	refl_link = p.wiki(stem .. "orre"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "orre|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "orsi")
        ger = p.wiki(stem .. "onendosi"); par = p.wiki(stem .. "onentesi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl = p.wiki(stem .. "stosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "oniti")
        imp1p = p.wiki(stem .. "oniamoci")
        imp2p = p.wiki(stem .. "onetevi")
    elseif type == "farsi" then
    	refl_link = p.wiki(stem .. "fare"); refl_conjlink = " ([[Appendice:Coniugazioni/Italiano/".. stem .. "fare|coniugazione]])" --genera il link alla forma attiva del verbo in ns0 e alla relativa coniugazione in appendice
        refl = true; inf = p.wiki(stem .. "farsi")
        ger = p.wiki(stem .. "facendosi"); par = p.wiki(stem .. "facentesi"); pprifl = ", ".. p.wiki(stem .. "fattosi")
        if args["pp"] ~= nil then pprifl = p.wiki(args["pp"] .. "si") else pprifl = p.wiki(stem .. "fattosi") end
        if args["pp2"] ~= nil then pprifl2 = ", ".. p.wiki(args["pp2"] .. "si"); pprifl = pprifl.. pprifl2 end
        imp2s = p.wiki(stem .. "fatti")
        imp1p = p.wiki(stem .. "facciamoci"); imp2p = p.wiki(stem .. "fatevi")
    end
    if refl then refl_exist = true; mi = "mi "; ti = "ti "; si = "si "; ci = "ci "; vi = "vi " end
-- Recupera le eventuali forme irregolari o varianti, rimpiazziandole o aggiungendole a quelle standard
-- Forme impersonali e participi
    inf = p.over(inf,args["inf"])
    ger = p.over(ger,args["ger"])
    ger2 = p.wiki(args["ger2"])
    ger = p.alts(ger, ger2)
    par = p.over(par,args["par"])
    par2 = p.wiki(args["par2"])
    par = p.alts(par, par2)
    pp = p.over(pp,args["pp"])
    pp2 = p.wiki(args["pp2"]);  pp3 = p.wiki(args["pp3"]);  pp3 = p.wiki(args["pp3"]);  pp4 = p.wiki(args["pp4"])
    pp = p.alts(pp, pp2); pp = p.alts(pp, pp3); pp = p.alts(pp, pp4)
-- Presente indicativo
    pres1s = p.over(pres1s,args["pres1s"]); pres2s = p.over(pres2s,args["pres2s"]); pres3s = p.over(pres3s,args["pres3s"])
    pres1p = p.over(pres1p,args["pres1p"]); pres2p = p.over(pres2p,args["pres2p"]); pres3p = p.over(pres3p,args["pres3p"])
    pres1s2 = p.wiki(args["pres1s2"]);  pres2s2 = p.wiki(args["pres2s2"]);  pres3s2 = p.wiki(args["pres3s2"])
    pres1p2 = p.wiki(args["pres1p2"]);  pres2p2 = p.wiki(args["pres2p2"]);  pres3p2 = p.wiki(args["pres3p2"])
    pres1s = p.alts(pres1s, pres1s2); pres2s = p.alts(pres2s, pres2s2); pres3s = p.alts(pres3s, pres3s2) 
    pres1p = p.alts(pres1p, pres1p2); pres2p = p.alts(pres2p, pres2p2); pres3p = p.alts(pres3p, pres3p2)     
-- Imperfetto
    imperf1s = p.over(imperf1s,args["imperf1s"]); imperf2s = p.over(imperf2s,args["imperf2s"]); imperf3s = p.over(imperf3s,args["imperf3s"])
    imperf1p = p.over(imperf1p,args["imperf1p"]); imperf2p = p.over(imperf2p,args["imperf2p"]); imperf3p = p.over(imperf3p,args["imperf3p"])
    imperf1s2 = p.wiki(args["imperf1s2"]);  imperf2s2 = p.wiki(args["imperf2s2"]);  imperf3s2 = p.wiki(args["imperf3s2"])
    imperf1p2 = p.wiki(args["imperf1p2"]);  imperf2p2 = p.wiki(args["imperf2p2"]);  imperf3p2 = p.wiki(args["imperf3p2"])
    imperf1s = p.alts(imperf1s, imperf1s2); imperf2s = p.alts(imperf2s, imperf2s2); imperf3s = p.alts(imperf3s, imperf3s2)
    imperf1p = p.alts(imperf1p, imperf1p2); imperf2p = p.alts(imperf2p, imperf2p2); imperf3p = p.alts(imperf3p, imperf3p2)
-- Passato Remoto (Past historic)
    prem1s = p.over(prem1s,args["prem1s"]); prem2s = p.over(prem2s,args["prem2s"]); prem3s = p.over(prem3s,args["prem3s"])
    prem1p = p.over(prem1p,args["prem1p"]); prem2p = p.over(prem2p,args["prem2p"]); prem3p = p.over(prem3p,args["prem3p"])
    if type == "ere" or type == "ersi" then --per il passato remoto, c'è un'opzione in più per i verbi in -ere che se regolari hanno doppia uscita
    prem1s2 = p.over(prem1s2,args["prem1s2"]); prem2s2 = p.over(prem2s2,args["prem2s2"]); prem3s2 = p.over(prem3s2,args["prem3s2"])
    prem1p2 = p.over(prem1p2,args["prem1p2"]); prem2p2 = p.over(prem2p2,args["prem2p2"]); prem3p2 = p.over(prem3p2,args["prem3p2"])
    else
    	prem1s2 = p.wiki(args["prem1s2"]);  prem2s2 = p.wiki(args["prem2s2"]);  prem3s2 = p.wiki(args["prem3s2"])
		prem1p2 = p.wiki(args["prem1p2"]);  prem2p2 = p.wiki(args["prem2p2"]);  prem3p2 = p.wiki(args["prem3p2"])
	end
    prem1s = p.alts(prem1s, prem1s2); prem2s = p.alts(prem2s, prem2s2); prem3s = p.alts(prem3s, prem3s2)
    prem1p = p.alts(prem1p, prem1p2); prem2p = p.alts(prem2p, prem2p2); prem3p = p.alts(prem3p, prem3p2)
-- Alternative extra per il passato remoto (terza uscita)
    prem1s3 = p.wiki(args["prem1s3"]); prem1s = p.alts(prem1s, prem1s3)
    prem3s3 = p.wiki(args["prem3s3"]); prem3s = p.alts(prem3s, prem3s3)
    prem3p3 = p.wiki(args["prem3p3"]); prem3p = p.alts(prem3p, prem3p3)
-- Futuro
    fut1s = p.over(fut1s,args["fut1s"]); fut2s = p.over(fut2s,args["fut2s"]); fut3s = p.over(fut3s,args["fut3s"])
    fut1p = p.over(fut1p,args["fut1p"]); fut2p = p.over(fut2p,args["fut2p"]); fut3p = p.over(fut3p,args["fut3p"])
    fut1s2 = p.wiki(args["fut1s2"]);  fut2s2 = p.wiki(args["fut2s2"]);  fut3s2 = p.wiki(args["fut3s2"])
    fut1p2 = p.wiki(args["fut1p2"]);  fut2p2 = p.wiki(args["fut2p2"]);  fut3p2 = p.wiki(args["fut3p2"])
    fut1s = p.alts(fut1s, fut1s2); fut2s = p.alts(fut2s, fut2s2); fut3s = p.alts(fut3s, fut3s2)
    fut1p = p.alts(fut1p, fut1p2); fut2p = p.alts(fut2p, fut2p2); fut3p = p.alts(fut3p, fut3p2)
-- Condizionale
    cond1s = p.over(cond1s,args["cond1s"]); cond2s = p.over(cond2s,args["cond2s"]); cond3s = p.over(cond3s,args["cond3s"])
    cond1p = p.over(cond1p,args["cond1p"]); cond2p = p.over(cond2p,args["cond2p"]); cond3p = p.over(cond3p,args["cond3p"])
    cond1s2 = p.wiki(args["cond1s2"]);  cond2s2 = p.wiki(args["cond2s2"]);  cond3s2 = p.wiki(args["cond3s2"])
    cond1p2 = p.wiki(args["cond1p2"]);  cond2p2 = p.wiki(args["cond2p2"]);  cond3p2 = p.wiki(args["cond3p2"])
    cond1s = p.alts(cond1s, cond1s2); cond2s = p.alts(cond2s, cond2s2); cond3s = p.alts(cond3s, cond3s2)
    cond1p = p.alts(cond1p, cond1p2); cond2p = p.alts(cond2p, cond2p2); cond3p = p.alts(cond3p, cond3p2)
-- Presente congiuntivo
    cong123s = p.over(cong123s,args["cong123s"]);  cong3s = p.over(cong3s,args["cong3s"])
    cong1p = p.over(cong1p,args["cong1p"]); cong2p = p.over(cong2p,args["cong2p"]); cong3p = p.over(cong3p,args["cong3p"])
    cong123s2 = p.wiki(args["cong123s2"]);  cong3s2 = p.wiki(args["cong3s2"])
    cong1p2 = p.wiki(args["cong1p2"]);  cong2p2 = p.wiki(args["cong2p2"]);  cong3p2 = p.wiki(args["cong3p2"])
    cong123s = p.alts(cong123s, cong123s2); cong3s = p.alts(cong3s, cong3s2)
    if cong3s == nil then cong3s = cong123s end
    cong1p = p.alts(cong1p, cong1p2); cong2p = p.alts(cong2p, cong2p2); cong3p = p.alts(cong3p, cong3p2)
-- Imperfetto congiuntivo
    congimp12s = p.over(congimp12s,args["congimp12s"]); congimp3s = p.over(congimp3s,args["congimp3s"])
    congimp1p = p.over(congimp1p,args["congimp1p"]); congimp2p = p.over(congimp2p,args["congimp2p"]); congimp3p = p.over(congimp3p,args["congimp3p"])
    congimp12s2 = p.wiki(args["congimp12s2"]);  congimp3s2 = p.wiki(args["congimp3s2"])
    congimp1p2 = p.wiki(args["congimp1p2"]);  congimp2p2 = p.wiki(args["congimp2p2"]);  congimp3p2 = p.wiki(args["congimp3p2"])
    congimp1s = p.alts(congimp12s, congimp12s2); congimp3s = p.alts(congimp3s, congimp3s2)
    congimp1p = p.alts(congimp1p, congimp1p2); congimp2p = p.alts(congimp2p, congimp2p2); congimp3p = p.alts(congimp3p, congimp3p2)    
-- Imperativo
	imp2s = p.over(imp2s,args["imp2s"]); imp3s = p.over(imp3s,args["imp3s"])
    imp1p = p.over(imp1p,args["imp1p"]); imp2p = p.over(imp2p,args["imp2p"]); imp3p = p.over(imp3p,args["imp3p"])
    imp2s2 = p.over(imp2s2, args["imp2s2"]);  imp3s2 = p.wiki(args["imp3s2"])
    imp1p2 = p.wiki(args["imp1p2"]);  imp2p2 = p.wiki(args["imp2p2"]);  imp3p2 = p.wiki(args["imp3p2"])
    imp2s = p.alts(imp2s, imp2s2); imp3s = p.alts(imp3s, imp3s2)
    if imp2s > "0" then --genera la stringa per l'imperativo negativo di seconda persona singolare
    	if refl then
    		imp2sneg = ",</br> non ".. mw.ustring.sub(inf, 1, -5).. "ti]]"
    	else
    		imp2sneg = ",</br> non ".. inf
    	end
    end
    imp1p = p.alts(imp1p, imp1p2); imp2p = p.alts(imp2p, imp2p2); imp3p = p.alts(imp3p, imp3p2)
-- Alternativa extra per l'imperativo
     imp2s3 = p.over(imp2s3, args["imp2s3"]); imp2s = p.alts(imp2s, imp2s3)
     
--cerca se uno qualsiasi dei parametri è definito, e in base a questo definisce la stringa reg_irreg come "irregolare" o "regolare"
    if 
	    args["inf"] ~= nil or args["ger"] ~= nil or args["par"] ~= nil or args["pp"] ~= nil
	    or args["pres1s"] ~= nil or args["pres1s2"] ~= nil or args["pres2s"] ~= nil or args["pres3s"] ~= nil or args["pres1p"] ~= nil or args["pres2p"] ~= nil or args["pres3p"] ~= nil
	    or args["imperf1s"] ~= nil or args["imperf2s"] ~= nil or args["imperf3s"] ~= nil or args["imperf1p"] ~= nil or args["imperf2p"] ~= nil or args["imperf3p"] ~= nil
	    or args["prem1s"] ~= nil or args["prem1s2"] ~= nil or args["prem2s"] ~= nil or args["prem3s"] ~= nil or args["prem3s2"] ~= nil or args["prem1p"] ~= nil or args["prem2p"] ~= nil or args["prem3p"] ~= nil or args["prem3p2"] ~= nil
	    or args["fut1s"] ~= nil or args["fut2s"] ~= nil or args["fut3s"] ~= nil or args["fut1p"] ~= nil or args["fut2p"] ~= nil or args["fut3p"] ~= nil
	    or args["cond1s"] ~= nil or args["cond2s"] ~= nil or args["cond3s"] ~= nil or args["cond1p"] ~= nil or args["cond2p"] ~= nil or args["cond3p"] ~= nil
	    or args["cong123s"] ~= nil or args["cong1p"] ~= nil or args["cong2p"] ~= nil or args["cong3p"] ~= nil
	    or args["imp12s"] ~= nil or args["imp3s"] ~= nil or args["imp1p"] ~= nil or args["imp2p"] ~= nil or args["imp3p"] ~= nil
	    or args["imp2s2"] ~= nil or args["imp2s3"] ~= nil or args["imp3s"] ~= nil or args["imp1p"] ~= nil or args["imp2p"] ~= nil or args["imp3p"] ~= nil
    then 
    	if args["irregolare"] == "no" then
    		irregolaredescr = ""; reg_irreg = " regolari "
    	else
    		irregolaredescr = " '''(irregolare)'''"; reg_irreg = " irregolari "
		end
    else --se nessun parametro è definito...
    	if type == "gliere" or type == "gliersi" or type == "urre" or type == "ursi" or type == "orre" or type == "orsi" or type == "fare" or type == "farsi" then --questi qui sono comunque irregolari anche se non hanno parametri definiti
    		irregolaredescr = " '''(irregolare)'''"; reg_irreg = " irregolari "
    	else --per tutti gli altri senza parametri definiti, le categorie diventano "regolari"
    		irregolaredescr = ""; reg_irreg = " regolari "
		end
	end

--in base alla desinenza "type", costruisce la descizione e aggiunge le categorie
    if type == "are" or type == "care" or type == "gare" or type == "ciare" or type == "giare" or type == "iare" then
    		conjdescr = "'''verbo di prima coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di prima coniugazione in italiano",titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano",titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di prima coniugazione in italiano",titolo)
    elseif type == "fare" then
    		conjdescr = "'''verbo di prima coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di prima coniugazione in italiano",titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo)..''..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di prima coniugazione in italiano",titolo)
    elseif type == "ere" then
    		conjdescr = "'''verbo di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in italiano", titolo)
    elseif type == "gliere" then
    		conjdescr = "'''verbo di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in italiano", titolo)
    elseif type == "urre" then
    		conjdescr = "'''verbo di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in italiano", titolo)
    elseif type == "orre" then
    		conjdescr = "'''verbo di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in italiano", titolo)
    elseif type == "ire" then
    		conjdescr = "'''verbo di terza coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di terza coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di terza coniugazione in italiano", titolo)
    elseif type == "ire-b" then
    		conjdescr = "'''verbo incoativo di terza coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi incoativi in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi incoativi".. reg_irreg.. "in italiano", titolo)
    elseif type == "arsi" or type == "carsi" or type == "garsi" or type == "ciarsi" or type == "giarsi" or type == "iarsi" or type == "farsi" then
    		conjdescr = "'''verbo riflessivo pronominale di prima coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di prima coniugazione in italiano",titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di prima coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di prima coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di prima coniugazione in italiano", titolo)
    elseif type == "ersi" or type == "gliersi" or type == "ursi" or type == "orsi" then
    		conjdescr = "'''verbo riflessivo pronominale di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di seconda coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di seconda coniugazione in italiano", titolo)
    elseif type == "irsi" then
    		conjdescr = "'''verbo riflessivo pronominale di terza coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di terza coniugazione in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di terza coniugazione in italiano", titolo)
    elseif type == "irsi-b" then
    		conjdescr = "'''verbo incoativo riflessivo pronominale di terza coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi incoativi in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali incoativi in italiano", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di terza coniugazione in italiano", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali incoativi".. reg_irreg.. "in italiano", titolo)
    		end
    		
--stringa "descrizione", raggruppa tutte le stringhe definite prima per la descrizione e le categorie della coniugazione, regolari/irregolari e riflessivi
	descrizione = categorizza("Coniugazioni in italiano", titolo).. conjdescr.. irregolaredescr.. conjcat.. irregolarecat
    		
-- Particelle pronominali riflessive
    mi = p.over(mi,args["mi"],0); ti = p.over(ti,args["ti"],0); si = p.over(si,args["si"],0); ci = p.over(ci,args["ci"],0); vi = p.over(vi,args["vi"],0)  
    
-- Tempi composti
    if args["pp"] == nil then pplur = p.plurale(-3, pp, "i]]") else pplur = "[[".. p.plurale(-1, args["pp"], "i").. "]]" end
    if args["pp2"] ~= nil then pplur2 = "[[".. p.plurale(-1, args["pp2"], "i").. "]]" else pplur2 = "0" end
    pplur = p.alts(pplur, pplur2)
-- Passato prossimo
    if aus == "avere" and pp ~= "" then
    	paspros1s = "[[ho]] ".. pp; paspros2s = "[[hai]] ".. pp; paspros3s = "[[ha]] ".. pp; paspros1p = "[[abbiamo]] ".. pp; paspros2p = "[[avete]] ".. pp; paspros3p = "[[hanno]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	paspros1s = "[[sono]] ".. pp; paspros2s = "[[sei]] ".. pp; paspros3s = "[[è]] ".. pp; paspros1p = "[[siamo]] ".. pplur; paspros2p = "[[siete]] ".. pplur; paspros3p = "[[sono]] ".. pplur 
    elseif pp == "" then
    	paspros1s = ""; paspros2s = ""; paspros3s = ""; paspros1p = ""; paspros2p = ""; paspros3p = ""
    else
    	paspros1s = "[[ho]] ".. pp.. "</br>[[sono]] ".. pp; paspros2s = "[[hai]] ".. pp.. "</br>[[sei]] ".. pp; paspros3s = "[[ha]] ".. pp.. "</br>[[è]] ".. pp; paspros1p = "[[abbiamo]] ".. pp.. "</br>[[siamo]] ".. pplur; paspros2p = "[[avete]] ".. pp.. "</br>[[siete]] ".. pplur; paspros3p = "[[hanno]] ".. pp.. "</br>[[sono]] ".. pplur 
	end
-- Trapassato prossimo
    if aus == "avere" and pp ~= "" then
    	trappros1s = "[[avevo]] ".. pp; trappros2s = "[[avevi]] ".. pp; trappros3s = "[[aveva]] ".. pp; trappros1p = "[[avevamo]] ".. pp; trappros2p = "[[avevate]] ".. pp; trappros3p = "[[avevano]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	trappros1s = "[[ero]] ".. pp; trappros2s = "[[eri]] ".. pp; trappros3s = "[[era]] ".. pp; trappros1p = "[[eravamo]] ".. pplur; trappros2p = "[[eravate]] ".. pplur; trappros3p = "[[erano]] ".. pplur 
    elseif pp == "" then
    	trappros1s = ""; trappros2s = ""; trappros3s = ""; trappros1p = ""; trappros2p = ""; trappros3p = ""
    else
    	trappros1s = "[[avevo]] ".. pp.. "</br>[[ero]] ".. pp; trappros2s = "[[avevi]] ".. pp.. "</br>[[eri]] ".. pp; trappros3s = "[[aveva]] ".. pp.. "</br>[[era]] ".. pp; trappros1p = "[[avevamo]] ".. pp.. "</br>[[eravamo]] ".. pplur; trappros2p = "[[avevate]] ".. pp.. "</br>[[eravate]] ".. pplur; trappros3p = "[[avevano]] ".. pp.. "</br>[[erano]] ".. pplur 
	end
-- Trapassato remoto
    if aus == "avere" and pp ~= "" then
    	traprem1s = "[[ebbi]] ".. pp; traprem2s = "[[avesti]] ".. pp; traprem3s = "[[ebbe]] ".. pp; traprem1p = "[[avemmo]] ".. pp; traprem2p = "[[aveste]] ".. pp; traprem3p = "[[ebbero]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	traprem1s = "[[fui]] ".. pp; traprem2s = "[[fosti]] ".. pp; traprem3s = "[[fu]] ".. pp; traprem1p = "[[fummo]] ".. pplur; traprem2p = "[[foste]] ".. pplur; traprem3p = "[[furono]] ".. pplur 
    elseif pp == "" then
    	traprem1s = ""; traprem2s = ""; traprem3s = ""; traprem1p = ""; traprem2p = ""; traprem3p = ""
    else
    	traprem1s = "[[ebbi]] ".. pp.. "</br>[[fui]] ".. pp; traprem2s = "[[avesti]] ".. pp.. "</br>[[fosti]] ".. pp; traprem3s = "[[ebbe]] ".. pp.. "</br>[[fu]] ".. pp; traprem1p = "[[avemmo]] ".. pp.. "</br>[[fummo]] ".. pplur; traprem2p = "[[aveste]] ".. pp.. "</br>[[foste]] ".. pplur; traprem3p = "[[ebbero]] ".. pp.. "</br>[[furono]] ".. pplur 
	end   
-- Futuro anteriore
    if aus == "avere" and pp ~= "" then
    	futant1s = "[[avrò]] ".. pp; futant2s = "[[avrai]] ".. pp; futant3s = "[[avrà]] ".. pp; futant1p = "[[avremo]] ".. pp; futant2p = "[[avrete]] ".. pp; futant3p = "[[avranno]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	futant1s = "[[sarò]] ".. pp; futant2s = "[[sarai]] ".. pp; futant3s = "[[sarà]] ".. pp; futant1p = "[[saremo]] ".. pplur; futant2p = "[[sarete]] ".. pplur; futant3p = "[[saranno]] ".. pplur 
    elseif pp == "" then
    	futant1s = ""; futant2s = ""; futant3s = ""; futant1p = ""; futant2p = ""; futant3p = ""
    else
    	futant1s = "[[avrò]] ".. pp.. "</br>[[sarò]] ".. pp; futant2s = "[[avrai]] ".. pp.. "</br>[[sarai]] ".. pp; futant3s = "[[avrà]] ".. pp.. "</br>[[sarà]] ".. pp; futant1p = "[[avremo]] ".. pp.. "</br>[[saremo]] ".. pplur; futant2p = "[[avrete]] ".. pp.. "</br>[[sarete]] ".. pplur; futant3p = "[[avranno]] ".. pp.. "</br>[[saranno]] ".. pplur 
	end  
-- Condizionale passato
    if aus == "avere" and pp ~= "" then
    	condpas1s = "[[avrei]] ".. pp; condpas2s = "[[avresti]] ".. pp; condpas3s = "[[avrebbe]] ".. pp; condpas1p = "[[avremmo]] ".. pp; condpas2p = "[[avreste]] ".. pp; condpas3p = "[[avrebbero]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	condpas1s = "[[sarei]] ".. pp; condpas2s = "[[saresti]] ".. pp; condpas3s = "[[sarebbe]] ".. pp; condpas1p = "[[saremmo]] ".. pplur; condpas2p = "[[sareste]] ".. pplur; condpas3p = "[[sarebbero]] ".. pplur 
    elseif pp == "" then
    	condpas1s = ""; condpas2s = ""; condpas3s = ""; condpas1p = ""; condpas2p = ""; condpas3p = ""
    else
    	condpas1s = "[[avrei]] ".. pp.. "</br>[[sarei]] ".. pp; condpas2s = "[[avresti]] ".. pp.. "</br>[[saresti]] ".. pp; condpas3s = "[[avrebbe]] ".. pp.. "</br>[[sarebbe]] ".. pp; condpas1p = "[[avremmo]] ".. pp.. "</br>[[saremmo]] ".. pplur; condpas2p = "[[avreste]] ".. pp.. "</br>[[sareste]] ".. pplur; condpas3p = "[[avrebbero]] ".. pp.. "</br>[[sarebbero]] ".. pplur 
	end  
-- Congiuntivo passato
    if aus == "avere" and pp ~= "" then
    	congpas1s = "[[abbia]] ".. pp; congpas2s = "[[abbia]] ".. pp; congpas3s = "[[abbia]] ".. pp; congpas1p = "[[abbiamo]] ".. pp; congpas2p = "[[abbiate]] ".. pp; congpas3p = "[[abbiano]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	congpas1s = "[[sia]] ".. pp; congpas2s = "[[sia]] ".. pp; congpas3s = "[[sia]] ".. pp; congpas1p = "[[siamo]] ".. pplur; congpas2p = "[[siate]] ".. pplur; congpas3p = "[[siano]] ".. pplur 
    elseif pp == "" then
    	congpas1s = ""; congpas2s = ""; congpas3s = ""; congpas1p = ""; congpas2p = ""; congpas3p = ""
    else
    	congpas1s = "[[abbia]] ".. pp.. "</br>[[sia]] ".. pp; congpas2s = "[[abbia]] ".. pp.. "</br>[[sia]] ".. pp; congpas3s = "[[abbia]] ".. pp.. "</br>[[sia]] ".. pp; congpas1p = "[[abbiamo]] ".. pp.. "</br>[[siamo]] ".. pplur; congpas2p = "[[abbiate]] ".. pp.. "</br>[[siate]] ".. pplur; congpas3p = "[[abbiano]] ".. pp.. "</br>[[siano]] ".. pplur 
	end  
-- Congiuntivo trapassato
    if aus == "avere" and pp ~= "" then
    	congtrap1s = "[[avessi]] ".. pp; congtrap2s = "[[avessi]] ".. pp; congtrap3s = "[[avesse]] ".. pp; congtrap1p = "[[avessimo]] ".. pp; congtrap2p = "[[aveste]] ".. pp; congtrap3p = "[[avessero]] ".. pp 
	elseif aus == "essere" and pp ~= "" then
    	congtrap1s = "[[fossi]] ".. pp; congtrap2s = "[[fossi]] ".. pp; congtrap3s = "[[fosse]] ".. pp; congtrap1p = "[[fossimo]] ".. pplur; congtrap2p = "[[foste]] ".. pplur; congtrap3p = "[[fossero]] ".. pplur 
    elseif pp == "" then
    	congtrap1s = ""; congtrap2s = ""; congtrap3s = ""; contrap1p = ""; congtrap2p = ""; congtrap3p = ""
    else
    	congtrap1s = "[[avessi]] ".. pp.. "</br>[[fossi]] ".. pp; congtrap2s = "[[avessi]] ".. pp.. "</br>[[fossi]] ".. pp; congtrap3s = "[[avesse]] ".. pp.. "</br>[[fosse]] ".. pp; congtrap1p = "[[avessimo]] ".. pp.. "</br>[[fossimo]] ".. pplur; congtrap2p = "[[aveste]] ".. pp.. "</br>[[foste]] ".. pplur; congtrap3p = "[[avessero]] ".. pp.. "</br>[[fossero]] ".. pplur 
	end 
-- Genera i titolo dei cassetti per i tempi composti
    if pp == "" then
    	paspros = "manca dei tempi composti"; trappros = "manca dei tempi composti"; traprem = "manca dei tempi composti"; futant = "manca dei tempi composti"; condpas = "manca dei tempi composti"; congpas = "manca dei tempi composti"; congtrap = "manca dei tempi composti"
    else
    	paspros = "ausiliare (".. aus.. ") coniugato all'indicativo presente seguito dal participio passato"
    	trappros = "ausiliare (".. aus.. ") coniugato all'indicativo imperfetto seguito dal participio passato"
    	traprem = "ausiliare (".. aus.. ") coniugato all'indicativo passato remoto seguito dal participio passato"
    	futant = "ausiliare (".. aus.. ") coniugato all'indicativo futuro seguito dal participio passato"
    	condpas = "ausiliare (".. aus.. ") coniugato al condizionale presente seguito dal participio passato"
    	congpas = "ausiliare (".. aus.. ") coniugato al congiuntivo presente seguito dal participio passato"
    	congtrap = "ausiliare (".. aus.. ") coniugato al congiuntivo imperfetto seguito dal participio passato"
    end
    
-- Costruisce la tabella di coniugazione
    conj = '{| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px" class="inflection-table"\n'
    conj = conj .. '|-\n'
    conj = conj .. '| colspan="8" style="background:#ffe4c4; text-align:center" | ' .. descrizione .. '\n'
    conj = conj .. '|-\n'
    if refl_exist == true then --se esiste il riflessivo pronominale del verbo, o se il verbo È riflessivo, fa spazio in tabella per aggiungere i relativi link generati precedentemente
    	conj = conj .. '! colspan="1" style="background:#e2e4c0" | infinito\n'
    	conj = conj .. '| colspan="2" | ' .. inf .. '\n'
    		if refl == true then --ulteriore variabile, se il verbo è riflessivo la dicitura della casella è "forma attiva", se no "riflessivo pronominale"
    			conj = conj .. '! colspan="2" style="background:#e2e4c0" | foma attiva\n' 
    		else
    			conj = conj .. '! colspan="2" style="background:#e2e4c0" | riflessivo pronominale\n'
    		end
    	conj = conj .. '| colspan="2" | ' .. refl_link .. refl_conjlink.. '\n'
    	conj = conj .. '|-\n'
    else --se non esiste il riflessivo, la relativa cella si toglie di torno
		conj = conj .. '! colspan="1" style="background:#e2e4c0" | infinito\n'
    	conj = conj .. '| colspan="1" | ' .. inf .. '\n'
    	conj = conj .. '|-\n'
    end
    conj = conj .. '! colspan="2" style="background:#e2e4c0" | verbo ausiliare\n'
    conj = conj .. '| colspan="1" | ' .. aus ..'\n'
    conj = conj .. '! colspan="2" style="background:#e2e4c0" | gerundio\n'
    conj = conj .. '| colspan="2" | ' .. ger .. '\n'
    conj = conj .. '|-\n! colspan="2" style="background:#e2e4c0" | participio presente\n'
    conj = conj .. '| colspan="1" | ' .. par .. '\n'
    conj = conj .. '! colspan="2" style="background:#e2e4c0" | participio passato\n'
    if refl == true then --se il verbo è riflessivo, inserisce in tabella il participio passato con la particella pronominale
    	conj = conj .. '| colspan="2" | ' .. pprifl .. '\n' 
    else --altrimenti, inserisce il normale participio passato
    	conj = conj .. '| colspan="2" | ' .. pp .. '\n'
    end
    conj = conj .. '|-\n! colspan="1" rowspan="2" style="background:#C0C0C0" | persona\n'
    conj = conj .. '! colspan="3" style="background:#C0C0C0" | singolare\n'
    conj = conj .. '! colspan="3" style="background:#C0C0C0" | plurale\n'
    conj = conj .. '|-\n! style="background:#C0C0C0;width:12.5%" | prima\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | seconda\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | terza\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | prima\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | seconda\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | terza\n'
    conj = conj .. '|-\n! style="background:#c0cfe4" colspan="1" | indicativo\n'
    conj = conj .. '! style="background:#c0cfe4" | io\n'
    conj = conj .. '! style="background:#c0cfe4" | tu\n'
    conj = conj .. '! style="background:#c0cfe4" | lui/lei\n'
    conj = conj .. '! style="background:#c0cfe4" | noi\n'
    conj = conj .. '! style="background:#c0cfe4" | voi\n'
    conj = conj .. '! style="background:#c0cfe4" | essi/esse\n|-\n'
    conj = conj .. '! style="height:3em;background:#c0cfe4" colspan="1" | presente\n'
    conj = conj .. '|' .. mi .. pres1s .. '\n|' .. ti .. pres2s .. '\n|' .. si .. pres3s .. '\n|' .. ci .. pres1p .. '\n|' .. vi .. pres2p .. '\n|' .. si .. pres3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | imperfetto\n'
    conj = conj .. '|' .. mi .. imperf1s .. '\n|' .. ti .. imperf2s .. '\n|' .. si .. imperf3s .. '\n|' .. ci .. imperf1p .. '\n|' .. vi .. imperf2p .. '\n|' .. si .. imperf3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | passato remoto\n'
    conj = conj .. '|' .. mi .. prem1s .. '\n|' .. ti .. prem2s .. '\n|' .. si .. prem3s .. '\n|' .. ci .. prem1p .. '\n|' .. vi .. prem2p .. '\n|' .. si .. prem3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | futuro\n'
    conj = conj .. '|' .. mi .. fut1s .. '\n|' .. ti .. fut2s .. '\n|' .. si .. fut3s .. '\n|' .. ci .. fut1p .. '\n|' .. vi .. fut2p .. '\n|' .. si .. fut3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | passato prossimo\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. paspros.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. paspros1s .. '||' .. ti .. paspros2s .. '||' .. si .. paspros3s .. '||' .. ci .. paspros1p .. '||' .. vi .. paspros2p .. '\n|' .. si .. paspros3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | trapassato prossimo\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. trappros.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. trappros1s .. '\n|' .. ti .. trappros2s .. '\n|' .. si .. trappros3s .. '\n|' .. ci .. trappros1p .. '\n|' .. vi .. trappros2p .. '\n|' .. si .. trappros3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | trapassato remoto\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. traprem.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. traprem1s .. '\n|' .. ti .. traprem2s .. '\n|' .. si .. traprem3s .. '\n|' .. ci .. traprem1p .. '\n|' .. vi .. traprem2p .. '\n|' .. si .. traprem3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | futuro anteriore\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. futant.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. futant1s .. '\n|' .. ti .. futant2s .. '\n|' .. si .. futant3s .. '\n|' .. ci .. futant1p .. '\n|' .. vi .. futant2p .. '\n|' .. si .. futant3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="background:#c0d8e4" colspan="1" | condizionale\n'
    conj = conj .. '! style="background:#c0d8e4" | io\n'
    conj = conj .. '! style="background:#c0d8e4" | tu\n'
    conj = conj .. '! style="background:#c0d8e4" | lui/lei\n'
    conj = conj .. '! style="background:#c0d8e4" | noi\n'
    conj = conj .. '! style="background:#c0d8e4" | voi\n'
    conj = conj .. '! style="background:#c0d8e4" | essi/esse\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0d8e4" colspan="1" | presente\n'
    conj = conj .. '|' .. mi .. cond1s .. '\n|' .. ti .. cond2s .. '\n|' .. si .. cond3s .. '\n|' .. ci .. cond1p .. '\n|' .. vi .. cond2p .. '\n|' .. si .. cond3p .. '\n'   
    conj = conj .. '|-\n! style="height:3em;background:#c0d8e4" colspan="1" | passato\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. condpas.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. condpas1s .. '\n|' .. ti .. condpas2s .. '\n|' .. si .. condpas3s .. '\n|' .. ci .. condpas1p .. '\n|' .. vi .. condpas2p .. '\n|' .. si .. condpas3p .. '\n |- \n |}</div></div>\n'   
    conj = conj .. '|-\n! style="background:#c0e4c0" colspan="1" | congiuntivo\n'
    conj = conj .. '! style="background:#c0e4c0" | che io\n'
    conj = conj .. '! style="background:#c0e4c0" | che tu\n'
    conj = conj .. '! style="background:#c0e4c0" | che lui/che lei\n'
    conj = conj .. '! style="background:#c0e4c0" | che noi\n'
    conj = conj .. '! style="background:#c0e4c0" | che voi\n'
    conj = conj .. '! style="background:#c0e4c0" | che essi/che esse\n|-\n'
    conj = conj .. '! style="height:3em;background:#c0e4c0" | presente\n'
    conj = conj .. '|' .. mi .. cong123s .. '\n|' .. ti .. cong123s .. '\n|' .. si .. cong3s .. '\n|' .. ci .. cong1p .. '\n|' .. vi .. cong2p .. '\n|' .. si .. cong3p .. '\n'   
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" rowspan="1" | imperfetto\n'
    conj = conj .. '|' .. mi .. congimp12s .. '\n|' .. ti .. congimp12s .. '\n|' .. si .. congimp3s .. '\n|' .. ci .. congimp1p .. '\n|' .. vi .. congimp2p .. '\n|' .. si .. congimp3p .. '\n' 
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" colspan="1" | passato\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. congpas.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. congpas1s .. '\n|' .. ti .. congpas2s .. '\n|' .. si .. congpas3s .. '\n|' .. ci .. congpas1p .. '\n|' .. vi .. congpas2p .. '\n|' .. si .. congpas3p .. '\n |- \n |}</div></div>\n'   
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" colspan="1" | trapassato\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="mw-collapsible mw-collapsed" style="border:0" data-expandtext="▼ Espandi" data-collapsetext="▲ Nascondi">'.. congtrap.. '<div class="mw-collapsible-content">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. mi .. congtrap1s .. '\n|' .. ti .. congtrap2s .. '\n|' .. si .. congtrap3s .. '\n|' .. ci .. congtrap1p .. '\n|' .. vi .. congtrap2p .. '\n|' .. si .. congtrap3p .. '\n |- \n |}</div></div>\n' 
    conj = conj .. '|-\n! colspan="1" rowspan="2" style="height:3em;background:#e4d4c0" | imperativo\n'
    conj = conj .. '! style="background:#e4d4c0" | -\n'
    conj = conj .. '! style="background:#e4d4c0" | tu\n'
    conj = conj .. '! style="background:#e4d4c0" | lui/lei\n'
    conj = conj .. '! style="background:#e4d4c0" | noi\n'
    conj = conj .. '! style="background:#e4d4c0" | voi\n'
    conj = conj .. '! style="background:#e4d4c0" | essi/esse\n'
    conj = conj .. '|-\n|\n'
    conj = conj .. '|' .. imp2s .. imp2sneg.. '\n|' .. si .. imp3s .. '\n|' .. imp1p .. '\n|' .. imp2p .. '\n|' .. si .. imp3p .. '\n'
    conj = conj .. '|-\n'    
    conj = conj .. '|}'
    return conj 
end

function p.over(x,over,xtra)
-- Utilizzato all'interno della funzione itconj
-- Rimpiazza una voce verbale standard con quella eventualmente indicata nel template (se quest'ultimo è un link rosso, aggiunge anche la relativa categoria)
    if over == nil then return x end
    if over < "a" then return '' end
    if xtra == 0 then return over .. " " end -- for reflexive pronouns
	if over >= "a" and mw.title.new(over).exists == false then 
		RedCat = categorizza("Verbi italiani con forme da scrivere", titolo)
	else
		RedCat = ""
		end
	if RedCat > "0" then
		return RedCat.. " [[" .. over .. "#Italiano|" .. over .. "]]"
	else
		return "[[" .. over .. "#Italiano|" .. over .. "]]"
	end
end

function p.wiki(x)
-- Utilizzato all'interno della funzione itconj
    if x == nil then return " " end
    if x == "" then return " " end
    -- aggiunge la categoria link rossi
    if x == mw.title.getCurrentTitle().subpageText then --per la voce all'infinito
    	if x >= "a" and mw.title.new(x).exists == false then
    	RedCat = categorizza("Verbi italiani da scrivere", titolo)
        else
    	RedCat = ""
    	end
    else --per tutte le altre
    	if x >= "a" and mw.title.new(x).exists == false then
    	RedCat = categorizza("Verbi italiani con forme da scrivere", titolo)
    		if mw.ustring.find(mw.title.getCurrentTitle().subpageText, "rsi$") then RedCat = categorizza("Verbi italiani riflessivi con forme da scrivere", titolo) end
        else
    	RedCat = ""
    	end
	end
-- Rende il suo argomento un wikilink, o lo rende nullo se non definito (per facilitare la concatenazione)
    if RedCat > "0" then
    	return RedCat.. " [[" .. x .. "#Italiano|" .. x .. "]]"
    else
    	return "[[" .. x .. "#Italiano|" .. x .. "]]"
    end
end

function p.alts(x,y)
-- Utilizzato all'interno della funzione itconj
-- Aggiunge le eventuali forme alternative, se specificate nel template, separandole da quelle base con una virgola
	if y == nil then return x end
	if y == '' then return x end
    if y > "0" then return x .. ", " .. y end
    return x
end

function p.plurale(pos, str, r)
-- Utilizzato all'interno della funzione itconj
--genera automaticamente il plurale del participio passato
    return str:sub(1, pos-1) .. r
end

return p