<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.scout.clutch.engineering/index.php?action=history&amp;feed=atom&amp;title=Module%3AFact</id>
	<title>Module:Fact - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.scout.clutch.engineering/index.php?action=history&amp;feed=atom&amp;title=Module%3AFact"/>
	<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Fact&amp;action=history"/>
	<updated>2026-04-17T19:32:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Module:Fact&amp;diff=8&amp;oldid=prev</id>
		<title>Featherless: Created page with &quot;local p = {} local getArgs = require(&#039;Module:Arguments&#039;).getArgs local languages = require(&quot;Module:Languages&quot;) local currentTitle = mw.title.getCurrentTitle() local defaultLangCode = languages.languageFromTitle(currentTitle)  local function makeInvokeFunc(funcName) 	return function (frame) 		local args = getArgs(frame, { 			trim = true, 			removeBlanks = false, 		}) 		return p[funcName](args) 	end end  function pageLink(pageName, label, langCode) 	local title = mw.title....&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Fact&amp;diff=8&amp;oldid=prev"/>
		<updated>2025-09-02T15:06:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local languages = require(&amp;quot;Module:Languages&amp;quot;) local currentTitle = mw.title.getCurrentTitle() local defaultLangCode = languages.languageFromTitle(currentTitle)  local function makeInvokeFunc(funcName) 	return function (frame) 		local args = getArgs(frame, { 			trim = true, 			removeBlanks = false, 		}) 		return p[funcName](args) 	end end  function pageLink(pageName, label, langCode) 	local title = mw.title....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local languages = require(&amp;quot;Module:Languages&amp;quot;)&lt;br /&gt;
local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
local defaultLangCode = languages.languageFromTitle(currentTitle)&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {&lt;br /&gt;
			trim = true,&lt;br /&gt;
			removeBlanks = false,&lt;br /&gt;
		})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function pageLink(pageName, label, langCode)&lt;br /&gt;
	local title = mw.title.new(pageName)&lt;br /&gt;
	local validPageName&lt;br /&gt;
	if langCode and #langCode &amp;gt; 0 and title then&lt;br /&gt;
		validPageName = languages.translationPageName(langCode, title)&lt;br /&gt;
	elseif defaultLangCode ~= &amp;quot;en&amp;quot; and pageName ~= currentTitle.fullText and title then&lt;br /&gt;
		local translatedPageName = languages.translationPageName(defaultLangCode, title)&lt;br /&gt;
		if mw.title.new(translatedPageName).exists then&lt;br /&gt;
			validPageName = translatedPageName&lt;br /&gt;
		else&lt;br /&gt;
			validPageName = pageName&lt;br /&gt;
		end&lt;br /&gt;
	elseif title then&lt;br /&gt;
		validPageName = pageName&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if validPageName then&lt;br /&gt;
		return &amp;quot;[[&amp;quot; .. validPageName .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return label&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function valueLink(key, value, langCode)&lt;br /&gt;
	local pageName = &amp;quot;Fact:&amp;quot; .. key .. &amp;quot;=&amp;quot; .. value&lt;br /&gt;
	return pageLink(pageName, tostring(mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(value)), langCode)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.value = makeInvokeFunc(&amp;quot;_value&amp;quot;)&lt;br /&gt;
function p._value(args)&lt;br /&gt;
	local langCode = args.kl or args.lang&lt;br /&gt;
	local key = args.key or args[1]&lt;br /&gt;
	&lt;br /&gt;
	local pageName&lt;br /&gt;
	if args.link == &amp;quot;value&amp;quot; or args.link == &amp;quot;fact&amp;quot; or (args[2] and #args[2] &amp;gt; 0) then&lt;br /&gt;
		if key == &amp;quot;type&amp;quot; then&lt;br /&gt;
			pageName = &amp;quot;Relation:&amp;quot; .. (args.value or args[2])&lt;br /&gt;
		else&lt;br /&gt;
			pageName = mw.ustring.format(&amp;quot;Fact:%s=%s&amp;quot;, key, args.value or args[2])&lt;br /&gt;
		end&lt;br /&gt;
	elseif args.link == &amp;quot;key#&amp;quot; or (args[3] and #args[3] &amp;gt; 0) then&lt;br /&gt;
		pageName = mw.ustring.format(&amp;quot;Key:%s#%s-%s&amp;quot;, key, key, args.value or args[3])&lt;br /&gt;
	elseif args.link ~= &amp;quot;none&amp;quot; and key then&lt;br /&gt;
		pageName = &amp;quot;Key:&amp;quot; .. key&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local label = args.value or args[4] or args[3] or args[2] or mw.text.nowiki(&amp;quot;*&amp;quot;)&lt;br /&gt;
	label = mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(label)&lt;br /&gt;
	&lt;br /&gt;
	if pageName then&lt;br /&gt;
		return tostring(pageLink(pageName, tostring(label), langCode))&lt;br /&gt;
	else&lt;br /&gt;
		return tostring(label)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fact(args, includesValue)&lt;br /&gt;
	local components = {}&lt;br /&gt;
	local keyComponents = {}&lt;br /&gt;
	local keyComponentsToLink = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Key&lt;br /&gt;
	local key = args[1]&lt;br /&gt;
	table.insert(keyComponents, key)&lt;br /&gt;
	table.insert(keyComponentsToLink, key)&lt;br /&gt;
	&lt;br /&gt;
	-- Give |subkey= precedence over |subkey1=.&lt;br /&gt;
	if args.subkey then&lt;br /&gt;
		table.insert(keyComponents, args.subkey)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Collect subkeys.&lt;br /&gt;
	local subkeyIndex = 2&lt;br /&gt;
	while args[&amp;quot;subkey&amp;quot; .. subkeyIndex] do&lt;br /&gt;
		local subkey = args[&amp;quot;subkey&amp;quot; .. subkeyIndex]&lt;br /&gt;
		table.insert(keyComponents, subkey)&lt;br /&gt;
		subkeyIndex = subkeyIndex + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Combine |subkey*= with |key=, but not for linking purposes.&lt;br /&gt;
	keyComponents = {&lt;br /&gt;
		table.concat(keyComponents, mw.text.nowiki(&amp;quot;:&amp;quot;)),&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	-- Collect subkeys to be linked separately.&lt;br /&gt;
	local subkeyIndex = 1&lt;br /&gt;
	while args[string.rep(&amp;quot;:&amp;quot;, subkeyIndex)] do&lt;br /&gt;
		local subkey = args[string.rep(&amp;quot;:&amp;quot;, subkeyIndex)]&lt;br /&gt;
		table.insert(keyComponents, subkey)&lt;br /&gt;
		table.insert(keyComponentsToLink, subkey)&lt;br /&gt;
		subkeyIndex = subkeyIndex + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Link the key and any subkeys.&lt;br /&gt;
	local linkedKeyComponents = {}&lt;br /&gt;
	for i, key in ipairs(keyComponentsToLink) do&lt;br /&gt;
		local langCode = args[&amp;quot;kl&amp;quot; .. string.rep(&amp;quot;:&amp;quot;, i - 1)] or args.lang&lt;br /&gt;
		table.insert(linkedKeyComponents, pageLink(&amp;quot;Key:&amp;quot; .. key, keyComponents[i], langCode))&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(components, table.concat(linkedKeyComponents, &amp;quot;:&amp;quot;))&lt;br /&gt;
	&lt;br /&gt;
	components = {&lt;br /&gt;
		tostring(mw.html.create(&amp;quot;bdi&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;white-space&amp;quot;, &amp;quot;nowrap&amp;quot;)&lt;br /&gt;
			:wikitext(table.concat(components)))&lt;br /&gt;
	}&lt;br /&gt;
	if not includesValue then&lt;br /&gt;
		return table.concat(components)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(components, &amp;quot;=&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Values&lt;br /&gt;
	local lastKeyComponent = keyComponents[#keyComponents]&lt;br /&gt;
	if args[2] and #args[2] &amp;gt; 0 then&lt;br /&gt;
		local values = {}&lt;br /&gt;
		if args[2] then&lt;br /&gt;
			table.insert(values, args[2])&lt;br /&gt;
		end&lt;br /&gt;
		if args[&amp;quot;;&amp;quot;] or args.subval then&lt;br /&gt;
			table.insert(values, args[&amp;quot;;&amp;quot;] or args.subval)&lt;br /&gt;
		end&lt;br /&gt;
		local subvalueIndex = 2&lt;br /&gt;
		while args[string.rep(&amp;quot;;&amp;quot;, subvalueIndex)] or args[&amp;quot;subval&amp;quot; .. subvalueIndex] do&lt;br /&gt;
			local otherValue = args[string.rep(&amp;quot;;&amp;quot;, subvalueIndex)] or args[&amp;quot;subval&amp;quot; .. subvalueIndex]&lt;br /&gt;
			if #otherValue &amp;gt; 0 then&lt;br /&gt;
				table.insert(values, otherValue)&lt;br /&gt;
			end&lt;br /&gt;
			subvalueIndex = subvalueIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
		local linkedValues = {}&lt;br /&gt;
		for i, value in ipairs(values) do&lt;br /&gt;
			local langCode = args[i &amp;gt; 1 and (&amp;quot;vl&amp;quot; .. i) or &amp;quot;vl&amp;quot;] or args.lang&lt;br /&gt;
			table.insert(linkedValues, valueLink(lastKeyComponent, value, langCode))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(components, table.concat(linkedValues, &amp;quot;;&amp;quot;))&lt;br /&gt;
	elseif args[3] and #args[3] &amp;gt; 0 then&lt;br /&gt;
		local lastBaseKeyComponent = keyComponentsToLink[#keyComponentsToLink]&lt;br /&gt;
		local lastSubkey = lastKeyComponent:match(&amp;quot;%w+$&amp;quot;)&lt;br /&gt;
		local value = args[3]&lt;br /&gt;
		&lt;br /&gt;
		-- A wiki page title cannot contain a square bracket, so this is likely already a wikilink or external link.&lt;br /&gt;
		local isLiteralLink = (value:sub(1, 1)) == &amp;quot;[&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		local pageName&lt;br /&gt;
		local url&lt;br /&gt;
		if not isLiteralLink then&lt;br /&gt;
			if lastSubkey == &amp;quot;wikipedia&amp;quot; or lastBaseKeyComponent == &amp;quot;wikipedia&amp;quot; then&lt;br /&gt;
				if lastSubkey ~= &amp;quot;wikipedia&amp;quot; then&lt;br /&gt;
					value = lastSubkey .. &amp;quot;:&amp;quot; .. value&lt;br /&gt;
				end&lt;br /&gt;
				pageName = &amp;quot;w:&amp;quot; .. value&lt;br /&gt;
			elseif lastSubkey == &amp;quot;wikidata&amp;quot; or lastBaseKeyComponent == &amp;quot;wikidata&amp;quot; then&lt;br /&gt;
				pageName = &amp;quot;d:&amp;quot; .. value&lt;br /&gt;
			elseif lastSubkey == &amp;quot;wikimedia_commons&amp;quot; or lastBaseKeyComponent == &amp;quot;wikimedia_commons&amp;quot; then&lt;br /&gt;
				pageName = &amp;quot;Commons:&amp;quot; .. value&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if lastSubkey == &amp;quot;url&amp;quot; or lastBaseKeyComponent == &amp;quot;url&amp;quot; or lastSubkey == &amp;quot;website&amp;quot; or lastBaseKeyComponent == &amp;quot;website&amp;quot; then&lt;br /&gt;
				url = value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if url then&lt;br /&gt;
			local label = mw.html.create(&amp;quot;bdi&amp;quot;)&lt;br /&gt;
				:css(&amp;quot;white-space&amp;quot;, &amp;quot;normal&amp;quot;)&lt;br /&gt;
				:wikitext(mw.text.nowiki(url))&lt;br /&gt;
			table.insert(components, &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. tostring(label) .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		elseif pageName then&lt;br /&gt;
			local label = mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(args[3])&lt;br /&gt;
			table.insert(components, pageLink(pageName, tostring(label), &amp;quot;&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			local label = mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(args[3])&lt;br /&gt;
			table.insert(components, tostring(label))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(components, mw.text.nowiki(&amp;quot;*&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(components)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.key = makeInvokeFunc(&amp;quot;_key&amp;quot;)&lt;br /&gt;
function p._key(args)&lt;br /&gt;
	return fact(args, false)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.fact = makeInvokeFunc(&amp;quot;_fact&amp;quot;)&lt;br /&gt;
function p._fact(args)&lt;br /&gt;
	return fact(args, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.keyComponents(key)&lt;br /&gt;
	if #key == 0 then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local rawComponents = mw.text.split(key, &amp;quot;:&amp;quot;, true)&lt;br /&gt;
	local resolvedComponents = {}&lt;br /&gt;
	local mostSpecificTitle&lt;br /&gt;
	local mostSpecificEntityId&lt;br /&gt;
	local mostSpecificDescription&lt;br /&gt;
	local seenCoreComponent = false&lt;br /&gt;
	for i, component in ipairs(rawComponents) do&lt;br /&gt;
		local base = table.concat(resolvedComponents, &amp;quot;:&amp;quot;)&lt;br /&gt;
		if #base &amp;gt; 0 then&lt;br /&gt;
			base = base .. &amp;quot;:&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local key = mw.ustring.format(&amp;quot;%s%s&amp;quot;, base, component)&lt;br /&gt;
		local title&lt;br /&gt;
		local entityId&lt;br /&gt;
		&lt;br /&gt;
		-- First check if this component is a prefix.&lt;br /&gt;
		-- TODO: Require the prefix to precede any non-prefixes.&lt;br /&gt;
		local pageName = mw.ustring.format(&amp;quot;Key:%s:*&amp;quot;, key)&lt;br /&gt;
		title = mw.title.new(pageName)&lt;br /&gt;
		entityId = mw.wikibase.getEntityIdForTitle(pageName)&lt;br /&gt;
		&lt;br /&gt;
		-- How about a suffix?&lt;br /&gt;
		-- TODO: Require the suffix to follow any non-suffixes.&lt;br /&gt;
		if not entityId and not (title and title.exists) then&lt;br /&gt;
			local pageName = mw.ustring.format(&amp;quot;Key:*:%s&amp;quot;, key)&lt;br /&gt;
			title = mw.title.new(pageName)&lt;br /&gt;
			entityId = mw.wikibase.getEntityIdForTitle(pageName)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not entityId and not (title and title.exists) then&lt;br /&gt;
			local pageName = mw.ustring.format(&amp;quot;Key:%s&amp;quot;, key)&lt;br /&gt;
			title = mw.title.new(pageName)&lt;br /&gt;
			entityId = mw.wikibase.getEntityIdForTitle(pageName)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if entityId or title.exists then&lt;br /&gt;
			local description = mw.wikibase.getDescription(entityId)&lt;br /&gt;
			if (description or not mw.ustring.find(key, &amp;quot;:&amp;quot;)) and&lt;br /&gt;
					-- Avoid deprecated keys, which are less likely to be key components.&lt;br /&gt;
					(not entityId or #mw.wikibase.getBestStatements(entityId, &amp;quot;P17&amp;quot;) == 0) then&lt;br /&gt;
				table.insert(resolvedComponents, component)&lt;br /&gt;
				mostSpecificTitle = title&lt;br /&gt;
				mostSpecificEntityId = entityId&lt;br /&gt;
				mostSpecificDescription = description&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #resolvedComponents == 0 then&lt;br /&gt;
		local component = rawComponents[1]&lt;br /&gt;
		if mw.language.isKnownLanguageFact(component) then&lt;br /&gt;
			table.insert(resolvedComponents, component)&lt;br /&gt;
			mostSpecificDescription = mw.ustring.format(&amp;quot;[[w:ISO 639:%s|%s]]&amp;quot;,&lt;br /&gt;
				component,&lt;br /&gt;
				mw.language.fetchLanguageName(component, defaultLangCode))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local subkey = table.concat(rawComponents, &amp;quot;:&amp;quot;, #resolvedComponents + 1)&lt;br /&gt;
	if #resolvedComponents == 0 then&lt;br /&gt;
		local component = {&lt;br /&gt;
			name = subkey,&lt;br /&gt;
		}&lt;br /&gt;
		return { component }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local superkey = {&lt;br /&gt;
		name = table.concat(resolvedComponents, &amp;quot;:&amp;quot;),&lt;br /&gt;
		title = mostSpecificTitle,&lt;br /&gt;
		entityId = mostSpecificEntityId,&lt;br /&gt;
		description = mostSpecificDescription,&lt;br /&gt;
	}&lt;br /&gt;
	resolvedComponents = p.keyComponents(subkey)&lt;br /&gt;
	table.insert(resolvedComponents, 1, superkey)&lt;br /&gt;
	return resolvedComponents&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.keyComponentList(frame)&lt;br /&gt;
	-- Get arguments from the calling frame, falling back to its calling frame&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	&lt;br /&gt;
	local key = args[1]&lt;br /&gt;
	local components = p.keyComponents(key)&lt;br /&gt;
	if #components &amp;lt; 2 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local listItems = {}&lt;br /&gt;
	for i, component in ipairs(components) do&lt;br /&gt;
		local fact&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			fact = frame:expandTemplate {&lt;br /&gt;
				title = &amp;quot;Fact&amp;quot;,&lt;br /&gt;
				args = { component[&amp;quot;name&amp;quot;] },&lt;br /&gt;
			}&lt;br /&gt;
		elseif component[&amp;quot;title&amp;quot;] or component[&amp;quot;entityId&amp;quot;] then&lt;br /&gt;
			fact = frame:expandTemplate {&lt;br /&gt;
				title = &amp;quot;Fact&amp;quot;,&lt;br /&gt;
				args = {&lt;br /&gt;
					&amp;quot;*&amp;quot;,&lt;br /&gt;
					[&amp;quot;:&amp;quot;] = component[&amp;quot;name&amp;quot;]&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
		else&lt;br /&gt;
			fact = frame:expandTemplate {&lt;br /&gt;
				title = &amp;quot;Value&amp;quot;,&lt;br /&gt;
				args = {&lt;br /&gt;
					mw.ustring.format(&amp;quot;&amp;amp;#x2a;&amp;amp;#x3a;%s=*&amp;quot;, component[&amp;quot;name&amp;quot;]),&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
		local description = component.description&lt;br /&gt;
		local edit = component.entityId and frame:expandTemplate {&lt;br /&gt;
			title = &amp;quot;Edit&amp;quot;,&lt;br /&gt;
			args = {&lt;br /&gt;
				&amp;quot;Item:&amp;quot; .. component.entityId,&lt;br /&gt;
			},&lt;br /&gt;
		} or &amp;quot;&amp;quot;&lt;br /&gt;
		if description then&lt;br /&gt;
			table.insert(listItems, mw.ustring.format(&amp;quot;* %s: %s %s&amp;quot;, fact, description, edit))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(listItems, mw.ustring.format(&amp;quot;* %s %s&amp;quot;, fact, edit))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.intro and #args.intro &amp;gt; 0 then&lt;br /&gt;
		table.insert(listItems, 1, args.intro)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(listItems, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
</feed>