<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.democracycraft.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aubunny</id>
	<title>DemocracyCraft Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.democracycraft.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aubunny"/>
	<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/Special:Contributions/Aubunny"/>
	<updated>2026-04-26T20:43:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Designer&amp;diff=8865</id>
		<title>Designer</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Designer&amp;diff=8865"/>
		<updated>2026-02-08T15:55:13Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: /* Cameras */  Updated to use new camera recipe.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jobs}}&lt;br /&gt;
As a Designer, you have the creative freedom to express yourself using the ArtMap plugin.&lt;br /&gt;
== What designers do ==&lt;br /&gt;
As a Designer, your creative tasks are diverse and include:&lt;br /&gt;
&lt;br /&gt;
==== 1. Creative Pieces ====&lt;br /&gt;
You have the artistic prowess to craft breathtaking creative pieces that can range from traditional paintings to intricate pixel art. Your imagination is your only limit.&lt;br /&gt;
&lt;br /&gt;
==== 2. Business Advertisements ====&lt;br /&gt;
With your creative skills, you can develop eye-catching advertisements that businesses can use to promote their products or services. Your designs can play a vital role in attracting customers.&lt;br /&gt;
&lt;br /&gt;
==== 3. Political Advertisements ====&lt;br /&gt;
In the world of politics, your designs have the power to sway opinions and inform the masses. Create compelling political advertisements that convey important messages and campaign strategies.&lt;br /&gt;
&lt;br /&gt;
==== 4. Galleries ====&lt;br /&gt;
Designers also curate galleries to showcase their artistic masterpieces. These galleries are spaces where players and art enthusiasts can appreciate and enjoy your creative work.&lt;br /&gt;
&lt;br /&gt;
== ArtMap ==&lt;br /&gt;
=== Dyes ===&lt;br /&gt;
Dive into a world of colors for your artwork by accessing the Dyes feature in the ArtMap GUI (&amp;lt;code&amp;gt;/artmap&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This allows you to explore a wide variety of colors, with multiple pages of colors to choose from. You can view and select these colors while sitting at your easel and canvas.&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
[[File:Artmap GUI.png|right|thumb|This GUI is accessible in game by using /artmap|none]]&lt;br /&gt;
In the ArtMap GUI, you’ll find various tools by clicking the Book and Quill. These tools include the Bucket, Coal, Feather, and Compass, each serving a unique purpose.&lt;br /&gt;
&lt;br /&gt;
==== Paint bucket ====&lt;br /&gt;
The paint bucket serves as a filler tool. Left-click to fill areas of the canvas with the dye in your offhand. To undo the last fill, simply right-click while holding the bucket.&lt;br /&gt;
&lt;br /&gt;
==== Coal ====&lt;br /&gt;
The coal tool enables you to adjust the brightness of pixels, giving you more shades of colors. It’s useful for darkening a color once or twice. Hold the coal and right-click on a color to make it darker.&lt;br /&gt;
&lt;br /&gt;
==== Feather ====&lt;br /&gt;
The feather tool performs the opposite function of coal. Instead of darkening a color, it lightens it.&lt;br /&gt;
&lt;br /&gt;
==== Compass ====&lt;br /&gt;
The compass tool allows you to flip your art vertically or horizontally.&lt;br /&gt;
&lt;br /&gt;
Left-click while holding the compass to flip your art horizontally.&lt;br /&gt;
&lt;br /&gt;
== Crafting ==&lt;br /&gt;
Before creating art, you must:&lt;br /&gt;
&lt;br /&gt;
# Craft an easel using sticks.&lt;br /&gt;
# Craft a canvas.&lt;br /&gt;
&lt;br /&gt;
Both are essential for making art, and their crafting recipes can be accessed via the command /artmap.&lt;br /&gt;
&lt;br /&gt;
Additionally, designers have the ability to craft hats and cameras, findable using {{Code|/recipes}}&lt;br /&gt;
[[File:Hats -ia.png|thumb|Some of the hats available to craft as a designer.]]&lt;br /&gt;
&lt;br /&gt;
== Painting ==&lt;br /&gt;
To start painting:&lt;br /&gt;
&lt;br /&gt;
# Place your easel.&lt;br /&gt;
# Take a crafted canvas.&lt;br /&gt;
# Right-click the easel to attach the canvas.&lt;br /&gt;
&lt;br /&gt;
Now you’re ready to paint! Right-click the easel to begin painting. You can use left-click for individual pixels and hold right-click to draw lines.&lt;br /&gt;
&lt;br /&gt;
To take a break from painting, press the shift key to exit the easel, ensuring your art is saved for later.&lt;br /&gt;
&lt;br /&gt;
[[File:Art Palette Updated.webp|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Saving artwork ==&lt;br /&gt;
After creating your masterpiece, you can save it in two ways:&lt;br /&gt;
&lt;br /&gt;
# While sitting at your easel, type /art save [name].&lt;br /&gt;
# Right-click your art with the paintbrush in your inventory.&lt;br /&gt;
&lt;br /&gt;
For the second method, a GUI similar to an anvil interface will appear, allowing you to enter an artwork title and finalize it.&lt;br /&gt;
&lt;br /&gt;
=== Displaying art ===&lt;br /&gt;
To display your art, place an item frame and right-click it while holding your art. It will appear as a picture.&lt;br /&gt;
&lt;br /&gt;
You can make copies by combining blank maps and the original art in the crafting square. The number of blank maps used determines the number of copies you receive. Remember, only the owner of the art can create copies.&lt;br /&gt;
&lt;br /&gt;
Be cautious about your inventory while creating art, as picking up items while sitting at the easel and standing up will destroy the item, rendering it irretrievable.&lt;br /&gt;
&lt;br /&gt;
To view other players&#039; art, use the command &amp;lt;code&amp;gt;/artmap&amp;lt;/code&amp;gt; and access artworks. Click on player heads to explore their artwork.&lt;br /&gt;
&lt;br /&gt;
=== Cameras ===&lt;br /&gt;
A camera allows you to capture a still image of the world around you! All you have to do is point where you want to capture and interact with the item. Note that the cost of taking a picture is 1 paper, required to be in your inventory for the camera to work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
New Camera Recipe.png|The recipe to craft a camera, replace dye with any color.&lt;br /&gt;
Example Photograph.png|A beautiful architecture photo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:trades]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:New_Camera_Recipe.png&amp;diff=8864</id>
		<title>File:New Camera Recipe.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:New_Camera_Recipe.png&amp;diff=8864"/>
		<updated>2026-02-08T15:54:29Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: updated to new camera recipe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
updated to new camera recipe&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Camera_Recipe.png&amp;diff=8863</id>
		<title>File:Camera Recipe.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Camera_Recipe.png&amp;diff=8863"/>
		<updated>2026-02-08T15:50:47Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Aubunny uploaded a new version of File:Camera Recipe.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Recipe for the camera&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Jeweller&amp;diff=4177</id>
		<title>Jeweller</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Jeweller&amp;diff=4177"/>
		<updated>2025-06-01T01:46:48Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: added recipe examples to match the exam because it didnt for some reason (smiley face)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;jeweller&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Jeweller =&lt;br /&gt;
&lt;br /&gt;
As a Jeweller, you will be able to sell unique versions of precious metals and decorations for special occasions. You can then sell these goods to players.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;what-jewellers-do&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== What Jewellers Do ==&lt;br /&gt;
&lt;br /&gt;
Jewellers are skilled crafters when it comes to additional and decorative use for diamonds, gold, iron, and other ores. The following recipes can be exclusively crafted by a Jeweller:&lt;br /&gt;
&lt;br /&gt;
* 24 Carat Diamond Ring&lt;br /&gt;
* 14 Carat Diamond Ring&lt;br /&gt;
* 24 Carat Gold Ring&lt;br /&gt;
* 14 Carat Gold Ring&lt;br /&gt;
* 24 Carat Silver Ring&lt;br /&gt;
* 14 Carat Silver Ring&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can find the recipes for these in {{Code|/recipes}}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recipe Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Superior AA-Grade Amethyst Ring: Amethyst clusters, block, netherite ingots and tinted glass.&lt;br /&gt;
&lt;br /&gt;
14 carat Diamond Wedding Ring: 2 netherite ingots, 1 tinted glass, 1 amethyst cluster, 5 diamonds&lt;br /&gt;
&lt;br /&gt;
Snowglobe: 3 iron ingots, 5 tinted panes, 1 snowball&lt;br /&gt;
&lt;br /&gt;
== Passed the Exam? Now What? ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you purchase a plot and build a store, or rent a shop to sell your products in! Find available plots for sale/lease under #realty-adverts on our discord. As a Jeweller, you can also advertise your expertise in vehicles under #business-adverts.&lt;br /&gt;
[[File:Airport Monitor Options.png|thumb|455x455px]]&lt;br /&gt;
To gather resources, you can either buy them from player shops or obtain them yourself in the wild. To get to the wild, type &amp;lt;code&amp;gt;/warp airport&amp;lt;/code&amp;gt;. Right-click a monitor in the airport and choose out of 7 wild starting locations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
(Check &amp;lt;code&amp;gt;/map&amp;lt;/code&amp;gt; if you’re looking for a specific biome).&lt;br /&gt;
[[category:Professions]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Module:Portal&amp;diff=3733</id>
		<title>Module:Portal</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Module:Portal&amp;diff=3733"/>
		<updated>2025-05-24T00:44:36Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Portal Module Creation, copy pasted from wikipedia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- The portal image data is kept in submodules of [[Module:Portal/images]], listed below:&lt;br /&gt;
-- [[Module:Portal/images/a]]		- for portal names beginning with &amp;quot;A&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/b]]		- for portal names beginning with &amp;quot;B&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/c]]		- for portal names beginning with &amp;quot;C&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/d]]		- for portal names beginning with &amp;quot;D&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/e]]		- for portal names beginning with &amp;quot;E&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/f]]		- for portal names beginning with &amp;quot;F&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/g]]		- for portal names beginning with &amp;quot;G&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/h]]		- for portal names beginning with &amp;quot;H&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/i]]		- for portal names beginning with &amp;quot;I&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/j]]		- for portal names beginning with &amp;quot;J&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/k]]		- for portal names beginning with &amp;quot;K&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/l]]		- for portal names beginning with &amp;quot;L&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/m]]		- for portal names beginning with &amp;quot;M&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/n]]		- for portal names beginning with &amp;quot;N&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/o]]		- for portal names beginning with &amp;quot;O&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/p]]		- for portal names beginning with &amp;quot;P&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/q]]		- for portal names beginning with &amp;quot;Q&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/r]]		- for portal names beginning with &amp;quot;R&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/s]]		- for portal names beginning with &amp;quot;S&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/t]]		- for portal names beginning with &amp;quot;T&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/u]]		- for portal names beginning with &amp;quot;U&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/v]]		- for portal names beginning with &amp;quot;V&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/w]]		- for portal names beginning with &amp;quot;W&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/x]]		- for portal names beginning with &amp;quot;X&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/y]]		- for portal names beginning with &amp;quot;Y&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/z]]		- for portal names beginning with &amp;quot;Z&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/other]]	- for portal names beginning with any other letters. This includes numbers,&lt;br /&gt;
-- 									  letters with diacritics, and letters in non-Latin alphabets.&lt;br /&gt;
-- [[Module:Portal/images/aliases]]	- for adding aliases for existing portal names. Use this page for variations&lt;br /&gt;
-- 									  in spelling and diacritics, etc., no matter what letter the portal begins with.&lt;br /&gt;
--&lt;br /&gt;
-- The images data pages are separated by the first letter to reduce server load when images are added, changed, or removed.&lt;br /&gt;
-- Previously all the images were on one data page at [[Module:Portal/images]], but this had the disadvantage that all&lt;br /&gt;
-- 5,000,000 pages using this module needed to be refreshed every time an image was added or removed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- determine whether we&#039;re being called from a sandbox&lt;br /&gt;
local isSandbox = mw.getCurrentFrame():getTitle():find(&#039;sandbox&#039;, 1, true)&lt;br /&gt;
local sandbox = isSandbox and &#039;/sandbox&#039; or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
local function sandboxVersion(s)&lt;br /&gt;
	return isSandbox and s..&#039;-sand&#039; or s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local templatestyles = &#039;Module:Portal&#039;..sandbox..&#039;/styles.css&#039;&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- List of non-talk namespaces which should not be tracked (Talk pages are never tracked)&lt;br /&gt;
local badNamespaces = {&#039;user&#039;,&#039;template&#039;,&#039;draft&#039;,&#039;wikipedia&#039;}&lt;br /&gt;
&lt;br /&gt;
-- Check whether to do tracking in this namespace&lt;br /&gt;
-- Returns true unless the page is one of the banned namespaces&lt;br /&gt;
local function checkTracking(title)&lt;br /&gt;
	local thisPage = title or mw.title.getCurrentTitle()&lt;br /&gt;
	if thisPage.isTalkPage then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local ns = thisPage.nsText:lower()&lt;br /&gt;
	for _, v in ipairs(badNamespaces) do&lt;br /&gt;
		if ns == v then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchImagePage(s)&lt;br /&gt;
	-- Finds the appropriate image subpage given a lower-case&lt;br /&gt;
	-- portal name plus the first letter of that portal name.&lt;br /&gt;
	if type(s) ~= &#039;string&#039; or #s &amp;lt; 1 then return end&lt;br /&gt;
	local firstLetter = mw.ustring.sub(s, 1, 1)&lt;br /&gt;
	local imagePage&lt;br /&gt;
	if mw.ustring.find(firstLetter, &#039;^[a-z]&#039;) then&lt;br /&gt;
		imagePage = &#039;Module:Portal/images/&#039; .. firstLetter .. sandbox&lt;br /&gt;
	else&lt;br /&gt;
		imagePage = &#039;Module:Portal/images/other&#039; .. sandbox&lt;br /&gt;
	end&lt;br /&gt;
	return mw.loadData(imagePage)[s]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAlias(s)&lt;br /&gt;
	-- Gets an alias from the image alias data page.&lt;br /&gt;
	local aliasData = mw.loadData(&#039;Module:Portal/images/aliases&#039;..sandbox)&lt;br /&gt;
	for portal, aliases in pairs(aliasData) do&lt;br /&gt;
		for _, alias in ipairs(aliases) do&lt;br /&gt;
			if alias == s then&lt;br /&gt;
				return portal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local defaultImage = &#039;Portal-puzzle.svg|link=|alt=&#039;&lt;br /&gt;
&lt;br /&gt;
local function getImageName(s)&lt;br /&gt;
	-- Gets the image name for a given string.&lt;br /&gt;
	if type(s) ~= &#039;string&#039; or #s &amp;lt; 1 then&lt;br /&gt;
		return defaultImage&lt;br /&gt;
	end&lt;br /&gt;
	s = mw.ustring.lower(s)&lt;br /&gt;
	local image = matchImagePage(s) or matchImagePage(getAlias(s)) or defaultImage&lt;br /&gt;
	image = mw.ustring.gsub(image,&#039;^File:&#039;,&#039;&#039;) --- strip mistaken leading File: or Image:&lt;br /&gt;
	image = mw.ustring.gsub(image,&#039;^Image:&#039;,&#039;&#039;)&lt;br /&gt;
	return image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function exists(title) &lt;br /&gt;
	local success, exists = pcall(function() return title.exists end)&lt;br /&gt;
	-- If success = false, then we&#039;re out of expensive parser function calls and can&#039;t check whether it exists&lt;br /&gt;
	-- in that case, don&#039;t throw a Lua error&lt;br /&gt;
	return not success or exists&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
 -- Function to check argument portals for errors, generate tracking categories if needed&lt;br /&gt;
 --     Function first checks for too few/many portals provided&lt;br /&gt;
 --     Then checks the portal list to purge any portals that don&#039;t exist&lt;br /&gt;
 -- Arguments:&lt;br /&gt;
 --   portals: raw list of portals&lt;br /&gt;
 --   args.tracking: is tracking requested? (will not track on bad titles or namespaces)&lt;br /&gt;
 --   args.redlinks: should redlinks be displayed?&lt;br /&gt;
 --   args.minPortals: minimum number of portal arguments&lt;br /&gt;
 --   args.maxPortals: maximum number of portal arguments&lt;br /&gt;
 -- Returns:&lt;br /&gt;
 --   portals = list of portals, with redlinks purged (if args.redlinks=false)&lt;br /&gt;
 --   trackingCat = possible tracking category&lt;br /&gt;
 --   errorMsg = error message&lt;br /&gt;
function p._checkPortals(portals, args)&lt;br /&gt;
	local trackingCat = &#039;&#039;&lt;br /&gt;
	local errMsg = nil&lt;br /&gt;
	&lt;br /&gt;
	-- Tracking is on by default.&lt;br /&gt;
	-- It is disabled if any of the following is true&lt;br /&gt;
	-- 1/ the parameter &amp;quot;tracking&amp;quot; is set to &#039;no, &#039;n&#039;, or &#039;false&#039;&lt;br /&gt;
	-- 2/ the current page fails the namespace or pagename tests &lt;br /&gt;
	local trackingEnabled = args.tracking and checkTracking()&lt;br /&gt;
	&lt;br /&gt;
	args.minPortals = args.minPortals or 1&lt;br /&gt;
	args.maxPortals = args.maxPortals or -1&lt;br /&gt;
	-- check for too few portals&lt;br /&gt;
	if #portals &amp;lt; args.minPortals then&lt;br /&gt;
		errMsg = &#039;please specify at least &#039;..args.minPortals..&#039; portal&#039;..(args.minPortals &amp;gt; 1 and &#039;s&#039; or &#039;&#039;)&lt;br /&gt;
		trackingCat = (trackingEnabled and &#039;[[Category:Portal templates with too few portals]]&#039; or &#039;&#039;)&lt;br /&gt;
		return portals, trackingCat, errMsg&lt;br /&gt;
	end&lt;br /&gt;
	-- check for too many portals&lt;br /&gt;
	if args.maxPortals &amp;gt;= 0 and #portals &amp;gt; args.maxPortals then&lt;br /&gt;
		errMsg = &#039;too many portals (maximum = &#039;..args.maxPortals..&#039;)&#039;&lt;br /&gt;
		trackingCat = (trackingEnabled and &#039;[[Category:Portal templates with too many portals]]&#039; or &#039;&#039;)&lt;br /&gt;
		return portals, trackingCat, errMsg&lt;br /&gt;
	end&lt;br /&gt;
	if not args.redlinks or trackingEnabled then&lt;br /&gt;
		-- make new list of portals that exist&lt;br /&gt;
		local existingPortals = {}&lt;br /&gt;
		for _, portal in ipairs(portals) do&lt;br /&gt;
			local portalTitle = mw.title.new(portal,&amp;quot;Portal&amp;quot;)&lt;br /&gt;
			-- if portal exists, put it into list&lt;br /&gt;
			if portalTitle and exists(portalTitle) then&lt;br /&gt;
				table.insert(existingPortals,portal)&lt;br /&gt;
			-- otherwise set tracking cat&lt;br /&gt;
			elseif trackingEnabled then&lt;br /&gt;
				trackingCat = &amp;quot;[[Category:Portal templates with redlinked portals]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- If redlinks is off, use portal list purged of redlinks&lt;br /&gt;
		portals = args.redlinks and portals or existingPortals&lt;br /&gt;
		-- if nothing left after purge, set tracking cat&lt;br /&gt;
		if #portals == 0 and trackingEnabled then&lt;br /&gt;
			trackingCat = trackingCat..&amp;quot;[[Category:Pages with empty portal template]]&amp;quot; &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return portals, trackingCat, errMsg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function portalBox(args)&lt;br /&gt;
	return mw.html.create(&#039;ul&#039;)&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;navigation&#039;)&lt;br /&gt;
		:attr(&#039;aria-label&#039;, &#039;Portals&#039;)&lt;br /&gt;
		:addClass(&#039;noprint&#039;)&lt;br /&gt;
		:addClass(args.error and &#039;&#039; or sandboxVersion(&#039;portalbox&#039;))&lt;br /&gt;
		:addClass(args.border and sandboxVersion(&#039;portalborder&#039;) or &#039;&#039;)&lt;br /&gt;
		:addClass(sandboxVersion(args.left and &#039;portalleft&#039; or &#039;portalright&#039;))&lt;br /&gt;
		:css(&#039;margin&#039;, args.margin or nil)&lt;br /&gt;
		:newline()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fillBox(root, contents)&lt;br /&gt;
	for _, item in ipairs(contents) do&lt;br /&gt;
		local entry = root:tag(&#039;li&#039;)&lt;br /&gt;
		entry:addClass(sandboxVersion(&#039;portalbox-entry&#039;))&lt;br /&gt;
		local image = entry:tag(&#039;span&#039;)&lt;br /&gt;
		image:addClass(sandboxVersion(&#039;portalbox-image&#039;))&lt;br /&gt;
		image:wikitext(item[1])&lt;br /&gt;
		local link = entry:tag(&#039;span&#039;)&lt;br /&gt;
		link:addClass(sandboxVersion(&#039;portalbox-link&#039;))&lt;br /&gt;
		link:wikitext(item[2])&lt;br /&gt;
	end&lt;br /&gt;
	return root&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._portal(portals, args)&lt;br /&gt;
	-- This function builds the portal box used by the {{portal}} template.&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize all arguments&lt;br /&gt;
	if args.redlinks == &#039;include&#039; then args.redlinks = true end&lt;br /&gt;
	args.addBreak = args[&#039;break&#039;]&lt;br /&gt;
	for key, default in pairs({left=false,tracking=true,nominimum=false,&lt;br /&gt;
		                       redlinks=false,addBreak=false,border=true}) do&lt;br /&gt;
		if args[key] == nil then args[key] = default end&lt;br /&gt;
		args[key] = yesno(args[key], default)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local root = portalBox(args)&lt;br /&gt;
&lt;br /&gt;
	local trackingCat = &#039;&#039;&lt;br /&gt;
	local errMsg = nil&lt;br /&gt;
	args.minPortals = args.nominimum and 0 or 1&lt;br /&gt;
	args.maxPortals = -1&lt;br /&gt;
	portals, trackingCat, errMsg = p._checkPortals(portals, args)&lt;br /&gt;
	root:wikitext(trackingCat)&lt;br /&gt;
	-- if error message, put it in the box and return&lt;br /&gt;
	if errMsg then&lt;br /&gt;
		if args.border then -- suppress error message when border=no&lt;br /&gt;
			args.error = true  -- recreate box without fancy formatting&lt;br /&gt;
			root = portalBox(args)&lt;br /&gt;
			root:wikitext(trackingCat)&lt;br /&gt;
			local errTag = root:tag(&#039;strong&#039;)&lt;br /&gt;
			errTag:addClass(&#039;error&#039;)&lt;br /&gt;
			errTag:css(&#039;padding&#039;,&#039;0.2em&#039;)&lt;br /&gt;
			errTag:wikitext(&#039;Error: &#039;..errMsg)&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(root)&lt;br /&gt;
	end&lt;br /&gt;
	-- if no portals (and no error), just return tracking category&lt;br /&gt;
	if #portals == 0 then&lt;br /&gt;
		return trackingCat&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local contents = {}&lt;br /&gt;
	-- Display the portals specified in the positional arguments.&lt;br /&gt;
	local defaultUsed = nil&lt;br /&gt;
	for _, portal in ipairs(portals) do&lt;br /&gt;
		local portalImage = getImageName(portal)&lt;br /&gt;
		if portalImage == defaultImage then&lt;br /&gt;
			defaultUsed = portal&lt;br /&gt;
		end&lt;br /&gt;
		local image = string.format(&#039;[[File:%s|32x28px|class=noviewer]]&#039;,&lt;br /&gt;
			portalImage)&lt;br /&gt;
		local link = string.format(&#039;[[Portal:%s|%s%sportal]]&#039;,&lt;br /&gt;
			portal, portal, args.addBreak and &#039;&amp;lt;br /&amp;gt;&#039; or &#039; &#039;)&lt;br /&gt;
		table.insert(contents, {image, link})&lt;br /&gt;
	end&lt;br /&gt;
	if defaultUsed and args.tracking and checkTracking() then&lt;br /&gt;
		local cat = string.format(&#039;[[Category:Portal templates with default image|%s]]&#039;,&lt;br /&gt;
			                      defaultUsed)&lt;br /&gt;
		root:wikitext(cat)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(fillBox(root, contents))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._demo(imageList, args)&lt;br /&gt;
	for key, default in pairs({left=false,border=true}) do&lt;br /&gt;
		if args[key] == nil then args[key] = default end&lt;br /&gt;
		args[key] = yesno(args[key], default)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local root = portalBox(args)&lt;br /&gt;
&lt;br /&gt;
	local contents = {}&lt;br /&gt;
	-- Display the portals specified in the positional arguments.&lt;br /&gt;
	for _, fn in ipairs(imageList) do&lt;br /&gt;
		local image = string.format(&#039;[[File:%s|32x28px|class=noviewer]]&#039;,fn)&lt;br /&gt;
		local link = string.format(&#039;[[:File:%s|%s]]&#039;,fn,fn)&lt;br /&gt;
		table.insert(contents,{image,link})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(fillBox(root,contents))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._image(portal,keep)&lt;br /&gt;
	-- Wrapper function to allow getImageName() to be accessed through #invoke.&lt;br /&gt;
	-- backward compatibility: if table passed, take first element&lt;br /&gt;
	if type(portal) == &#039;table&#039; then&lt;br /&gt;
		portal = portal[1]&lt;br /&gt;
	end&lt;br /&gt;
	local name = getImageName(portal)&lt;br /&gt;
	-- If keep is yes (or equivalent), then allow all metadata (like image borders) to be returned&lt;br /&gt;
	local keepargs = yesno(keep)&lt;br /&gt;
	local args = mw.text.split(name, &amp;quot;|&amp;quot;, true)&lt;br /&gt;
	local result = {args[1]}  -- the filename always comes first&lt;br /&gt;
	local category = &#039;&#039;&lt;br /&gt;
	-- parse name, looking for category arguments&lt;br /&gt;
	for i = 2,#args do&lt;br /&gt;
		local m = mw.ustring.match(args[i],  &amp;quot;^%s*category%s*=&amp;quot;)&lt;br /&gt;
		if keepargs or m then&lt;br /&gt;
			table.insert(result, args[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- reassemble arguments&lt;br /&gt;
	return table.concat(result,&amp;quot;|&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function getAllImageTable()&lt;br /&gt;
	-- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData.&lt;br /&gt;
	local images = {}&lt;br /&gt;
	for i, subpage in ipairs{&#039;a&#039;, &#039;b&#039;, &#039;c&#039;, &#039;d&#039;, &#039;e&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;i&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, &#039;m&#039;, &#039;n&#039;, &#039;o&#039;, &#039;p&#039;, &#039;q&#039;, &#039;r&#039;, &#039;s&#039;, &#039;t&#039;, &#039;u&#039;, &#039;v&#039;, &#039;w&#039;, &#039;x&#039;, &#039;y&#039;, &#039;z&#039;, &#039;other&#039;} do&lt;br /&gt;
		local imageTable = mw.loadData(&#039;Module:Portal/images/&#039; .. subpage .. sandbox)&lt;br /&gt;
		for portal, image in pairs(imageTable) do&lt;br /&gt;
			local args = mw.text.split(image,&amp;quot;|&amp;quot;)&lt;br /&gt;
			images[portal] = args[1] -- just use image filename&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return images&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._displayAll(portals, args)&lt;br /&gt;
	-- This function displays all portals that have portal images. This function is for maintenance purposes and should not be used in&lt;br /&gt;
	-- articles, for two reasons: 1) there are over 1500 portals with portal images, and 2) the module doesn&#039;t record how the portal&lt;br /&gt;
	-- names are capitalized, so the portal links may be broken.&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	portals = portals or {}&lt;br /&gt;
	for portal in pairs(getAllImageTable()) do&lt;br /&gt;
		table.insert(portals,lang:ucfirst(portal))&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(portals)&lt;br /&gt;
	args.redlinks = args.redlinks or &amp;quot;yes&amp;quot;&lt;br /&gt;
	return p._portal(portals, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._imageDupes()&lt;br /&gt;
	-- This function searches the image subpages to find duplicate images. If duplicate images exist, it is not necessarily a bad thing,&lt;br /&gt;
	-- as different portals might just happen to choose the same image. However, this function is helpful in identifying images that&lt;br /&gt;
	-- should be moved to a portal alias for ease of maintenance.&lt;br /&gt;
	local exists, dupes = {}, {}&lt;br /&gt;
	for portal, image in pairs(getAllImageTable()) do&lt;br /&gt;
		if not exists[image] then&lt;br /&gt;
			exists[image] = portal&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(dupes, string.format(&#039;The image &amp;quot;[[:File:%s|%s]]&amp;quot; is used for both portals &amp;quot;%s&amp;quot; and &amp;quot;%s&amp;quot;.&#039;, image, image, exists[image], portal))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #dupes &amp;lt; 1 then&lt;br /&gt;
		return &#039;No duplicate images found.&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;The following duplicate images were found:\n* &#039; .. table.concat(dupes, &#039;\n* &#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processPortalArgs(args)&lt;br /&gt;
	-- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of&lt;br /&gt;
	-- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order&lt;br /&gt;
	-- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example&lt;br /&gt;
	-- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed.&lt;br /&gt;
	args = type(args) == &#039;table&#039; and args or {}&lt;br /&gt;
	local portals = {}&lt;br /&gt;
	local namedArgs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; and type(v) == &#039;string&#039; then -- Make sure we have no non-string portal names.&lt;br /&gt;
			table.insert(portals, k)&lt;br /&gt;
		elseif type(k) ~= &#039;number&#039; then&lt;br /&gt;
			namedArgs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(portals)&lt;br /&gt;
	for i, v in ipairs(portals) do&lt;br /&gt;
		portals[i] = args[v]&lt;br /&gt;
	end&lt;br /&gt;
	return portals, namedArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Entry point for sorting portals from other named arguments&lt;br /&gt;
function p._processPortalArgs(args)&lt;br /&gt;
	return processPortalArgs(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.image(frame)&lt;br /&gt;
	local origArgs = getArgs(frame)&lt;br /&gt;
	local portals, args = processPortalArgs(origArgs)&lt;br /&gt;
	return p._image(portals[1],args.border)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.demo(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local styles = frame:extensionTag{ name = &#039;templatestyles&#039;, args = { src = templatestyles} }&lt;br /&gt;
	return styles..p._demo(args,args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWrapper(funcName)&lt;br /&gt;
	-- Processes external arguments and sends them to the other functions.&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		-- If called via #invoke, use the args passed into the invoking&lt;br /&gt;
		-- template, or the args passed to #invoke if any exist. Otherwise&lt;br /&gt;
		-- assume args are being passed directly in from the debug console&lt;br /&gt;
		-- or from another Lua module. &lt;br /&gt;
		-- Also: trim whitespace and remove blank arguments&lt;br /&gt;
		local origArgs = getArgs(frame)&lt;br /&gt;
		-- create two tables to pass to func: an array of portal names, and a table of named arguments.&lt;br /&gt;
		local portals, args = processPortalArgs(origArgs)&lt;br /&gt;
		local results = &#039;&#039;&lt;br /&gt;
		if funcName == &#039;_portal&#039; or funcName == &#039;_displayAll&#039; then&lt;br /&gt;
			results = frame:extensionTag{ name = &#039;templatestyles&#039;, args = { src = templatestyles} }&lt;br /&gt;
		end&lt;br /&gt;
		return results .. p[funcName](portals, args) &lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for _, funcName in ipairs{&#039;portal&#039;, &#039;imageDupes&#039;, &#039;displayAll&#039;} do&lt;br /&gt;
	p[funcName] = makeWrapper(&#039;_&#039; .. funcName)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Module:Portals&amp;diff=3732</id>
		<title>Module:Portals</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Module:Portals&amp;diff=3732"/>
		<updated>2025-05-24T00:42:50Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Portals Module Creation, copy pasted from wikipedia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- The portal image data is kept in submodules of [[Module:Portal/images]], listed below:&lt;br /&gt;
-- [[Module:Portal/images/a]]		- for portal names beginning with &amp;quot;A&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/b]]		- for portal names beginning with &amp;quot;B&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/c]]		- for portal names beginning with &amp;quot;C&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/d]]		- for portal names beginning with &amp;quot;D&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/e]]		- for portal names beginning with &amp;quot;E&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/f]]		- for portal names beginning with &amp;quot;F&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/g]]		- for portal names beginning with &amp;quot;G&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/h]]		- for portal names beginning with &amp;quot;H&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/i]]		- for portal names beginning with &amp;quot;I&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/j]]		- for portal names beginning with &amp;quot;J&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/k]]		- for portal names beginning with &amp;quot;K&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/l]]		- for portal names beginning with &amp;quot;L&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/m]]		- for portal names beginning with &amp;quot;M&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/n]]		- for portal names beginning with &amp;quot;N&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/o]]		- for portal names beginning with &amp;quot;O&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/p]]		- for portal names beginning with &amp;quot;P&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/q]]		- for portal names beginning with &amp;quot;Q&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/r]]		- for portal names beginning with &amp;quot;R&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/s]]		- for portal names beginning with &amp;quot;S&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/t]]		- for portal names beginning with &amp;quot;T&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/u]]		- for portal names beginning with &amp;quot;U&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/v]]		- for portal names beginning with &amp;quot;V&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/w]]		- for portal names beginning with &amp;quot;W&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/x]]		- for portal names beginning with &amp;quot;X&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/y]]		- for portal names beginning with &amp;quot;Y&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/z]]		- for portal names beginning with &amp;quot;Z&amp;quot;.&lt;br /&gt;
-- [[Module:Portal/images/other]]	- for portal names beginning with any other letters. This includes numbers,&lt;br /&gt;
-- 									  letters with diacritics, and letters in non-Latin alphabets.&lt;br /&gt;
-- [[Module:Portal/images/aliases]]	- for adding aliases for existing portal names. Use this page for variations&lt;br /&gt;
-- 									  in spelling and diacritics, etc., no matter what letter the portal begins with.&lt;br /&gt;
--&lt;br /&gt;
-- The images data pages are separated by the first letter to reduce server load when images are added, changed, or removed.&lt;br /&gt;
-- Previously all the images were on one data page at [[Module:Portal/images]], but this had the disadvantage that all&lt;br /&gt;
-- 5,000,000 pages using this module needed to be refreshed every time an image was added or removed.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- determine whether we&#039;re being called from a sandbox&lt;br /&gt;
local isSandbox = mw.getCurrentFrame():getTitle():find(&#039;sandbox&#039;, 1, true)&lt;br /&gt;
local sandbox = isSandbox and &#039;/sandbox&#039; or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
local function sandboxVersion(s)&lt;br /&gt;
	return isSandbox and s..&#039;-sand&#039; or s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local templatestyles = &#039;Module:Portal&#039;..sandbox..&#039;/styles.css&#039;&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- List of non-talk namespaces which should not be tracked (Talk pages are never tracked)&lt;br /&gt;
local badNamespaces = {&#039;user&#039;,&#039;template&#039;,&#039;draft&#039;,&#039;wikipedia&#039;}&lt;br /&gt;
&lt;br /&gt;
-- Check whether to do tracking in this namespace&lt;br /&gt;
-- Returns true unless the page is one of the banned namespaces&lt;br /&gt;
local function checkTracking(title)&lt;br /&gt;
	local thisPage = title or mw.title.getCurrentTitle()&lt;br /&gt;
	if thisPage.isTalkPage then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local ns = thisPage.nsText:lower()&lt;br /&gt;
	for _, v in ipairs(badNamespaces) do&lt;br /&gt;
		if ns == v then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchImagePage(s)&lt;br /&gt;
	-- Finds the appropriate image subpage given a lower-case&lt;br /&gt;
	-- portal name plus the first letter of that portal name.&lt;br /&gt;
	if type(s) ~= &#039;string&#039; or #s &amp;lt; 1 then return end&lt;br /&gt;
	local firstLetter = mw.ustring.sub(s, 1, 1)&lt;br /&gt;
	local imagePage&lt;br /&gt;
	if mw.ustring.find(firstLetter, &#039;^[a-z]&#039;) then&lt;br /&gt;
		imagePage = &#039;Module:Portal/images/&#039; .. firstLetter .. sandbox&lt;br /&gt;
	else&lt;br /&gt;
		imagePage = &#039;Module:Portal/images/other&#039; .. sandbox&lt;br /&gt;
	end&lt;br /&gt;
	return mw.loadData(imagePage)[s]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAlias(s)&lt;br /&gt;
	-- Gets an alias from the image alias data page.&lt;br /&gt;
	local aliasData = mw.loadData(&#039;Module:Portal/images/aliases&#039;..sandbox)&lt;br /&gt;
	for portal, aliases in pairs(aliasData) do&lt;br /&gt;
		for _, alias in ipairs(aliases) do&lt;br /&gt;
			if alias == s then&lt;br /&gt;
				return portal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local defaultImage = &#039;Portal-puzzle.svg|link=|alt=&#039;&lt;br /&gt;
&lt;br /&gt;
local function getImageName(s)&lt;br /&gt;
	-- Gets the image name for a given string.&lt;br /&gt;
	if type(s) ~= &#039;string&#039; or #s &amp;lt; 1 then&lt;br /&gt;
		return defaultImage&lt;br /&gt;
	end&lt;br /&gt;
	s = mw.ustring.lower(s)&lt;br /&gt;
	local image = matchImagePage(s) or matchImagePage(getAlias(s)) or defaultImage&lt;br /&gt;
	image = mw.ustring.gsub(image,&#039;^File:&#039;,&#039;&#039;) --- strip mistaken leading File: or Image:&lt;br /&gt;
	image = mw.ustring.gsub(image,&#039;^Image:&#039;,&#039;&#039;)&lt;br /&gt;
	return image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function exists(title) &lt;br /&gt;
	local success, exists = pcall(function() return title.exists end)&lt;br /&gt;
	-- If success = false, then we&#039;re out of expensive parser function calls and can&#039;t check whether it exists&lt;br /&gt;
	-- in that case, don&#039;t throw a Lua error&lt;br /&gt;
	return not success or exists&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
 -- Function to check argument portals for errors, generate tracking categories if needed&lt;br /&gt;
 --     Function first checks for too few/many portals provided&lt;br /&gt;
 --     Then checks the portal list to purge any portals that don&#039;t exist&lt;br /&gt;
 -- Arguments:&lt;br /&gt;
 --   portals: raw list of portals&lt;br /&gt;
 --   args.tracking: is tracking requested? (will not track on bad titles or namespaces)&lt;br /&gt;
 --   args.redlinks: should redlinks be displayed?&lt;br /&gt;
 --   args.minPortals: minimum number of portal arguments&lt;br /&gt;
 --   args.maxPortals: maximum number of portal arguments&lt;br /&gt;
 -- Returns:&lt;br /&gt;
 --   portals = list of portals, with redlinks purged (if args.redlinks=false)&lt;br /&gt;
 --   trackingCat = possible tracking category&lt;br /&gt;
 --   errorMsg = error message&lt;br /&gt;
function p._checkPortals(portals, args)&lt;br /&gt;
	local trackingCat = &#039;&#039;&lt;br /&gt;
	local errMsg = nil&lt;br /&gt;
	&lt;br /&gt;
	-- Tracking is on by default.&lt;br /&gt;
	-- It is disabled if any of the following is true&lt;br /&gt;
	-- 1/ the parameter &amp;quot;tracking&amp;quot; is set to &#039;no, &#039;n&#039;, or &#039;false&#039;&lt;br /&gt;
	-- 2/ the current page fails the namespace or pagename tests &lt;br /&gt;
	local trackingEnabled = args.tracking and checkTracking()&lt;br /&gt;
	&lt;br /&gt;
	args.minPortals = args.minPortals or 1&lt;br /&gt;
	args.maxPortals = args.maxPortals or -1&lt;br /&gt;
	-- check for too few portals&lt;br /&gt;
	if #portals &amp;lt; args.minPortals then&lt;br /&gt;
		errMsg = &#039;please specify at least &#039;..args.minPortals..&#039; portal&#039;..(args.minPortals &amp;gt; 1 and &#039;s&#039; or &#039;&#039;)&lt;br /&gt;
		trackingCat = (trackingEnabled and &#039;[[Category:Portal templates with too few portals]]&#039; or &#039;&#039;)&lt;br /&gt;
		return portals, trackingCat, errMsg&lt;br /&gt;
	end&lt;br /&gt;
	-- check for too many portals&lt;br /&gt;
	if args.maxPortals &amp;gt;= 0 and #portals &amp;gt; args.maxPortals then&lt;br /&gt;
		errMsg = &#039;too many portals (maximum = &#039;..args.maxPortals..&#039;)&#039;&lt;br /&gt;
		trackingCat = (trackingEnabled and &#039;[[Category:Portal templates with too many portals]]&#039; or &#039;&#039;)&lt;br /&gt;
		return portals, trackingCat, errMsg&lt;br /&gt;
	end&lt;br /&gt;
	if not args.redlinks or trackingEnabled then&lt;br /&gt;
		-- make new list of portals that exist&lt;br /&gt;
		local existingPortals = {}&lt;br /&gt;
		for _, portal in ipairs(portals) do&lt;br /&gt;
			local portalTitle = mw.title.new(portal,&amp;quot;Portal&amp;quot;)&lt;br /&gt;
			-- if portal exists, put it into list&lt;br /&gt;
			if portalTitle and exists(portalTitle) then&lt;br /&gt;
				table.insert(existingPortals,portal)&lt;br /&gt;
			-- otherwise set tracking cat&lt;br /&gt;
			elseif trackingEnabled then&lt;br /&gt;
				trackingCat = &amp;quot;[[Category:Portal templates with redlinked portals]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- If redlinks is off, use portal list purged of redlinks&lt;br /&gt;
		portals = args.redlinks and portals or existingPortals&lt;br /&gt;
		-- if nothing left after purge, set tracking cat&lt;br /&gt;
		if #portals == 0 and trackingEnabled then&lt;br /&gt;
			trackingCat = trackingCat..&amp;quot;[[Category:Pages with empty portal template]]&amp;quot; &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return portals, trackingCat, errMsg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function portalBox(args)&lt;br /&gt;
	return mw.html.create(&#039;ul&#039;)&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;navigation&#039;)&lt;br /&gt;
		:attr(&#039;aria-label&#039;, &#039;Portals&#039;)&lt;br /&gt;
		:addClass(&#039;noprint&#039;)&lt;br /&gt;
		:addClass(args.error and &#039;&#039; or sandboxVersion(&#039;portalbox&#039;))&lt;br /&gt;
		:addClass(args.border and sandboxVersion(&#039;portalborder&#039;) or &#039;&#039;)&lt;br /&gt;
		:addClass(sandboxVersion(args.left and &#039;portalleft&#039; or &#039;portalright&#039;))&lt;br /&gt;
		:css(&#039;margin&#039;, args.margin or nil)&lt;br /&gt;
		:newline()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fillBox(root, contents)&lt;br /&gt;
	for _, item in ipairs(contents) do&lt;br /&gt;
		local entry = root:tag(&#039;li&#039;)&lt;br /&gt;
		entry:addClass(sandboxVersion(&#039;portalbox-entry&#039;))&lt;br /&gt;
		local image = entry:tag(&#039;span&#039;)&lt;br /&gt;
		image:addClass(sandboxVersion(&#039;portalbox-image&#039;))&lt;br /&gt;
		image:wikitext(item[1])&lt;br /&gt;
		local link = entry:tag(&#039;span&#039;)&lt;br /&gt;
		link:addClass(sandboxVersion(&#039;portalbox-link&#039;))&lt;br /&gt;
		link:wikitext(item[2])&lt;br /&gt;
	end&lt;br /&gt;
	return root&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._portal(portals, args)&lt;br /&gt;
	-- This function builds the portal box used by the {{portal}} template.&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize all arguments&lt;br /&gt;
	if args.redlinks == &#039;include&#039; then args.redlinks = true end&lt;br /&gt;
	args.addBreak = args[&#039;break&#039;]&lt;br /&gt;
	for key, default in pairs({left=false,tracking=true,nominimum=false,&lt;br /&gt;
		                       redlinks=false,addBreak=false,border=true}) do&lt;br /&gt;
		if args[key] == nil then args[key] = default end&lt;br /&gt;
		args[key] = yesno(args[key], default)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local root = portalBox(args)&lt;br /&gt;
&lt;br /&gt;
	local trackingCat = &#039;&#039;&lt;br /&gt;
	local errMsg = nil&lt;br /&gt;
	args.minPortals = args.nominimum and 0 or 1&lt;br /&gt;
	args.maxPortals = -1&lt;br /&gt;
	portals, trackingCat, errMsg = p._checkPortals(portals, args)&lt;br /&gt;
	root:wikitext(trackingCat)&lt;br /&gt;
	-- if error message, put it in the box and return&lt;br /&gt;
	if errMsg then&lt;br /&gt;
		if args.border then -- suppress error message when border=no&lt;br /&gt;
			args.error = true  -- recreate box without fancy formatting&lt;br /&gt;
			root = portalBox(args)&lt;br /&gt;
			root:wikitext(trackingCat)&lt;br /&gt;
			local errTag = root:tag(&#039;strong&#039;)&lt;br /&gt;
			errTag:addClass(&#039;error&#039;)&lt;br /&gt;
			errTag:css(&#039;padding&#039;,&#039;0.2em&#039;)&lt;br /&gt;
			errTag:wikitext(&#039;Error: &#039;..errMsg)&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(root)&lt;br /&gt;
	end&lt;br /&gt;
	-- if no portals (and no error), just return tracking category&lt;br /&gt;
	if #portals == 0 then&lt;br /&gt;
		return trackingCat&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local contents = {}&lt;br /&gt;
	-- Display the portals specified in the positional arguments.&lt;br /&gt;
	local defaultUsed = nil&lt;br /&gt;
	for _, portal in ipairs(portals) do&lt;br /&gt;
		local portalImage = getImageName(portal)&lt;br /&gt;
		if portalImage == defaultImage then&lt;br /&gt;
			defaultUsed = portal&lt;br /&gt;
		end&lt;br /&gt;
		local image = string.format(&#039;[[File:%s|32x28px|class=noviewer]]&#039;,&lt;br /&gt;
			portalImage)&lt;br /&gt;
		local link = string.format(&#039;[[Portal:%s|%s%sportal]]&#039;,&lt;br /&gt;
			portal, portal, args.addBreak and &#039;&amp;lt;br /&amp;gt;&#039; or &#039; &#039;)&lt;br /&gt;
		table.insert(contents, {image, link})&lt;br /&gt;
	end&lt;br /&gt;
	if defaultUsed and args.tracking and checkTracking() then&lt;br /&gt;
		local cat = string.format(&#039;[[Category:Portal templates with default image|%s]]&#039;,&lt;br /&gt;
			                      defaultUsed)&lt;br /&gt;
		root:wikitext(cat)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(fillBox(root, contents))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._demo(imageList, args)&lt;br /&gt;
	for key, default in pairs({left=false,border=true}) do&lt;br /&gt;
		if args[key] == nil then args[key] = default end&lt;br /&gt;
		args[key] = yesno(args[key], default)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local root = portalBox(args)&lt;br /&gt;
&lt;br /&gt;
	local contents = {}&lt;br /&gt;
	-- Display the portals specified in the positional arguments.&lt;br /&gt;
	for _, fn in ipairs(imageList) do&lt;br /&gt;
		local image = string.format(&#039;[[File:%s|32x28px|class=noviewer]]&#039;,fn)&lt;br /&gt;
		local link = string.format(&#039;[[:File:%s|%s]]&#039;,fn,fn)&lt;br /&gt;
		table.insert(contents,{image,link})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(fillBox(root,contents))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._image(portal,keep)&lt;br /&gt;
	-- Wrapper function to allow getImageName() to be accessed through #invoke.&lt;br /&gt;
	-- backward compatibility: if table passed, take first element&lt;br /&gt;
	if type(portal) == &#039;table&#039; then&lt;br /&gt;
		portal = portal[1]&lt;br /&gt;
	end&lt;br /&gt;
	local name = getImageName(portal)&lt;br /&gt;
	-- If keep is yes (or equivalent), then allow all metadata (like image borders) to be returned&lt;br /&gt;
	local keepargs = yesno(keep)&lt;br /&gt;
	local args = mw.text.split(name, &amp;quot;|&amp;quot;, true)&lt;br /&gt;
	local result = {args[1]}  -- the filename always comes first&lt;br /&gt;
	local category = &#039;&#039;&lt;br /&gt;
	-- parse name, looking for category arguments&lt;br /&gt;
	for i = 2,#args do&lt;br /&gt;
		local m = mw.ustring.match(args[i],  &amp;quot;^%s*category%s*=&amp;quot;)&lt;br /&gt;
		if keepargs or m then&lt;br /&gt;
			table.insert(result, args[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- reassemble arguments&lt;br /&gt;
	return table.concat(result,&amp;quot;|&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function getAllImageTable()&lt;br /&gt;
	-- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData.&lt;br /&gt;
	local images = {}&lt;br /&gt;
	for i, subpage in ipairs{&#039;a&#039;, &#039;b&#039;, &#039;c&#039;, &#039;d&#039;, &#039;e&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;i&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, &#039;m&#039;, &#039;n&#039;, &#039;o&#039;, &#039;p&#039;, &#039;q&#039;, &#039;r&#039;, &#039;s&#039;, &#039;t&#039;, &#039;u&#039;, &#039;v&#039;, &#039;w&#039;, &#039;x&#039;, &#039;y&#039;, &#039;z&#039;, &#039;other&#039;} do&lt;br /&gt;
		local imageTable = mw.loadData(&#039;Module:Portal/images/&#039; .. subpage .. sandbox)&lt;br /&gt;
		for portal, image in pairs(imageTable) do&lt;br /&gt;
			local args = mw.text.split(image,&amp;quot;|&amp;quot;)&lt;br /&gt;
			images[portal] = args[1] -- just use image filename&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return images&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._displayAll(portals, args)&lt;br /&gt;
	-- This function displays all portals that have portal images. This function is for maintenance purposes and should not be used in&lt;br /&gt;
	-- articles, for two reasons: 1) there are over 1500 portals with portal images, and 2) the module doesn&#039;t record how the portal&lt;br /&gt;
	-- names are capitalized, so the portal links may be broken.&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	portals = portals or {}&lt;br /&gt;
	for portal in pairs(getAllImageTable()) do&lt;br /&gt;
		table.insert(portals,lang:ucfirst(portal))&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(portals)&lt;br /&gt;
	args.redlinks = args.redlinks or &amp;quot;yes&amp;quot;&lt;br /&gt;
	return p._portal(portals, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._imageDupes()&lt;br /&gt;
	-- This function searches the image subpages to find duplicate images. If duplicate images exist, it is not necessarily a bad thing,&lt;br /&gt;
	-- as different portals might just happen to choose the same image. However, this function is helpful in identifying images that&lt;br /&gt;
	-- should be moved to a portal alias for ease of maintenance.&lt;br /&gt;
	local exists, dupes = {}, {}&lt;br /&gt;
	for portal, image in pairs(getAllImageTable()) do&lt;br /&gt;
		if not exists[image] then&lt;br /&gt;
			exists[image] = portal&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(dupes, string.format(&#039;The image &amp;quot;[[:File:%s|%s]]&amp;quot; is used for both portals &amp;quot;%s&amp;quot; and &amp;quot;%s&amp;quot;.&#039;, image, image, exists[image], portal))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #dupes &amp;lt; 1 then&lt;br /&gt;
		return &#039;No duplicate images found.&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;The following duplicate images were found:\n* &#039; .. table.concat(dupes, &#039;\n* &#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processPortalArgs(args)&lt;br /&gt;
	-- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of&lt;br /&gt;
	-- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order&lt;br /&gt;
	-- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example&lt;br /&gt;
	-- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed.&lt;br /&gt;
	args = type(args) == &#039;table&#039; and args or {}&lt;br /&gt;
	local portals = {}&lt;br /&gt;
	local namedArgs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; and type(v) == &#039;string&#039; then -- Make sure we have no non-string portal names.&lt;br /&gt;
			table.insert(portals, k)&lt;br /&gt;
		elseif type(k) ~= &#039;number&#039; then&lt;br /&gt;
			namedArgs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(portals)&lt;br /&gt;
	for i, v in ipairs(portals) do&lt;br /&gt;
		portals[i] = args[v]&lt;br /&gt;
	end&lt;br /&gt;
	return portals, namedArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Entry point for sorting portals from other named arguments&lt;br /&gt;
function p._processPortalArgs(args)&lt;br /&gt;
	return processPortalArgs(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.image(frame)&lt;br /&gt;
	local origArgs = getArgs(frame)&lt;br /&gt;
	local portals, args = processPortalArgs(origArgs)&lt;br /&gt;
	return p._image(portals[1],args.border)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.demo(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local styles = frame:extensionTag{ name = &#039;templatestyles&#039;, args = { src = templatestyles} }&lt;br /&gt;
	return styles..p._demo(args,args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWrapper(funcName)&lt;br /&gt;
	-- Processes external arguments and sends them to the other functions.&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		-- If called via #invoke, use the args passed into the invoking&lt;br /&gt;
		-- template, or the args passed to #invoke if any exist. Otherwise&lt;br /&gt;
		-- assume args are being passed directly in from the debug console&lt;br /&gt;
		-- or from another Lua module. &lt;br /&gt;
		-- Also: trim whitespace and remove blank arguments&lt;br /&gt;
		local origArgs = getArgs(frame)&lt;br /&gt;
		-- create two tables to pass to func: an array of portal names, and a table of named arguments.&lt;br /&gt;
		local portals, args = processPortalArgs(origArgs)&lt;br /&gt;
		local results = &#039;&#039;&lt;br /&gt;
		if funcName == &#039;_portal&#039; or funcName == &#039;_displayAll&#039; then&lt;br /&gt;
			results = frame:extensionTag{ name = &#039;templatestyles&#039;, args = { src = templatestyles} }&lt;br /&gt;
		end&lt;br /&gt;
		return results .. p[funcName](portals, args) &lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for _, funcName in ipairs{&#039;portal&#039;, &#039;imageDupes&#039;, &#039;displayAll&#039;} do&lt;br /&gt;
	p[funcName] = makeWrapper(&#039;_&#039; .. funcName)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Template:Portal&amp;diff=3731</id>
		<title>Template:Portal</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Template:Portal&amp;diff=3731"/>
		<updated>2025-05-24T00:30:50Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Portal template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{type|}}} | module ||&amp;lt;!-- section not transcluded if type = module --&amp;gt;&lt;br /&gt;
{{documentation subpage}}&lt;br /&gt;
&amp;lt;!---PLEASE ADD METADATA TO THE &amp;lt;includeonly&amp;gt; SECTION AT THE BOTTOM OF THIS PAGE.---&amp;gt;&lt;br /&gt;
This {{{type|template}}} produces a box with links to a [[Portal:Contents/Portals|portal]] or to multiple portals. It is most often used in the &amp;quot;See also&amp;quot; section of an article. &#039;&#039;&#039;If a portal does not exist, then it will not be displayed&#039;&#039;&#039;. As of December 11, 2021 (UTC), this portal template is now mobile-friendly, meaning that the portal links will appear on mobile devices.&lt;br /&gt;
}}&amp;lt;!-- end of section not transcluded if type = module --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Basic usage&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:auto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;amp;#123;&amp;amp;#123;{{#ifeq: {{{type|}}} | module | &amp;amp;#35;invoke:Portal&amp;amp;#124;portal | Portal }} |&#039;&#039;Portal 1&#039;&#039; |&#039;&#039;Portal 2&#039;&#039; |&#039;&#039;Portal 3&#039;&#039; |... &amp;amp;#125;&amp;amp;#125;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
Within articles, {{#ifeq: {{{type|}}} | module | the output of the portal function | this template }} is meant to be placed at the top of the article&#039;s &#039;&#039;See also&#039;&#039; section. If there is no &#039;&#039;See also&#039;&#039; section, you may put it in the &#039;&#039;External links&#039;&#039; section instead; there is no need to create a new section just to house this template. If there is no &#039;&#039;External links&#039;&#039; section either, just put it below the article text in the place that seems most appropriate.&lt;br /&gt;
&lt;br /&gt;
There are no particular rules about the placement of portals on other kinds of pages.&lt;br /&gt;
&lt;br /&gt;
== Image ==&lt;br /&gt;
The portal image names are stored in subpages of [[Module:Portal/images]], organised by the first letter of the portal name. For example, the first letter of [[Portal:Feminism]] is &amp;quot;F&amp;quot;, so the image name is stored at [[Module:Portal/images/f]]. If there is an entry for a portal on the correct page then the corresponding image will be shown next to the portal link. If no image is found then [[:File:Portal-puzzle.svg]] will be shown instead.&lt;br /&gt;
&lt;br /&gt;
It is also possible to specify aliases for portal images. For example, the code {{tlx|Portal|Detroit}} produces the same image as the code {{tlx|Portal|Metro Detroit}}. The &amp;quot;Detroit&amp;quot; alias is found on the page [[Module:Portal/images/aliases]].&lt;br /&gt;
&lt;br /&gt;
The image-detection algorithm is case-insensitive. For example, the code {{tlx|Portal|Detroit}} will produce the same image as the code {{tlx|Portal|detroit}} (although the portal links will be different). Portal names are stored in lower case in the image subpages, and input is converted to lower case before being checked.&lt;br /&gt;
&lt;br /&gt;
To add new images to the list, please &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://en.wikipedia.org/w/index.php?title=Template_talk:Portal&amp;amp;action=edit&amp;amp;preload=Template:Edit_protected/preload&amp;amp;preloadparams%5b%5d=edit%20template-protected&amp;amp;preloadparams%5b%5d=&amp;amp;editintro=Template:Edit_protected/editintro&amp;amp;preloadtitle=Image+edit+request+on+{{CURRENTDAY}}+{{CURRENTMONTHNAME}}+{{CURRENTYEAR}}&amp;amp;section=new make a protected edit request at Template talk:Portal]&amp;lt;/span&amp;gt; to get an administrator to edit the correct subpage for you. Portal images must be either in the public domain or available under a [[WP:ICTIC|free license]] that allows commercial reuse and derivative works; [[Wikipedia:Non-free content|fair-use]] images are not acceptable. The template {{tl|Portal icon demonstration}} may be of use when deciding whether an image is suitable for use as a portal icon; it formats an image using the same size and style that the {{tl|Portal}} template uses by default.&lt;br /&gt;
&lt;br /&gt;
A list of portals and aliases of portals without icons can be found at [[:Category:Portal templates with default image]].&lt;br /&gt;
&lt;br /&gt;
{{Collapse top|List of image subpages}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Page !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/a]] || For portal names starting with &amp;quot;A&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/b]] || For portal names starting with &amp;quot;B&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/c]] || For portal names starting with &amp;quot;C&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/d]] || For portal names starting with &amp;quot;D&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/e]] || For portal names starting with &amp;quot;E&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/f]] || For portal names starting with &amp;quot;F&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/g]] || For portal names starting with &amp;quot;G&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/h]] || For portal names starting with &amp;quot;H&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/i]] || For portal names starting with &amp;quot;I&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/j]] || For portal names starting with &amp;quot;J&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/k]] || For portal names starting with &amp;quot;K&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/l]] || For portal names starting with &amp;quot;L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/m]] || For portal names starting with &amp;quot;M&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/n]] || For portal names starting with &amp;quot;N&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/o]] || For portal names starting with &amp;quot;O&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/p]] || For portal names starting with &amp;quot;P&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/q]] || For portal names starting with &amp;quot;Q&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/r]] || For portal names starting with &amp;quot;R&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/s]] || For portal names starting with &amp;quot;S&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/t]] || For portal names starting with &amp;quot;T&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/u]] || For portal names starting with &amp;quot;U&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/v]] || For portal names starting with &amp;quot;V&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/w]] || For portal names starting with &amp;quot;W&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/x]] || For portal names starting with &amp;quot;X&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/y]] || For portal names starting with &amp;quot;Y&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/z]] || For portal names starting with &amp;quot;Z&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/other]] || For portal names starting with any other letters. This includes numbers, letters with diacritics, and letters in non-Latin alphabets.&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:Portal/images/aliases]] || For adding aliases for existing portal names. Use this page for variations in spelling and diacritics, etc., no matter what letter the portal begins with.&lt;br /&gt;
|}&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The box on the right format with small text can incorporate multiple portals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
Inline format for the left side with normal sized text; See [[Template:Portal-inline]] for a listing of parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&#039;&#039;&#039;Bar&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The bar format is normally used for multiple portals. This template does not belong in the &amp;quot;See also&amp;quot; section. Per [[MOS:SECTIONORDER]], this template is bottom matter and goes below standard navigation templates.&lt;br /&gt;
&lt;br /&gt;
{{Tlx|Portal bar|Canada|Example|&amp;lt;nowiki&amp;gt;border=no&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Portal bar|Canada|Example|border=no|tracking=no}}&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;/code&amp;gt; ... || The portal name, e.g. &amp;lt;code&amp;gt;Literature&amp;lt;/code&amp;gt; || The positional parameters specify the portals to be displayed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;left&#039;&#039;&#039;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; || If set to &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;, the portal appears on the left side of the page instead of the right.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;margin&#039;&#039;&#039;&amp;lt;/code&amp;gt; || CSS margin value, e.g. &amp;lt;code&amp;gt;1.2em 3em 0.5em 1em&amp;lt;/code&amp;gt; || This allows you to set a custom margin. All valid CSS margin values are accepted.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;break&#039;&#039;&#039;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; || If set to &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;, a line break is inserted after the portal name and before the word &#039;&#039;portal&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;redlinks&#039;&#039;&#039;&amp;lt;/code&amp;gt; || Any of the following values: &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; || Redlinks will be displayed. The default is to suppress redlinks.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;nominimum&#039;&#039;&#039;&amp;lt;/code&amp;gt; || Any of the following values: &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; || Suppresses the warning if no parameters are supplied. This can be useful when Template:Portal is called by another template.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;border&#039;&#039;&#039;&amp;lt;/code&amp;gt; || Any of the following values: &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; || Turn off border and background&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;tracking&#039;&#039;&#039;&amp;lt;/code&amp;gt; || Any of the following values: &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; || Tracking categories will be suppressed. The default is to use tracking categories, except on certain namespaces and on pagenames which contain &amp;quot;/archive&amp;quot;, &amp;quot;/doc&amp;quot; or &amp;quot;/test&amp;quot;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Error tracking ==&lt;br /&gt;
If the {{{type|template}}} is used incorrectly, the page will be added to a tracking category.&lt;br /&gt;
&lt;br /&gt;
The tracking categories are not applied if any of the following is true:&lt;br /&gt;
# Tracking is specially disabled for that usage. This is done by setting the optional parameter {{para|tracking}} to any the following values: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;no&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;n&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;false&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# the template is used on a page in any of these namespaces: Talk, User, User talk, Wikipedia talk, File talk, Template talk, Category talk, Portal talk, Draft, Draft talk, Module talk&lt;br /&gt;
# The title page on which the template is used includes any of the following case-insensitive strings: &amp;quot;/archive&amp;quot;, &amp;quot;/doc&amp;quot;, &amp;quot;/test&amp;quot;&lt;br /&gt;
* {{clc|Portal templates with too few portals}}&lt;br /&gt;
* {{clc|Portal templates with too many portals}}&lt;br /&gt;
* {{clc|Portal templates with redlinked portals}}&lt;br /&gt;
* {{clc|Pages with empty portal template}}&lt;br /&gt;
* {{clc|Portal templates with default image}}&lt;br /&gt;
:{{Purge page|&#039;&#039;Purge page to update totals&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{#ifeq: {{{type|}}} | module ||&amp;lt;!-- section not transcluded if type = module --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other mobile-friendly versions==&lt;br /&gt;
For versions that are visible in print and mobile versions of Wikipedia pages see:&lt;br /&gt;
* {{tl|Portal-inline}}&lt;br /&gt;
* {{tl|Portal bar}}&lt;br /&gt;
{{Quotation |&lt;br /&gt;
*&amp;lt;small&amp;gt;Mobile version of &#039;&#039;&#039;{{Plain link|url=https://{{CONTENTLANG}}.m.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
*&amp;lt;small&amp;gt;Desktop version of &#039;&#039;&#039;{{Plain link|url=https://{{CONTENTLANG}}.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}&#039;&#039;&#039;&amp;lt;/small&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Contents/Portals|List of portals]]&lt;br /&gt;
* {{Tl|Subject bar}}&lt;br /&gt;
{{Portal template list}}&lt;br /&gt;
&lt;br /&gt;
==TemplateData==&lt;br /&gt;
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}&lt;br /&gt;
{{TemplateData header|noheader=1}}&lt;br /&gt;
&amp;lt;TemplateData&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;A template to create a list of portals&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Portal (1)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Inserts the portal image and text. Further portals can be added to the template by increasing the number&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Portal (2)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Inserts the portal image and text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Portal (3)&amp;quot;,&lt;br /&gt;
			&amp;quot;inherits&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        &amp;quot;4&amp;quot;: {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;Portal (4)&amp;quot;,&lt;br /&gt;
            &amp;quot;inherits&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;5&amp;quot;: {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;Portal (5)&amp;quot;,&lt;br /&gt;
            &amp;quot;inherits&amp;quot;: &amp;quot;4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;6&amp;quot;: {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;Portal (6)&amp;quot;,&lt;br /&gt;
            &amp;quot;inherits&amp;quot;: &amp;quot;5&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
		&amp;quot;left&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Side&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to yes, the portal appears on the left side of the page instead of the right.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;no&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;margin&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Margin size&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Alters the margin size. Any valid CSS margin is accepted&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;break&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line break&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to yes, a line break is inserted after the portal name and before the word portal&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        &amp;quot;redlink&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Allow links to non-existent portals&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;nominimum&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Do not check for at least one portal&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;border&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Put border around portal links&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;tracking&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;In case of warning, add to tracking category&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
		&amp;quot;type&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/TemplateData&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
{{help}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!--Categories below this line, please; interwikis at Wikidata--&amp;gt;&lt;br /&gt;
[[Category:Internal link templates]]&lt;br /&gt;
[[Category:Wikipedia Portal navflags]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt; &amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Record production portal|Templates]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;!-- end of section not transcluded if type = module --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Template:Portal&amp;diff=3730</id>
		<title>Template:Portal</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Template:Portal&amp;diff=3730"/>
		<updated>2025-05-24T00:20:37Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: IDK IF THIS WORKS OR NOT.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==TemplateData==&lt;br /&gt;
&lt;br /&gt;
{{TemplateData header|noheader=1}}&lt;br /&gt;
&amp;lt;TemplateData&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;A template to create a list of portals&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Portal (1)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Inserts the portal image and text. Further portals can be added to the template by increasing the number&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Portal (2)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Inserts the portal image and text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Portal (3)&amp;quot;,&lt;br /&gt;
			&amp;quot;inherits&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        &amp;quot;4&amp;quot;: {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;Portal (4)&amp;quot;,&lt;br /&gt;
            &amp;quot;inherits&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;5&amp;quot;: {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;Portal (5)&amp;quot;,&lt;br /&gt;
            &amp;quot;inherits&amp;quot;: &amp;quot;4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;6&amp;quot;: {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;Portal (6)&amp;quot;,&lt;br /&gt;
            &amp;quot;inherits&amp;quot;: &amp;quot;5&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
		&amp;quot;left&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Side&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to yes, the portal appears on the left side of the page instead of the right.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;no&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;margin&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Margin size&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Alters the margin size. Any valid CSS margin is accepted&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;break&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line break&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to yes, a line break is inserted after the portal name and before the word portal&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        &amp;quot;redlink&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Allow links to non-existent portals&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;nominimum&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Do not check for at least one portal&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;border&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Put border around portal links&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;tracking&amp;quot;: {&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;In case of warning, add to tracking category&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
		&amp;quot;type&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/TemplateData&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3725</id>
		<title>Eenza</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3725"/>
		<updated>2025-05-23T20:03:36Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: implemented new infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Eenza}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
| name             = Eenza&lt;br /&gt;
| bodystyle        = &lt;br /&gt;
| titlestyle       = color: black;&lt;br /&gt;
| image            = [[File:NewEenza.png|200px]]&lt;br /&gt;
| caption          = Eenza In a Suit&lt;br /&gt;
| above            = Eenza&lt;br /&gt;
| abovestyle       = background-color: #86a7db; color: black;&lt;br /&gt;
| header1          = Personal Details&lt;br /&gt;
| headerstyle      = background-color:  #86a7db; color: black;&lt;br /&gt;
| labelstyle       = width: 45%; color: black;&lt;br /&gt;
| datastyle        = &lt;br /&gt;
&lt;br /&gt;
| label2 = Join Date&lt;br /&gt;
| data2 = January 9th 2025&lt;br /&gt;
| label3           = Occupation&lt;br /&gt;
| data3            = A little bit of everything&lt;br /&gt;
| label4 = Political Party&lt;br /&gt;
| data4 =[[Workers&#039;_Party_of_Redmont|Workers Party of Redmont]]&lt;br /&gt;
|d&lt;br /&gt;
| label5 = Pronouns&lt;br /&gt;
| data5= She/They&lt;br /&gt;
| label6= Nationality&lt;br /&gt;
| data6= {{ISO|US}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eenza&#039;&#039;&#039; (joined 9 January 2025), also known as &#039;&#039;&#039;Jorja&#039;&#039;&#039;, is a Redmontian [[Electoral Officer|Electoral Officer]], [[Information officer|Information Officer]], [[Professor|Professor]], Investigator, [[Ranger]], [[Pharmacist|Pharmacist]], and [[Detective|Detective]]. As of April 29th, 2025, she is a trial mod for the staff team of DC.&lt;br /&gt;
&lt;br /&gt;
She started her political career by joining the [[Workers&#039; Party of Redmont]] shortly after it began, joining along side her dear friend, [[SoggehToast]].&lt;br /&gt;
&lt;br /&gt;
== Professional career ==&lt;br /&gt;
&lt;br /&gt;
==== SoggehPant (Unknown–Current) ====&lt;br /&gt;
SoggehPant, or Soggeh Pantalone Mart, was founded by Eenza and [[SoggehToast]]. Their business started in CBD006. The business was founded in friendship and the need for money, as they were insanely poor. Friendships grew and blossomed in the tiny store. The second floor was transformed into a small banner store, managed by [[MissAndrist]], dear friend of the two owners.&lt;br /&gt;
&lt;br /&gt;
==== Georg Street (14/02/2025–Current) ====&lt;br /&gt;
[[Georg Street]] started as a satirical news publication. The name comes from Eenza&#039;s dog, named Georg. Georg hosts the interviews in game, asking the interviewees the questions, then Eenza formats them to be posted on the Georg Street discord. The first ever interview was published February 14th 2025 and the interviewee was former president [[lcn]]. The idea of the company came with help from the beautiful mind of [[AETHER1AN]], she helped and oversaw the starting of the company and has sat on many interviews. &lt;br /&gt;
&lt;br /&gt;
The news company expanded into a mega store on the 9th of May 2025, located at [https://discord.com/channels/673612908868927498/1370507984345628672 C123]. The store at C123 was built by an amazing builder, [[LL4444444444444]]. &lt;br /&gt;
&lt;br /&gt;
=== Congress ===&lt;br /&gt;
&lt;br /&gt;
==== 31st Congress (10 May–12 July 2025) ====&lt;br /&gt;
[INTRO, TBD OBVIOUSLY]&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot;&lt;br /&gt;
|+Bills proposed&lt;br /&gt;
!Bill&lt;br /&gt;
!Description&lt;br /&gt;
!Date proposed&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[FOLLOWUP] &lt;br /&gt;
&lt;br /&gt;
=== Executive ===&lt;br /&gt;
As of the 22nd of May, 2025, Eenza is in six different departments. On March 10th, 2025, Eenza applied to the [[Department of State|DoS]] as an [[Electoral Officer]]. This marked the beginning of her rapid involvement in multiple departments. On April 29th, 2025, She applied to the [[Department of Education|DoE]] as a [[Information Officer]]. On May 10th, 2025, She applied to the [[Department of Justice|DoJ]] as an [[Investigator|Investigator]]. On May 22nd, 2025, she applied to be a [[Ranger]] in the [[Department of the Interior|DoI]], along with applying to the [[Department of Education|DoE]] as a [[Professor|Professor]].&lt;br /&gt;
&lt;br /&gt;
Other jobs Eenza holds is as a [[Detective|Detective]] in the [[Department of Homeland Security|DHS]] as well as a [[Pharmacist|Pharmacist]] in the [[Department of health|DoH]].&lt;br /&gt;
&lt;br /&gt;
== Personal life ==&lt;br /&gt;
Eenza resides in her main home in Reveille with her beloved wife, [[Gribble19]], at R044. She can be seen all around the server though. She has a [[wild]] base she often sits at, randomly being visited by friends and spouses. Her first home in the wild was destroyed in the [[February 2025 Anville attacks]] and was shortly rebuilt, bigger and better. Although, her main property she puts all her love and care into is [[Georg Street]], located at C123. &lt;br /&gt;
&lt;br /&gt;
=== Georg, beloved dog ===&lt;br /&gt;
Georg is a white dog with the classic red collar. He has lived many jobs, always following Eenza around and taking on whatever professions she gets herself into that day. His interesting name was given to him by the lovely [[Kaiserin]]. Pronounced &amp;quot;Gyorg.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Georg&#039;s main home is in [[Solidarity]], a sister town to [[Anville]], he lives in a small dog house, built by Eenza. He can also be found in Georg Street, in Reveille at C123.&lt;br /&gt;
&lt;br /&gt;
=== Spouses ===&lt;br /&gt;
As of the 22nd of May, 2025, Eenza is married to eight people. [[Modzy|modzy_]], [[LL4444444444444]], [[V d|v__d]], [[Pepecuu]], [[IisForIzzy]], [[Gribble19]], [[AETHER1AN]], and [[SomeHumanOnEarth]].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:31st House Of Representatives]]&lt;br /&gt;
[[Category:2025 people]]&lt;br /&gt;
[[Category:People from Anville]]&lt;br /&gt;
[[Category:Staff members]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3301</id>
		<title>Eenza</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3301"/>
		<updated>2025-05-22T18:06:09Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Eenza}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Infobox CustomFile&lt;br /&gt;
| joined = 9 January 2025&lt;br /&gt;
| occupation = Little bit of everything&lt;br /&gt;
| political_party = [[Workers&#039; Party of Redmont]]&lt;br /&gt;
| pronouns = She/They&lt;br /&gt;
| nationality = {{ISO|US}}&lt;br /&gt;
|FILE=NewEenza.png}}&lt;br /&gt;
&#039;&#039;&#039;Eenza&#039;&#039;&#039; (joined 9 January 2025), also known as &#039;&#039;&#039;Jorja&#039;&#039;&#039;, is a Redmontian [[Electoral Officer|Electoral Officer]], [[Information officer|Information Officer]], [[Professor|Professor]], [[Investigator|Investigator]], [[Ranger]], [[Pharmacist|Pharmacist]], and [[Detective|Detective]]. As of April 29th, 2025, she is a trial mod for the staff team of DC.&lt;br /&gt;
&lt;br /&gt;
She started her political career by joining the [[Workers&#039; Party of Redmont]] shortly after it began, joining along side her dear friend, [[SoggehToast]].&lt;br /&gt;
&lt;br /&gt;
== Professional career ==&lt;br /&gt;
&lt;br /&gt;
==== SoggehPant (Unknown–Current) ====&lt;br /&gt;
SoggehPant, or Soggeh Pantalone Mart, was founded by Eenza and [[SoggehToast]]. Their business started in CBD006. The business was founded in friendship and the need for money, as they were insanely poor. Friendships grew and blossomed in the tiny store. The second floor was transformed into a small banner store, managed by [[MissAndrist]], dear friend of the two owners.&lt;br /&gt;
&lt;br /&gt;
==== Georg Street (14/02/2025–Current) ====&lt;br /&gt;
[[Georg Street]] started as a satirical news publication. The name comes from Eenza&#039;s dog, named Georg. Georg hosts the interviews in game, asking the interviewees the questions, then Eenza formats them to be posted on the Georg Street discord. The first ever interview was published February 14th 2025 and the interviewee was former president [[lcn]]. The idea of the company came with help from the beautiful mind of [[AETHER1AN]], she helped and oversaw the starting of the company and has sat on many interviews. &lt;br /&gt;
&lt;br /&gt;
The news company expanded into a mega store on the 9th of May 2025, located at [https://discord.com/channels/673612908868927498/1370507984345628672 C123]. The store at C123 was built by an amazing builder, [[LL4444444444444]]. &lt;br /&gt;
&lt;br /&gt;
=== Congress ===&lt;br /&gt;
&lt;br /&gt;
==== 31st Congress (10 May–12 July 2025) ====&lt;br /&gt;
[INTRO, TBD OBVIOUSLY]&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot;&lt;br /&gt;
|+Bills proposed&lt;br /&gt;
!Bill&lt;br /&gt;
!Description&lt;br /&gt;
!Date proposed&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[FOLLOWUP] &lt;br /&gt;
&lt;br /&gt;
=== Executive ===&lt;br /&gt;
As of the 22nd of May, 2025, Eenza is in six different departments. On March 10th, 2025, Eenza applied to the [[Department of State|DoS]] as an [[Electoral Officer]]. This marked the beginning of her rapid involvement in multiple departments. On April 29th, 2025, She applied to the [[Department of Education|DoE]] as a [[Information Officer]]. On May 10th, 2025, She applied to the [[Department of Justice|DoJ]] as an [[Investigator|Investigator]]. On May 22nd, 2025, she applied to be a [[Ranger]] in the [[Department of the Interior|DoI]], along with applying to the [[Department of Education|DoE]] as a [[Professor|Professor]].&lt;br /&gt;
&lt;br /&gt;
Other jobs Eenza holds is as a [[Detective|Detective]] in the [[Department of Homeland Security|DHS]] as well as a [[Pharmacist|Pharmacist]] in the [[Department of health|DoH]].&lt;br /&gt;
&lt;br /&gt;
== Personal life ==&lt;br /&gt;
Eenza resides in her main home in Reveille with her beloved wife, [[Gribble19]], at R044. She can be seen all around the server though. She has a [[wild]] base she often sits at, randomly being visited by friends and spouses. Her first home in the wild was destroyed in the [[February 2025 Anville attacks]] and was shortly rebuilt, bigger and better. Although, her main property she puts all her love and care into is [[Georg Street]], located at C123. &lt;br /&gt;
&lt;br /&gt;
=== Georg, beloved dog ===&lt;br /&gt;
Georg is a white dog with the classic red collar. He has lived many jobs, always following Eenza around and taking on whatever professions she gets herself into that day. His interesting name was given to him by the lovely [[Kaiserin]]. Pronounced &amp;quot;Gyorg.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Georg&#039;s main home is in [[Solidarity]], a sister town to [[Anville]], he lives in a small dog house, built by Eenza. He can also be found in Georg Street, in Reveille at C123.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:31st House Of Representatives]]&lt;br /&gt;
[[Category:2025 people]]&lt;br /&gt;
[[Category:People from Anville]]&lt;br /&gt;
[[Category:Staff members]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:NewEenza.png&amp;diff=3300</id>
		<title>File:NewEenza.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:NewEenza.png&amp;diff=3300"/>
		<updated>2025-05-22T18:05:57Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Eenza to work with the new filename since templates suck ass&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Eenza to work with the new filename since templates suck ass&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Template:Infobox_CustomFile&amp;diff=3299</id>
		<title>Template:Infobox CustomFile</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Template:Infobox_CustomFile&amp;diff=3299"/>
		<updated>2025-05-22T18:03:32Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: infobox but with customizable filename&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 22em; border: 1px solid #ddd; padding: 10px; margin: 20px; float: right; clear: right;&amp;quot;&lt;br /&gt;
|+ &amp;lt;big&amp;gt;&#039;&#039;&#039;{{PAGENAME}}&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; colspan=&amp;quot;2&amp;quot; | [[File:{{{FILE}}}|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: lavender; text-align: center;&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Personal details&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Joined&#039;&#039;&#039; || {{{joined}}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Occupation&#039;&#039;&#039; || {{{occupation}}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Political party&#039;&#039;&#039; || {{{political_party}}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pronouns&#039;&#039;&#039; || {{{pronouns}}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Nationality&#039;&#039;&#039; || {{{nationality}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3298</id>
		<title>File:Eenza standing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3298"/>
		<updated>2025-05-22T17:58:29Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Aubunny reverted File:Eenza standing.png to an old version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
eenza who is standing&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3297</id>
		<title>File:Eenza standing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3297"/>
		<updated>2025-05-22T17:48:57Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Aubunny reverted File:Eenza standing.png to an old version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
eenza who is standing&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3296</id>
		<title>File:Eenza standing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3296"/>
		<updated>2025-05-22T17:48:06Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Aubunny uploaded a new version of File:Eenza standing.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
eenza who is standing&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3272</id>
		<title>Eenza</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3272"/>
		<updated>2025-05-22T03:24:48Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: forgot to add this to 2025 people&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Eenza}}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Eenza&#039;&#039;&#039; ==&lt;br /&gt;
{{Infobox person&lt;br /&gt;
| joined = &lt;br /&gt;
| occupation = OCCUPATION&lt;br /&gt;
| political_party = WORKERS PARTY OF REDMONT&lt;br /&gt;
| pronouns = She/They&lt;br /&gt;
| nationality = Nationality&lt;br /&gt;
}}&lt;br /&gt;
[INTRO BLOG HERE] &lt;br /&gt;
&lt;br /&gt;
== Political career ==&lt;br /&gt;
[SMALL POLITICAL INTRO HERE]&lt;br /&gt;
&lt;br /&gt;
=== Congress ===&lt;br /&gt;
&lt;br /&gt;
==== 31th Congress (10 May–12 July 2025) ====&lt;br /&gt;
[INTRO, TBD OBVIOUSLY]&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot;&lt;br /&gt;
|+Bills proposed&lt;br /&gt;
!Bill&lt;br /&gt;
!Description&lt;br /&gt;
!Date proposed&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[FOLLOWUP] &lt;br /&gt;
&lt;br /&gt;
=== Executive ===&lt;br /&gt;
[Put any executive stuff here]&lt;br /&gt;
&lt;br /&gt;
== Professional career ==&lt;br /&gt;
&lt;br /&gt;
==== Georg Street (Date–Current) ====&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
== Personal life ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:31st House Of Representatives]]&lt;br /&gt;
[[Category:2025 people]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3271</id>
		<title>File:Eenza standing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Eenza_standing.png&amp;diff=3271"/>
		<updated>2025-05-22T03:22:17Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: eenza who is standing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
eenza who is standing&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3270</id>
		<title>Eenza</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Eenza&amp;diff=3270"/>
		<updated>2025-05-22T03:20:54Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Created page with &amp;quot;{{DISPLAYTITLE:Eenza}}  == &amp;#039;&amp;#039;&amp;#039;Eenza&amp;#039;&amp;#039;&amp;#039; == {{Infobox person | joined =  | occupation = OCCUPATION | political_party = WORKERS PARTY OF REDMONT | pronouns = She/They | nationality = Nationality }} [INTRO BLOG HERE]   == Political career == [SMALL POLITICAL INTRO HERE]  === Congress ===  ==== 31th Congress (10 May–12 July 2025) ==== [INTRO, TBD OBVIOUSLY] {| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot; |+Bills proposed !Bill !Description !Date proposed !Status |- | | |} [FOL...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Eenza}}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Eenza&#039;&#039;&#039; ==&lt;br /&gt;
{{Infobox person&lt;br /&gt;
| joined = &lt;br /&gt;
| occupation = OCCUPATION&lt;br /&gt;
| political_party = WORKERS PARTY OF REDMONT&lt;br /&gt;
| pronouns = She/They&lt;br /&gt;
| nationality = Nationality&lt;br /&gt;
}}&lt;br /&gt;
[INTRO BLOG HERE] &lt;br /&gt;
&lt;br /&gt;
== Political career ==&lt;br /&gt;
[SMALL POLITICAL INTRO HERE]&lt;br /&gt;
&lt;br /&gt;
=== Congress ===&lt;br /&gt;
&lt;br /&gt;
==== 31th Congress (10 May–12 July 2025) ====&lt;br /&gt;
[INTRO, TBD OBVIOUSLY]&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot;&lt;br /&gt;
|+Bills proposed&lt;br /&gt;
!Bill&lt;br /&gt;
!Description&lt;br /&gt;
!Date proposed&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[FOLLOWUP] &lt;br /&gt;
&lt;br /&gt;
=== Executive ===&lt;br /&gt;
[Put any executive stuff here]&lt;br /&gt;
&lt;br /&gt;
== Professional career ==&lt;br /&gt;
&lt;br /&gt;
==== Georg Street (Date–Current) ====&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
== Personal life ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:31st House Of Representatives]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=User:Aubunny/sandbox&amp;diff=3269</id>
		<title>User:Aubunny/sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=User:Aubunny/sandbox&amp;diff=3269"/>
		<updated>2025-05-22T03:15:25Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Creation of Eenza Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Eenza}}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Eenza&#039;&#039;&#039; ==&lt;br /&gt;
{{Infobox person&lt;br /&gt;
| joined = &lt;br /&gt;
| occupation = OCCUPATION&lt;br /&gt;
| political_party = WORKERS PARTY OF REDMONT&lt;br /&gt;
| pronouns = She/They&lt;br /&gt;
| nationality = Nationality&lt;br /&gt;
}}&lt;br /&gt;
[INTRO BLOG HERE] &lt;br /&gt;
&lt;br /&gt;
== Political career ==&lt;br /&gt;
[SMALL POLITICAL INTRO HERE]&lt;br /&gt;
&lt;br /&gt;
=== Congress ===&lt;br /&gt;
&lt;br /&gt;
==== 31th Congress (10 May–12 July 2025) ====&lt;br /&gt;
[INTRO, TBD OBVIOUSLY]&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible&amp;quot;&lt;br /&gt;
|+Bills proposed&lt;br /&gt;
!Bill&lt;br /&gt;
!Description&lt;br /&gt;
!Date proposed&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[FOLLOWUP] &lt;br /&gt;
&lt;br /&gt;
=== Executive ===&lt;br /&gt;
[Put any executive stuff here]&lt;br /&gt;
&lt;br /&gt;
== Professional career ==&lt;br /&gt;
&lt;br /&gt;
==== Georg Street (Date–Current) ====&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
== Personal life ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:31st House Of Representatives]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Constructor&amp;diff=3268</id>
		<title>Constructor</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Constructor&amp;diff=3268"/>
		<updated>2025-05-20T19:11:45Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: /* Application Process */ dead link fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Constructors are experts on building and play a key role in the infrastructural development of the city.&lt;br /&gt;
&lt;br /&gt;
To become a constructor, you must apply on the forums.&lt;br /&gt;
&lt;br /&gt;
=== Pay ===&lt;br /&gt;
Constructors&#039; jobs are generally commission based. The pay for Constructors will vary depending on the building project.&amp;lt;span id=&amp;quot;duties&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Duties and Expectations ===&lt;br /&gt;
As a Constructor, your main duty is constructing new buildings on the server. Your responsibilities include:&lt;br /&gt;
&lt;br /&gt;
* Constructing buildings for the government.&lt;br /&gt;
* Recieving and completing assigned projects suitable for your skills.&lt;br /&gt;
* Collaborating with other Constructors on projects.&lt;br /&gt;
* Participating in training when needed/requested.&lt;br /&gt;
* Exploring various architectural styles.&lt;br /&gt;
&lt;br /&gt;
All roles within this department must contribute to the server by keeping structures in the city up to current building regulations. This can be done by either constructing new buildings for the government, by taking on DCT construction projects, or by reporting &amp;quot;eyesore&amp;quot; player plots. However, the main job of a Constructor is to construct new buildings.&lt;br /&gt;
&lt;br /&gt;
Constructors (along with other members of the department) must meet the basic standards of in-game activity and job commitment. The full protocols and policies of the DCT are linked [https://www.democracycraft.net/forums/information-policy.43/ here].&amp;lt;span id=&amp;quot;protocols&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
This section covers the protocol of building a new structure.&amp;lt;span id=&amp;quot;application-process&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Application Process ===&lt;br /&gt;
In order to apply for Constructor, you will have to fill out an application and meet the appropriate requirements outlined within the application itself, which can be found [https://www.democracycraft.net/forums/applications.2048/ here]&lt;br /&gt;
&lt;br /&gt;
==== Application Steps ====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Go to the Forums -&amp;amp;gt; Department of Construction and Transport -&amp;amp;gt; Applications.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Click on ‘Applications’ &amp;amp;amp; ‘Apply’.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Fill in your details and submit the application.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Should you have any questions about the application, be sure to go to #government-support on the main Discord and open a ticket with the department you are applying under.&lt;br /&gt;
[[Category:Constructors| ]]&lt;br /&gt;
[[Category:Government jobs]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Pilot%27s_license&amp;diff=3249</id>
		<title>Pilot&#039;s license</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Pilot%27s_license&amp;diff=3249"/>
		<updated>2025-05-09T00:13:49Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: /* Using Aircraft */  forgot one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Airplane.png|thumb|696x696px]]&lt;br /&gt;
The Pilot job allows you to fly helicopters and planes. Once you pass the exam, its your qualification to keep!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;span id=&amp;quot;information&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Laws ==&lt;br /&gt;
&lt;br /&gt;
You need to have this qualification in order to fly an aircraft; flying without one is illegal.&lt;br /&gt;
&lt;br /&gt;
You may not park your plane in an area not owned by you; this is considered vehicle abandonment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Aircraft ==&lt;br /&gt;
The controls of an aircraft are as follows: they may vary depending on whether you&#039;re flying an airplane or a helicopter!&lt;br /&gt;
&lt;br /&gt;
* Shift Left-Click the driver seat: Refuels the vehicle.&lt;br /&gt;
* Shift Right-Click: Open the vehicle menu&lt;br /&gt;
* Right-Click: Enter the vehicle.&lt;br /&gt;
* Space: Increase Altitude [Requires ample speed]&amp;lt;div class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Acquiring an Aircraft ==&lt;br /&gt;
Stealing them is against the law, so go purchase some at a player&#039;s chestshop! They are not available in the dealership.&lt;br /&gt;
&lt;br /&gt;
== Fuel ==&lt;br /&gt;
[[File:Image.png|thumb]]&lt;br /&gt;
Your vehicle needs fuel to run! Buy it from gas stations or other players! If you have the mechanic profession you can craft it yourself using 4 emeralds, 4 coal, and 1 bucket. (Only mechanics can craft fuel, if you don&#039;t have the profession make sure to head to the university to pass the exam and become one yourself!)&lt;br /&gt;
&lt;br /&gt;
[[category:Licenses]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Pilot%27s_license&amp;diff=3248</id>
		<title>Pilot&#039;s license</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Pilot%27s_license&amp;diff=3248"/>
		<updated>2025-05-09T00:11:14Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: added image and brought it up to parity with the drivers license!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Airplane.png|thumb|696x696px]]&lt;br /&gt;
The Pilot job allows you to fly helicopters and planes. Once you pass the exam, its your qualification to keep!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;span id=&amp;quot;information&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Laws ==&lt;br /&gt;
&lt;br /&gt;
You need to have this qualification in order to fly an aircraft; flying without one is illegal.&lt;br /&gt;
&lt;br /&gt;
You may not park your plane in an area not owned by you; this is considered vehicle abandonment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Aircraft ==&lt;br /&gt;
The controls of an aircraft are as follows: they may vary depending on whether you&#039;re flying an airplane or a helicopter!&lt;br /&gt;
&lt;br /&gt;
* Shift Left-Click the driver seat: Refuels the vehicle.&lt;br /&gt;
* Shift Right-Click: Open the vehicle menu&lt;br /&gt;
* Right-Click: Enter the vehicle.&amp;lt;div class=&amp;quot;figure&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Acquiring an Aircraft ==&lt;br /&gt;
Stealing them is against the law, so go purchase some at a player&#039;s chestshop! They are not available in the dealership.&lt;br /&gt;
&lt;br /&gt;
== Fuel ==&lt;br /&gt;
[[File:Image.png|thumb]]&lt;br /&gt;
Your vehicle needs fuel to run! Buy it from gas stations or other players! If you have the mechanic profession you can craft it yourself using 4 emeralds, 4 coal, and 1 bucket. (Only mechanics can craft fuel, if you don&#039;t have the profession make sure to head to the university to pass the exam and become one yourself!)&lt;br /&gt;
&lt;br /&gt;
[[category:Licenses]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Image.png&amp;diff=3247</id>
		<title>File:Image.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Image.png&amp;diff=3247"/>
		<updated>2025-05-09T00:09:12Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;unage&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Airplane.png&amp;diff=3245</id>
		<title>File:Airplane.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Airplane.png&amp;diff=3245"/>
		<updated>2025-05-08T23:30:29Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;airplane!&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=Black_Market&amp;diff=3244</id>
		<title>Black Market</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=Black_Market&amp;diff=3244"/>
		<updated>2025-05-06T23:44:43Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: Added Pictures to the black market section to the guide, should help new players find it more easily!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Blackmarket.png|center|thumb|834x834px]]&lt;br /&gt;
The Black Market is an area underground where you can sell anything &#039;&#039;&#039;without&#039;&#039;&#039; legal prosecution. And yes, this means &#039;&#039;anything&#039;&#039;.&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
To get to the Black Market, you will need to get into the sewers. There is an entrance near the Spawn Station to the east. You will see a little area under the train platform with an NPC named Doug. There, you will find the sewer entrance.&lt;br /&gt;
&lt;br /&gt;
[[File:Black market entrance.png|thumb|455x455px|This is a picture of Doug from underneath the train station. The entrance to the black market is right next to him!]]&lt;br /&gt;
[[File:Bluemap blackmarket.png|thumb|454x454px|Map coordinates where Doug is hiding, look out for the scaffolding hes camping out in!]]&lt;br /&gt;
&lt;br /&gt;
== How do I get one? ==&lt;br /&gt;
&lt;br /&gt;
There are 10 Black Market stalls in the city and multiple in the surrounding towns, labeled with “bm” in the front. You can always do &amp;lt;code&amp;gt;/as forrent&amp;lt;/code&amp;gt; and look, or check Discord for rental rights under Economy &amp;amp;gt; Real-Estate.&lt;br /&gt;
[[File:Doug.png|left|thumb|380x380px|Doug posing in his scaffolding tent, paid generously for his efforts!]]&lt;br /&gt;
[[category:Crime]]&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Doug.png&amp;diff=3243</id>
		<title>File:Doug.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Doug.png&amp;diff=3243"/>
		<updated>2025-05-06T23:43:04Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Doug in his homeless tent&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Bluemap_blackmarket.png&amp;diff=3242</id>
		<title>File:Bluemap blackmarket.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Bluemap_blackmarket.png&amp;diff=3242"/>
		<updated>2025-05-06T23:35:22Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bluemap black market&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Blackmarket.png&amp;diff=3241</id>
		<title>File:Blackmarket.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Blackmarket.png&amp;diff=3241"/>
		<updated>2025-05-06T23:32:43Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;blackmarket&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Blumap_black_market.png&amp;diff=3240</id>
		<title>File:Blumap black market.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Blumap_black_market.png&amp;diff=3240"/>
		<updated>2025-05-06T23:30:55Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bluemap black market&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
	<entry>
		<id>https://wiki.democracycraft.net/index.php?title=File:Black_market_entrance.png&amp;diff=3239</id>
		<title>File:Black market entrance.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.democracycraft.net/index.php?title=File:Black_market_entrance.png&amp;diff=3239"/>
		<updated>2025-05-06T23:29:04Z</updated>

		<summary type="html">&lt;p&gt;Aubunny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Picture of Doug from under the train station, the entrance is right next to him!&lt;/div&gt;</summary>
		<author><name>Aubunny</name></author>
	</entry>
</feed>