 this module implements theu800 luau800 template. u8d8b3u8d8b7u8d8b1u8d987u8d8a7u8db8c u8dbb3u8dbb7 u8d8aau8d8a7 u8dbb4u8dbb0 u8d8a7u8db8cu8d986 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 u8d8a8u8d8b1u8d8a7u8db8c u8d8aau8d8bau8db8cu8db8cu8d8b1 u8d986u8d8a7u8d985 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d8a7u8d8b2 u8c2abmoduleu8c2bb u8d8a8u8d987 u8c2abu8d9beu8d988u8d8afu8d985u8d8a7u8d986u8c2bb u8d8aau8d8bau8db8cu8db8cu8d8b1 u8daa9u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d986u8d8af. u8d8afu8d8b1 u8d8b2u8d985u8d8a7u8d986 u8d8a8u8d987u8e2808cu8d8b1u8d988u8d8b2u8d8b1u8d8b3u8d8a7u8d986u8db8c u8d8afu8d982u8d8aa u8daa9u8d986u8db8cu8d8af local yesno require 'module yesno' local mlist require 'module list' local mtabletools require 'module tabletools local mmessagebox require 'module message boxu800' local pu800 function pu800u82emain frame local origargs frame getparent .args local args foru800 ku800 vu800 inu800 pairs origargs dou800 vu800 vu800 match ' su800* . su800* ' ifu800 vu800   then args ku800 vu800 endu800 endu800 return pu800u82e_main args endu800 function pu800u82e_main args local modules mtabletoolsu82ecompresssparsearray args local boxu800 pu800u82erenderbox modules local trackingcategories pu800u82erendertrackingcategories args modules return boxu800 .. trackingcategories endu800 function pu800u82erenderbox modules local boxargs ifu800 #modules 1u800 then boxargsu82etext ' u8d8aeu8d8b7u8d8a7 u8d987u8db8cu8da86 u8d9beu8d988u8d8afu8d985u8d8a7u8d986u8db8c u8d985u8d8b4u8d8aeu8d8b5 u8d986u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa ' else local modulelinks foru800 iu800 module inu800 ipairs modules dou800 replace "module" namespace prefix with "u8d9beu8d988u8d8afu8d985u8d8a7u8d986" ifu800 mwu800u82eustringu82efind module ' mmu800 odule' 1u800 false then module mwu800u82eustringu82egsub module ' mmu800 odule' 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986' 1u800 endu800 modulelinks iu800 stringu82eformat ' su800 ' module local maybesandbox mwu800u82etitleu82enewu800 module .. ' u8d8aau8d985u8d8b1u8db8cu8d986' ifu800 maybesandboxu82eexists then modulelinks iu800 modulelinks iu800 .. stringu82eformat ' su800 u8d8aau8d985u8d8b1u8db8cu8d986 ' maybesandboxu82efulltext endu800 endu800 local modulelist mlistu82emakelist 'bulleted' modulelinks local title mwu800u82etitleu82egetcurrenttitle ifu800 titleu82esubpagetext "docu800" oru800 titleu82esubpagetext "u8d8aau8d988u8d8b6u8db8cu8d8adu8d8a7u8d8aa" then title titleu82ebasepagetitle endu800 ifu800 titleu82econtentmodel "scribunto" then boxargsu82etext 'u8d8a7u8db8cu8d986 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 u8d8a7u8d8b2 u8d9beu8d988u8d8afu8d985u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d8b2u8db8cu8d8b1 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af ' .. modulelist else boxargsu82etext 'u8d8a7u8db8cu8d986 u8d8a7u8d984u8daafu8d988 u8d8a7u8d8b2 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d984u8d988u8d8a2 u8d984u8d988u8d8a2 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af nu800' .. modulelist endu800 endu800 boxargsu82etype 'notice' boxargsu82esmall true boxargsu82eimage ' u8d9beu8d8b1u8d988u8d986u8d8afu8d987 luau800 logo nolabelu82esvgu800 30px u8d8acu8d8a7u8db8cu8daafu8d8b2u8db8cu8d986 u8d986u8d985u8d8a7u8d8af u8d984u8d988u8d8a2 u8d9beu8db8cu8d988u8d986u8d8af u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d984u8d988u8d8a2 ' return mmessageboxu82emain 'mbox' boxargs endu800 function pu800u82erendertrackingcategories args modules titleobj ifu800 yesno argsu82enocat then return   endu800 local cats error category ifu800 #modules 1u800 then cats #cats 1u800 'u8d8a7u8d984u8daafu8d988 u8d984u8d988u8d8a2 u8d987u8d985u8d8b1u8d8a7u8d987 u8d8aeu8d8b7u8d8a7' endu800 luau800 templates category titleobj titleobj oru800 mwu800u82etitleu82egetcurrenttitle local subpageblacklist docu800 true sandbox true sandbox2 true testcases true 'u8d8aau8d988u8d8b6u8db8cu8d8adu8d8a7u8d8aa' true 'u8d8aau8d985u8d8b1u8db8cu8d986' true 'u8d8a2u8d8b2u8d985u8d8a7u8db8cu8d8b4u8db8c' true local subpagename subpageblacklist titleobju82esubpagetext ifu800 notu800 subpagename then local protcatname ifu800 titleobju82enamespace 10u800 then local category argsu82ecategory ifu800 notu800 category then local categories 'module string' 'u8d8a7u8d984u8daafu8d988 u8d985u8d8a8u8d8aau8d986u8db8c u8d8a8u8d8b1 u8d984u8d988u8d8a2 u8d8b1u8d8b4u8d8aau8d987' 'module math' 'u8d8a7u8d984u8daafu8d988 u8d985u8d8a8u8d8aau8d986u8db8c u8d8a8u8d8b1 u8d984u8d988u8d8a2 u8d8b1u8db8cu8d8a7u8d8b6u8db8c' 'module baseconvert' 'u8d8a7u8d984u8daafu8d988 u8d985u8d8a8u8d8aau8d986u8db8c u8d8a8u8d8b1 u8d984u8d988u8d8a2 u8d8aau8d8a8u8d8afu8db8cu8d984 u8d985u8d8a8u8d986u8d8a7' 'module citation' 'u8d8a7u8d984u8daafu8d988 u8d8a7u8d8b1u8d8acu8d8a7u8d8b9u8e2808cu8d8afu8d987u8db8c u8d985u8d8a8u8d8aau8d986u8db8c u8d8a8u8d8b1 u8d984u8d988u8d8a2' categories 'module citation cs1u800' categories 'module citation' category modules 1u800 andu800 categories modules 1u800 category category oru800 'u8d8a7u8d984u8daafu8d988 u8d985u8d8a8u8d8aau8d986u8db8c u8d8a8u8d8b1 u8d984u8d988u8d8a2' endu800 cats #cats 1u800 category protcatname "u8d8a7u8d984u8daafu8d988 u8d985u8d8a8u8d8aau8d986u8db8c u8d8a8u8d8b1 u8d984u8d988u8d8a2 u8d8a8u8d8a7 u8d8b3u8d8b7u8d8ad u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d9beu8d8a7u8db8cu8db8cu8d986u8e2808cu8d8aau8d8b1" elseif titleobju82enamespace 828u800 then protcatname "u8d9beu8d988u8d8afu8d985u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d988u8d8a7u8d8a8u8d8b3u8d8aau8d987 u8d8a8u8d987 u8d9beu8d988u8d8afu8d985u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d8afu8db8cu8daafu8d8b1 u8d8a8u8d8a7 u8d8b3u8d8b7u8d8ad u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d9beu8d8a7u8db8cu8db8cu8d986u8e2808cu8d8aau8d8b1" endu800 ifu800 notu800 argsu82enoprotcat andu800 protcatname then local protlevels autoconfirmed 1u800 extendedconfirmed 2u800 templateeditor 3u800 sysop 4u800 local currentprot ifu800 titleobju82eidu800 0u800 then idu800 isu800 0u800 page does notu800 exist ifu800 amu800 previewing before creating au800 template. currentprot titleobju82eprotectionlevels "edit" 1u800 endu800 ifu800 currentprot nilu800 then currentprot 0u800 else currentprot protlevels currentprot endu800 foru800 iu800 module inu800 ipairs modules dou800 ifu800 module "wpu800 libraryutil" then local moduleprot mwu800u82etitleu82enewu800 module .protectionlevels "edit" 1u800 ifu800 moduleprot nilu800 then moduleprot 0u800 else moduleprot protlevels moduleprot endu800 ifu800 moduleprot currentprot then cats #cats 1u800 protcatname break endu800 endu800 endu800 endu800 endu800 foru800 iu800 catu800 inu800 ipairs cats dou800 cats iu800 stringu82eformat ' u8d8b1u8d8afu8d987 su800 ' catu800 endu800 return tableu82econcat cats endu800 return pu800 