 local pu800 local function trim su800 return mwu800u82eustringu82ematch su800 ' su800* . su800* ' endu800 local function isnotempty su800 return su800 andu800 mwu800u82eustringu82ematch su800 ' su800' endu800 function pu800u82echeck frame local args frameu82eargs local pargs frame getparent .args local checknested isnotempty args 'nested' local delimiter isnotempty args 'delimiter' andu800 args 'delimiter' oru800 ';' local argpairs foru800 ku800 vu800 inu800 pairs args dou800 ifu800 type ku800 'number' then local plist mwu800u82etextu82esplit vu800 delimiter local pfound local count 0u800 foru800 iiu800 vvu800 inu800 ipairs plist dou800 vvu800 trim vvu800 ifu800 checknested andu800 pargs vvu800 oru800 isnotempty pargs vvu800 then count count 1u800 tableu82einsert pfound vvu800 endu800 endu800 ifu800 count 1u800 then tableu82einsert argpairs pfound endu800 endu800 endu800 local warnmsg local resu800   local catu800   ifu800 args 'catu800' andu800 mwu800u82eustringu82ematch args 'catu800' ' ccu800 aau800 ttu800 eeu800 ggu800 oou800 rru800 yyu800 ' oru800 mwu800u82eustringu82ematch args 'catu800' ' u8d8b1u8d8afu8d987 ' then catu800 args 'catu800' endu800 local template args 'template' andu800 ' u8d8afu8d8b1 ' .. args 'template' oru800   ifu800 #argpairs 0u800 then foru800 iu800 vu800 inu800 ipairs argpairs dou800 tableu82einsert warnmsg mwu800u82eustringu82eformat 'u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8a7u8d8b2 u8d8a8u8db8cu8d8b4 u8d8a7u8d8b2 u8db8cu8daa9u8db8c u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1u8d987u8d8a7u8db8c u8d8b2u8db8cu8d8b1 su800 su800 .' template tableu82econcat vu800 ' ' ifu800 catu800   then resu800 resu800 .. ' ' .. catu800 .. ' ' .. vu800 1u800   andu800 ' ' oru800   .. vu800 1u800 .. ' ' endu800 endu800 endu800 ifu800 #warnmsg 0u800 then resu800 require 'module ifu800 preview' ._warning tableu82econcat warnmsg ' ' .. resu800 endu800 return resu800 endu800 return pu800 