<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https:///api.php?action=feedcontributions&amp;feedformat=atom&amp;user=StarSumiaki</id>
	<title>Canonical Works Universe Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https:///api.php?action=feedcontributions&amp;feedformat=atom&amp;user=StarSumiaki"/>
	<link rel="alternate" type="text/html" href="Special:Contributions/StarSumiaki"/>
	<updated>2026-04-12T08:55:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>index.php?title=Laf_(character)&amp;diff=675</id>
		<title>Laf (character)</title>
		<link rel="alternate" type="text/html" href="index.php?title=Laf_(character)&amp;diff=675"/>
		<updated>2023-10-01T07:17:08Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;{{CharInfo |name = Laf |image = empty.png|228px |age = ??? |bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039; }}  &amp;#039;&amp;#039;&amp;#039;Laf&amp;#039;&amp;#039;&amp;#039; is an OC avatar of the artist StarSumiaki. She represents the artist when...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Laf&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|age = ???&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Laf&amp;#039;&amp;#039;&amp;#039; is an OC avatar of the artist [[StarSumiaki]]. She represents the artist when appearing in fictional worlds.&lt;br /&gt;
&lt;br /&gt;
== Appearance ==&lt;br /&gt;
Laf is a young woman with brunette hair and a slender build. She is most often seen wearing a long dress or tunic-like shirt and spats, and blue glasses. She is often barefoot.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Laf is typically always a sweet, energetic, and easy-going person. However, she will passionately defend who and what she upholds as right with the righteous fury of a [[God of Destruction]]. Occasionally, too much exertion of anger can lead to a runaway meltdown.&lt;br /&gt;
&lt;br /&gt;
== Powers and Abilities ==&lt;br /&gt;
=== GadgetSoul ===&lt;br /&gt;
The [[GaoSoul#GadgetSoul|GadgetSoul]] is a [[GaoSoul]], a mysterious manifestation of a fragment of a [https://gaogaigar.fandom.com/wiki/Genesic_GaoGaiGar divine being] from another universe. Due to a permanent fusion with it, Laf is able to manifest its form, powers, and abilities. The GadgetSoul also provides a passive psychic and spiritual defense, as its presence within the [[Gulf of Self]] provides a ceaseless source of powerful positive energy.&lt;br /&gt;
&lt;br /&gt;
==== Abilities ====&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Gadget Feathers:&amp;#039;&amp;#039;&amp;#039; A pair of wings made of glowing green energy that allow Laf to hover and fly on demand. With conscious effort, they can be made smaller or even made to disappear completely.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Gadget Tail:&amp;#039;&amp;#039;&amp;#039; A segmented tail made of glowing green energy. Unlike the Feathers, the Tail must be willfully summoned. It can be used as a weapon, but its primary usage seems to be assisting with flying somehow.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Will Knife:&amp;#039;&amp;#039;&amp;#039; A bladed gauntlet made of glowing green energy that covers most of the forearm. Its sharpness appears to be variable, but allegedly can cut through even the toughest of metals. Though Laf prefers to wield bladed-weapons left-handed, she uses the Will Knife right-handed for what she calls &amp;quot;authenticity reasons&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
* The lenses of Laf&amp;#039;s glasses almost always reflect a small rainbow in the corner when exposed to bright lights.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Cry&amp;diff=674</id>
		<title>Cry</title>
		<link rel="alternate" type="text/html" href="index.php?title=Cry&amp;diff=674"/>
		<updated>2021-12-08T19:41:10Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Cry&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|age = ??? (Soul); 23 (Body)&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cry&amp;#039;&amp;#039;&amp;#039; is a [[Dragon Deity]] embodying the emotion of &amp;#039;&amp;#039;mourning&amp;#039;&amp;#039;. She is considered to be of some Scandinavian or Icelandic descent.&lt;br /&gt;
== Appearance ==&lt;br /&gt;
Cry is a young woman with pale green hair, pale and scarred skin, and yellow irides. Like all Dragon Deities, she possesses horns and a scaled tail. Unlike others of her kin, however, her horns appear to be permanently damaged on both sides, symmetrically lacking large chunks that do not seem to grow back. Her tail is composed of blue scales and a tanner pinkish underside. The tip of her tail often resembles a blue flame.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Cry is an enigmatic and reserved young woman. She is apparently mute (though it is unknown whether this trait is physical, psychological, or purely voluntary) and only communicates via writing or signing. She tends to embrace brevity and forwardness with her communication.&lt;br /&gt;
&lt;br /&gt;
Being a &amp;#039;&amp;#039;Dragon of Mourning&amp;#039;&amp;#039;, Cry tends to &amp;#039;&amp;#039;cry&amp;#039;&amp;#039;. However, she sheds tears solemnly, rather than sob or wail. Her mourning is not typically toward any specific person or thing, rather she seems to mourn &amp;#039;&amp;#039;life itself&amp;#039;&amp;#039;. Cry once described it on paper as &amp;quot;feeling the mortality of the world as one&amp;quot;. Cry can feel the full spectrum of emotions beyond her sorrow, but rarely physically shows it. She tends to express those emotions through writing in the form of short stories and poetry.&lt;br /&gt;
&lt;br /&gt;
Though her divine purpose is to master and temper her embodied emotion, Cry rejects this duty and instead embraces being consumed by mourning.&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
The name &amp;quot;Cry&amp;quot; is a self-assigned mononym. She claims to have no recollection of any other names, and lacks any form of legal identification to suggest otherwise. When introducing herself to new people, she produces a business card that states her name as signing the letters for &amp;quot;cry&amp;quot; or signing the act of crying usually ends up more confusing than insightful.&lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Being part dragon, Cry has access to draconic abilities and powers. Little is known about the extend of these abilities and powers but thus far, Cry has demonstrated the following:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Unnamed Energy Blast&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Cry fires a a massive green energy blast from the palm of her hand.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Horns of Light&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Cry is capable of manifesting horns made of energy to replace the missing parts of her physical horns. What this accomplishes beyond obvious cosmetic changes remains unknown.&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
* [[Word of God]] jokes that Cry cannot speak because every time she tries to utter a sound, she accidentally fires an energy blast akin to the &amp;quot;Atomic Breath&amp;quot; used by [https://en.wikipedia.org/wiki/Godzilla Godzilla].&lt;br /&gt;
* Cry&amp;#039;s body scarring is never explained, but is confirmed to &amp;#039;&amp;#039;not&amp;#039;&amp;#039; be the result of abuse or self-harm.&lt;br /&gt;
* There are rumors suggesting that Cry may be unnaturally long-lived even for a Dragon Deity, or perhaps may have reincarnated into the same form multiple times. Cry has never given an answer about this.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Dilalin&amp;diff=673</id>
		<title>Dilalin</title>
		<link rel="alternate" type="text/html" href="index.php?title=Dilalin&amp;diff=673"/>
		<updated>2021-08-08T18:00:54Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Dilalin&lt;br /&gt;
|katakana = ディラリン&lt;br /&gt;
|romaji = Dirarin&lt;br /&gt;
|image = Dilalin.png|228px&lt;br /&gt;
|series = [[Magi Soldat]]&lt;br /&gt;
|age = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
|home = [[Iaden]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dilalin Niy&amp;#039;&amp;#039;&amp;#039; (ディラリン・ニヤ &amp;lt;&amp;#039;&amp;#039;Dirarin Niya&amp;#039;&amp;#039;&amp;gt;), often simply called &amp;#039;&amp;#039;&amp;#039;Lin&amp;#039;&amp;#039;&amp;#039;, is an alien from the planet [[Iaden]], and a major character in [[Magi Soldat]].&lt;br /&gt;
&lt;br /&gt;
== Appearance ==&lt;br /&gt;
Dilalin is a young woman of figurine-like stature, being approximately 30cm (1ft) tall. She is easily mistaken for a doll from a distance.&amp;lt;ref&amp;gt;[http://magisoldat.com/?p=11 Magi Soldat p.11]&amp;lt;/ref&amp;gt; She has long, vibrantly neon-blue hair and brilliant purple eyes. Her skin tone is somewhat pale with a slight yellowish tinge.&lt;br /&gt;
&lt;br /&gt;
In certain circumstances, Dilalin&amp;#039;s physical coloration may change. Currently, only two distinct &amp;quot;forms&amp;quot; have been observed: &amp;#039;&amp;#039;&amp;#039;Red Mode&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Gold Mode&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;Red Mode&amp;#039;&amp;#039;&amp;#039;, Dilalin&amp;#039;s hair takes on a neon-red&amp;lt;ref&amp;gt;[http://magisoldat.com/?p=13 Magi Soldat p.13]&amp;lt;/ref&amp;gt; or neon-reddish-pink coloration. Her skin may also darken to a more pinkish tone. She was not initially aware that she even possessed this transformation, and has not expressed any understanding of what the form actually does. However, the form appears to be linked to moments of high emotion.&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;Gold Mode&amp;#039;&amp;#039;&amp;#039;, Dilalin&amp;#039;s hair partially or fully takes on a golden hue. What this form signifies or enables is as of yet unclear. It may possibly be a &amp;quot;joke&amp;quot; transformation since its singular in-canon appearance coincided with Dilalin summoning a parody [https://gaogaigar.fandom.com/wiki/Goldion_Hammer Goldion Hammer].&lt;br /&gt;
&lt;br /&gt;
==== Attire ====&lt;br /&gt;
She is almost always wearing her military uniform, a [https://en.wikipedia.org/wiki/Japanese_school_uniform seifuku-like] outfit that is mostly light and dark grey with orange accents. She wears a matching headband as well. She wears thigh-high leggings with built-in soles beneath the feet.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Dilalin is a very energetic young girl. Compelled by her line of duty, she tends to get carried away with her efforts and, as such, is not above being blunt toward, shouting at, or hitting people who fail to cooperate.&lt;br /&gt;
&lt;br /&gt;
When speaking Japanese, due to translation errors from [[Iali|her native tongue]], she refers to herself as &amp;#039;&amp;#039;&amp;#039;この僕&amp;#039;&amp;#039;&amp;#039; &amp;lt;&amp;#039;&amp;#039;kono boku&amp;#039;&amp;#039;, lit. &amp;quot;this me&amp;quot;, stylized &amp;quot;this self&amp;quot;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
&lt;br /&gt;
=== Magi Soldat ===&lt;br /&gt;
Dilalin travels to Earth, allegedly, for the reason of protecting it from some unknown enemy. She attempts to contact [[Itsumi Madoka]].&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
During the initial conception phase of Magi Soldat, [[Star|Rain]] decided to embrace the trope of magical girls having a &amp;quot;mascot&amp;quot;-type character. However, Rain was not particularly enthused by the animal-like designs found in series such as [https://en.wikipedia.org/wiki/Cardcaptor_Sakura Cardcaptor Sakura] and [https://en.wikipedia.org/wiki/Pretty_Cure PreCure]. So, instead, a human-like mascot was designed.&lt;br /&gt;
&lt;br /&gt;
This original incarnation of Dilalin was known as &amp;#039;&amp;#039;&amp;#039;Program&amp;#039;&amp;#039;&amp;#039; (プログラム &amp;lt;&amp;#039;&amp;#039;Puroguramu&amp;#039;&amp;#039;&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
Dilalin&amp;#039;s initial design was inspired heavily by [https://en.wikipedia.org/wiki/Magical_Girl_Lyrical_Nanoha &amp;#039;&amp;#039;Mahou Shoujo Lyrical Nanoha&amp;#039;&amp;#039;], specifically the character of [http://nanoha.wikia.com/wiki/Reinforce_Zwei Reinforce Zwei] (size) and [http://nanoha.wikia.com/wiki/Suzuka_Tsukimura Tsukimura Suzuka] (hair style). She wore a more traditional seifuku for unspecified reasons.&lt;br /&gt;
&lt;br /&gt;
Due to the mostly monochrome nature of the [[Magi Soldat#Prototype|prototype serial]], Dilalin&amp;#039;s hair and eye color were mostly unstated save for one color special page that established her hair and eye color as being both cyan.&amp;lt;ref&amp;gt;[http://studiostarshades.com/reader/magisoldat-d1/30/ Prototype p.30]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the transition to the third, full-color serial, Dilalin gained her current name and design. Her hair was slightly altered in shading to give a more &amp;quot;neon&amp;quot; impression and her eyes were changed to their current purple color. Additionally, though not always readily apparent, her eye shape was made distinct as well.&lt;br /&gt;
&lt;br /&gt;
=== Abilities ===&lt;br /&gt;
In the prototype serial, Dilalin&amp;#039;s ability to fly was accomplished through the use of insectoid/fairy-like wings that she could summon and dismiss at will. She was also able to generate a cloak called &amp;#039;&amp;#039;&amp;#039;Photon Form&amp;#039;&amp;#039;&amp;#039; which rendered her perceptible only to individuals with a sufficiently high [[Psycho-Exotic Energy|exotic potential]]. Inexplicably, people who can see her in her cloaked form see a ball of light rather than Dilalin herself. With the third serial, these abilities were deprecated and replaced with the [[Iadena Technology#Hologram Flight Ring|Hologram Flight Ring]] and [[Iadena Technology#Cloaking Barrier|Cloaking Barrier]].&lt;br /&gt;
&lt;br /&gt;
Strangely, the prototype Dilalin was capable of firing energy beams from her hands.&amp;lt;ref&amp;gt;[http://studiostarshades.com/reader/magisoldat-d1/11/ Prototype p.11]&amp;lt;/ref&amp;gt; It remains to be seen whether the current iteration of Dilalin possesses this power as well.&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
* Like Itsumi Madoka, Dilalin also has a love of strawberries.&lt;br /&gt;
* Dilalin has a penchant for sitting on people&amp;#039;s heads.&lt;br /&gt;
* The name &amp;quot;Dilalin&amp;quot; is a portmanteau of &amp;quot;Dilal&amp;quot; --the [[Iali]] word for &amp;#039;&amp;#039;program&amp;#039;&amp;#039; or &amp;#039;&amp;#039;program data&amp;#039;&amp;#039;-- and &amp;quot;Lin&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=File:Dilalin.png&amp;diff=672</id>
		<title>File:Dilalin.png</title>
		<link rel="alternate" type="text/html" href="index.php?title=File:Dilalin.png&amp;diff=672"/>
		<updated>2021-08-08T17:14:20Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: StarSumiaki uploaded a new version of File:Dilalin.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Cry&amp;diff=671</id>
		<title>Cry</title>
		<link rel="alternate" type="text/html" href="index.php?title=Cry&amp;diff=671"/>
		<updated>2021-02-03T21:35:15Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;{{CharInfo |name = Cry |image = empty.png|228px |age = ??? (Soul); 23 (Body) |bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039; }}  &amp;#039;&amp;#039;&amp;#039;Cry&amp;#039;&amp;#039;&amp;#039; is a Dragon Deity embodying the emotion of &amp;#039;&amp;#039;mourning&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Cry&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|age = ??? (Soul); 23 (Body)&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cry&amp;#039;&amp;#039;&amp;#039; is a [[Dragon Deity]] embodying the emotion of &amp;#039;&amp;#039;mourning&amp;#039;&amp;#039;. She is considered to be of some Scandinavian or Icelandic descent.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Cry is an enigmatic and reserved young woman. She is apparently mute (though it is unknown whether this trait is physical, psychological, or purely voluntary) and only communicates via writing or signing. She tends to embrace brevity and forwardness with her communication.&lt;br /&gt;
&lt;br /&gt;
Being a &amp;#039;&amp;#039;Dragon of Mourning&amp;#039;&amp;#039;, Cry tends to &amp;#039;&amp;#039;cry&amp;#039;&amp;#039;. However, she sheds tears solemnly, rather than sob or wail. Her mourning is not typically toward any specific person or thing, rather she seems to mourn &amp;#039;&amp;#039;life itself&amp;#039;&amp;#039;. Cry once described it on paper as &amp;quot;feeling the mortality of the world as one&amp;quot;. Cry can feel the full spectrum of emotions beyond her sorrow, but rarely physically shows it. She tends to express those emotions through writing in the form of short stories and poetry.&lt;br /&gt;
&lt;br /&gt;
Though her divine purpose is to master and temper her embodied emotion, Cry rejects this duty and instead embraces being consumed by mourning.&lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Being part dragon, Cry has access to draconic abilities and powers. The types and elemental alignments of these abilities and powers remain to be seen, though.&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
* Cry implies that her name is a self-assigned preferred name. Whether she has any other name remains to be seen.&lt;br /&gt;
* [[Word of God]] jokes that Cry cannot speak because every time she tries to utter a sound, she accidentally fires an energy blast akin to the &amp;quot;Atomic Breath&amp;quot; used by [https://en.wikipedia.org/wiki/Godzilla Godzilla].&lt;br /&gt;
* Cry&amp;#039;s body scarring is never explained, but is confirmed to &amp;#039;&amp;#039;not&amp;#039;&amp;#039; be the result of abuse or self-harm.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Dragon_Deity&amp;diff=670</id>
		<title>Dragon Deity</title>
		<link rel="alternate" type="text/html" href="index.php?title=Dragon_Deity&amp;diff=670"/>
		<updated>2020-09-14T17:16:15Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;A &amp;#039;&amp;#039;&amp;#039;Dragon Deity&amp;#039;&amp;#039;&amp;#039; is form of demi-god within the Cosmos-4 canon. They are humanoid beings with draconic traits and powers who live in relative peace and harmony among m...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Dragon Deity&amp;#039;&amp;#039;&amp;#039; is form of demi-god within the [[Cosmos-4]] canon. They are humanoid beings with draconic traits and powers who live in relative peace and harmony among mortals of the earth.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Dragon Deities are not a separate species in the evolutionary sense. Rather, they are the result of a dragon&amp;#039;s soul inhabiting a human body and using that body to incarnate into a physical form.&lt;br /&gt;
&lt;br /&gt;
=== Appearance ===&lt;br /&gt;
A newborn Dragon Deity initially lacks most of the defining physical traits of its kind, and is largely indistinguishable from a human infant. Aside from yellow irides and the shape of the pupils, there are no noticeable outward physiological differences.&lt;br /&gt;
&lt;br /&gt;
When a Dragon Deity reaches adolescence, they begin to develop their draconic traits alongside their human secondary sexual characteristics. These traits include:&lt;br /&gt;
&lt;br /&gt;
* The emergence of one or more horns from their head.&lt;br /&gt;
* The growth of a scaled tail from the small of their back.&lt;br /&gt;
* Elongation of the pupil from an ellipsoid shape to a more prominent vertical slit.&lt;br /&gt;
* (Occasionally) hyper-keratinization of the phalanges, resulting in accelerated growth of finger and toe nails.&lt;br /&gt;
* (Rarely) chitinization of some areas of skin, resulting in patches of scales elsewhere on the body.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, unlike typical secondary sexual characteristics, these draconic traits tend to appear rather immediately and suddenly over the course of days or weeks. These traits also do not exhibit any sexual dimorphism, and a Dragon Deity will exhibit any of these traits irrespective of biological sex.&lt;br /&gt;
&lt;br /&gt;
=== Biology and Reproduction ===&lt;br /&gt;
Since a Dragon Deity is biologically mostly human, Dragon Deities can reproduce with humans or even other Dragon Deities if the opportunity arises. However, the offspring will always be purebred human as it lacks the dragon&amp;#039;s soul necessary to invoke the draconic traits.&lt;br /&gt;
&lt;br /&gt;
Some human cultures still believe that mating with a Dragon Deity strengthens the human bloodline, but there is no scientific basis for this belief.&lt;br /&gt;
&lt;br /&gt;
=== Lifespan ===&lt;br /&gt;
Dragon Deities do not possess any exceptional longevity compared to a normal human. Though they may live to centenarian ages more easily, they do grow old and pass away like the humans around them.&lt;br /&gt;
&lt;br /&gt;
=== Incarnation Cycle ===&lt;br /&gt;
Unlike humans, a Dragon Deity&amp;#039;s soul does not travel to the afterlife upon expiration of the physical body. Rather, the dragon&amp;#039;s soul returns to [[Dragon Realm]] to be incarnated into another mortal form. This process may happen dozens of times; however, it is not merely for leisure or immortality.&lt;br /&gt;
&lt;br /&gt;
The Dragon Deity&amp;#039;s mortal forms serve a specific purpose. In each form, the Dragon Deity must learn how to feel out, temper, and control a specific emotion or emotional state. The Deity will not &amp;#039;&amp;#039;lack&amp;#039;&amp;#039; other emotions and states, but the incarnation&amp;#039;s specific emotion will always be far more pronounced.&lt;br /&gt;
&lt;br /&gt;
When a dragon&amp;#039;s soul has successfully mastered its emotional spectrum, it finally gains the right to assume the form of an [[&amp;#039;&amp;#039;Immortal Dragon&amp;#039;&amp;#039;]].&lt;br /&gt;
&lt;br /&gt;
=== Cultural Impact ===&lt;br /&gt;
As Dragon Deities do not intentionally hide their status from humans, they have become significantly intertwined with human culture since the days of ancient history. Their impact on various cultures have been both positive and negative.&lt;br /&gt;
&lt;br /&gt;
Many eastern societies tend to view Dragon Deities in a positive light. Their people consider it an honor to meet and help a Dragon Deity, and revere any family chosen to birth a Deity&amp;#039;s next incarnation. Dragon Deities are also often exempted from certain mandates such as military service or required education. Many cities even hold festivals to encourage the appearance of a Deity among their populations.&lt;br /&gt;
&lt;br /&gt;
Western societies tend to be split along theological lines over whether Dragon Deities are a desirable or undesirable facet of life. Some demographics take offense to the incarnation process and view it as depriving an unborn child of a human soul, or a human soul of a child&amp;#039;s body.&lt;br /&gt;
&lt;br /&gt;
Dragon Deities often find popularity in [https://en.wikipedia.org/wiki/Furry_fandom furry sub-culture].&lt;br /&gt;
&lt;br /&gt;
== Powers and Abilities ==&lt;br /&gt;
Dragon Deities possess a remarkably greater [https://en.wikipedia.org/wiki/Qi Qi] compared to most humans. Thanks to this boon, Dragon Deities tend to be exceptionally adept at [https://en.wikipedia.org/wiki/Qigong#Contemporary_qigong qigong] and make for excellent martial artists and practitioners of traditional medicine.&lt;br /&gt;
&lt;br /&gt;
Personal anecdotes across the world suggest that a sufficiently angered Dragon Deity can also release their Qi in a mighty, blazing aura.&lt;br /&gt;
&lt;br /&gt;
== List of Dragon Deities ==&lt;br /&gt;
* [[Feilong]]&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
* When a Dragon Deity approaches its draconic puberty, they tend to gain a ravenous appetite in order to accumulate the necessary caloric energy.&lt;br /&gt;
* Though referred to as &amp;quot;horns&amp;quot;, the protuberances on Dragon Deities&amp;#039; heads are anatomically antlers.&lt;br /&gt;
* Dragon Deities cannot truly &amp;quot;fail&amp;quot; in their task of self-mastery. If one fails to master a given emotion(al state), it is free to try again with another future incarnation.&lt;br /&gt;
* Dragon Deities do not have free access to the memories of previous mortal incarnations. Each mortal life is presented as a clean slate.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Feilong&amp;diff=669</id>
		<title>Feilong</title>
		<link rel="alternate" type="text/html" href="index.php?title=Feilong&amp;diff=669"/>
		<updated>2020-09-13T05:25:15Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;{{CharInfo |name = Feilong |katakana = 悱龍 |romaji = Feilong |image = empty.png|228px |age = ??? (Soul); 20 (Body) |bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039; }}  &amp;#039;&amp;#039;&amp;#039;Feilong&amp;#039;&amp;#039;&amp;#039; is a young D...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Feilong&lt;br /&gt;
|katakana = 悱龍&lt;br /&gt;
|romaji = Feilong&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|age = ??? (Soul); 20 (Body)&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feilong&amp;#039;&amp;#039;&amp;#039; is a young [[Dragon Deity]] embodying the emotion of &amp;#039;&amp;#039;sloth&amp;#039;&amp;#039; and the element of &amp;#039;&amp;#039;water&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
=== Early Life ===&lt;br /&gt;
Like all Dragon Deities, Feilong was not traditionally &amp;#039;&amp;#039;born&amp;#039;&amp;#039;, per se. Rather, she was found as an infant in a bundle of [[dragonstone]] and adopted by a kindly middle-aged couple.&lt;br /&gt;
&lt;br /&gt;
=== Teenage Years ===&lt;br /&gt;
Feilong endured a difficult puberty, as her body began to manifest its dragon traits and powers. She also gained an incredible bust size.&lt;br /&gt;
&lt;br /&gt;
== Abilities ==&lt;br /&gt;
Being part dragon, Feilong has access to a number of draconic powers. However, due to her lack of energy and training, she tends to never use them and struggles when she does.&lt;br /&gt;
&lt;br /&gt;
==== Dragon Fist ====&lt;br /&gt;
Feilong&amp;#039;s arm becomes enshrouded in a blazing energy resembling a proper dragon&amp;#039;s arm, hand, and claws.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Sakura_Naomi&amp;diff=668</id>
		<title>Sakura Naomi</title>
		<link rel="alternate" type="text/html" href="index.php?title=Sakura_Naomi&amp;diff=668"/>
		<updated>2020-04-30T23:26:23Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Sakura Naomi&lt;br /&gt;
|katakana = TBD&lt;br /&gt;
|romaji = Sakura Naomi&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|age = 23&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
|home = Wakkanai, Hokkaido (former)&amp;lt;br /&amp;gt;Sapporo, Hokkaido (current)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sakura Naomi&amp;#039;&amp;#039;&amp;#039; (sometimes known by the nickname &amp;#039;&amp;#039;&amp;#039;Cactus&amp;#039;&amp;#039;&amp;#039;) is an independent original character with no specific source material.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Naomi is a geek (or perhaps nerd) at her core. She loves science, science fiction, and the mysteries of the universe. In her element, she is known to hyper-focus to the point of others needing to intervene to make sure she eats and sleeps. She believes that humanity is on the cusp of &amp;#039;the next great discovery&amp;#039; but cannot put into words what such a discovery would be.&lt;br /&gt;
&lt;br /&gt;
Though outwardly excitable and social, Naomi is a strong introvert. When her social battery drains, she tends to become anxious and testy, and yearns for solitude. Typically, it is this need for recharging that often fuels her hyper-focus.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
=== Education ===&lt;br /&gt;
Naomi attended Hokkaido University where she double-majored in aerospace engineering and physics. Upon graduating, she took a one year academic break and then returned to the university to pursue a master&amp;#039;s degree in physics.&lt;br /&gt;
&lt;br /&gt;
Currently, she is working on her Master&amp;#039;s Thesis on excitation of the Higgs Field and gravimetric distortions of space-time.&lt;br /&gt;
&lt;br /&gt;
=== Career ===&lt;br /&gt;
Outside of academic research and her thesis, Naomi has occasionally worked as a freelance science-fiction proofreader, and as a waitress for a local independent burger restaurant.&lt;br /&gt;
&lt;br /&gt;
=== Personal Life ===&lt;br /&gt;
When not working, Naomi enjoys space operas and nature hikes with a friend&amp;#039;s dog.&lt;br /&gt;
&lt;br /&gt;
==== Relationships ====&lt;br /&gt;
For the majority of her life, Naomi had never outwardly expressed interest in relationships with other people and declined the few invitations from others. When her parents attempted to arrange a marriage for her, she swiftly dismantled the entire situation. Her colleagues at her university occasionally joke that she is married to science itself, and that her thesis is her child.&lt;br /&gt;
&lt;br /&gt;
Naomi has stated that her lack of interest in relationships and marriage has nothing to do with a lack of interest in people; rather, she simply feels she would not find satisfaction in dedicating herself to a singular person, and would rather keep to a dynamic circle of close individuals.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Sakura_Naomi&amp;diff=667</id>
		<title>Sakura Naomi</title>
		<link rel="alternate" type="text/html" href="index.php?title=Sakura_Naomi&amp;diff=667"/>
		<updated>2020-04-29T20:58:30Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;{{CharInfo |name = Sakura Naomi |katakana = TBD |romaji = Sakura Naomi |image = empty.png|228px |age = 23 |bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039; |home = Wakkanai, Hokkaido }}  &amp;#039;&amp;#039;&amp;#039;Sakura Nao...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Sakura Naomi&lt;br /&gt;
|katakana = TBD&lt;br /&gt;
|romaji = Sakura Naomi&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|age = 23&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
|home = Wakkanai, Hokkaido&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sakura Naomi&amp;#039;&amp;#039;&amp;#039; (sometimes known by the nickname &amp;#039;&amp;#039;&amp;#039;Cactus&amp;#039;&amp;#039;&amp;#039;) is an independent original character with no specific source material.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Naomi is a geek (or perhaps nerd) at her core. She loves science, science fiction, and the mysteries of the universe. In her element, she is known to hyper-focus to the point of others needing to intervene to make sure she eats and sleeps. She believes that humanity is on the cusp of &amp;#039;the next great discovery&amp;#039; but cannot put into words what such a discovery would be.&lt;br /&gt;
&lt;br /&gt;
Though outwardly excitable and social, Naomi is a strong introvert. When her social battery drains, she tends to become anxious and testy, and yearns for solitude. Typically, it is this need for recharging that often fuels her hyper-focus.&lt;br /&gt;
&lt;br /&gt;
== Personal Life ==&lt;br /&gt;
Naomi spends most of her time researching and writing her Master&amp;#039;s Thesis on excitation of the Higgs Field and gravimetric distortions of space-time.&lt;br /&gt;
When not at work, Naomi enjoys space operas and nature hikes with her dog.&lt;br /&gt;
&lt;br /&gt;
=== Relationships ===&lt;br /&gt;
For the majority of her life, Naomi had never outwardly expressed interest in relationships with other people and declined the few invitations from others. When her parents attempted to arrange a marriage for her, she swiftly dismantled the entire situation. Her colleagues at her university occasionally joke that she is married to science itself, and that her thesis is her child.&lt;br /&gt;
&lt;br /&gt;
Naomi has stated that her lack of interest in relationships and marriage has nothing to do with a lack of interest in people; rather, she simply feels she would not find satisfaction in dedicating herself to a singular person, and would rather keep to a dynamic circle of close individuals.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Obscure_Information&amp;diff=666</id>
		<title>Obscure Information</title>
		<link rel="alternate" type="text/html" href="index.php?title=Obscure_Information&amp;diff=666"/>
		<updated>2020-02-07T02:31:51Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article exists as a quick reference for &amp;#039;&amp;#039;&amp;#039;obscure information&amp;#039;&amp;#039;&amp;#039; about various comic series in the form of questions and answers. The point of this article is to enable readers to quickly find canon information that may not be explicitly pointed out in comic pages, may not be properly documented on this wiki, or otherwise may be difficult to check.&lt;br /&gt;
&lt;br /&gt;
== Magi Soldat ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Magi Soldat}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===Planets, Ships, Space Travel===&lt;br /&gt;
====Where is Iaden?====&lt;br /&gt;
The planet [[Iaden]] is located in &amp;#039;&amp;#039;Messier 81&amp;#039;&amp;#039;, a galaxy approximately 12 million light-years from Earth.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin travel from Iaden to Earth?====&lt;br /&gt;
Dilalin&amp;#039;s ship, the &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039;, possesses FTL (Faster Than Light) transit capabilities. It travels from one point in our universe to another by jumping through tunnels through [[subspace]]. These jumps take exponentially less time than traveling through regular space at the speed of light.&lt;br /&gt;
&lt;br /&gt;
====How do subspace jumps exceed the speed of light?====&lt;br /&gt;
They technically don&amp;#039;t. A unique property of subspace enables bending the actual fabric of subspace-time itself and &amp;quot;warping&amp;quot; it around a ship. This process is less of a &amp;quot;movement&amp;quot; and more of a &amp;quot;displacement&amp;quot;. The displacement &amp;#039;&amp;#039;of&amp;#039;&amp;#039; subspace around matter isn&amp;#039;t bound by the speed limit of matter &amp;#039;&amp;#039;through&amp;#039;&amp;#039; subspace. It can be likened to Star Trek&amp;#039;s warp travel but only when in subspace.&lt;br /&gt;
&lt;br /&gt;
====How fast do ships &amp;quot;displace&amp;quot; through subspace?====&lt;br /&gt;
The rate of displacement is proportional to the strength of the &amp;#039;&amp;#039;spacial field&amp;#039;&amp;#039; (i.e., warp field) generated by the ship utilizing the tunnel. Typically, the length of tunnel and strength of field are calculated together such that the jump displacement itself is functionally instantaneous.&lt;br /&gt;
&lt;br /&gt;
====How are subspace tunnels created?====&lt;br /&gt;
Interactions between rare subatomic particles can open a temporary hole between our &amp;quot;regular&amp;quot; space and subspace. These particles must be created on-demand in particle accelerators (aka colliders). A tunnel is established by performing this interaction twice: once in space and again a calculated distance into subspace. Some large ships do this all on their own. Many smaller ships make use of &amp;quot;subspace gates&amp;quot; that do the work for them.&lt;br /&gt;
&lt;br /&gt;
====Why don&amp;#039;t ships travel through subspace in a &amp;#039;normal&amp;#039; fashion? Why instantaneous jumps?====&lt;br /&gt;
A ship can travel through subspace on standard sub-light engine propulsion or even with a very weak spacial field, but this would defeat the point of entering subspace. A ship displacing at a reasonable FTL velocity would be maneuvering far too quickly to navigate effectively as no computer can calculate quickly enough to make adjustments. Since the gravitational pull of celestial objects in regular space also affects the underlying region of subspace in the form of &amp;quot;gravitational turbulence&amp;quot;, reckless subspace travel risks damaging ships or exposing them to undesirable time dilation effects.&lt;br /&gt;
&lt;br /&gt;
Jumping through tunnels also means knowing what is on the other side of the tunnel, and ensuring the exit point is clear of unexpected debris or other objects.&lt;br /&gt;
&lt;br /&gt;
====Where is Dilalin&amp;#039;s ship?====&lt;br /&gt;
The &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039; is hiding behind Jupiter, avoiding the prying eyes of human astronomers.&lt;br /&gt;
&lt;br /&gt;
====How do people get to and from Dilalin&amp;#039;s ship?====&lt;br /&gt;
Same method ships use to travel between points in space: subspace tunnels. This method of transit is meant for even shorter distances than Jupiter-Earth, but it is still doable. This version of the process involves extra steps to compensate for both entry and exit point moving relative to one another, and to safeguard the individuals in transit. These extra steps are referred to colloquially as &amp;quot;locking&amp;quot; the tunnel.&lt;br /&gt;
&lt;br /&gt;
===Characters===&lt;br /&gt;
====Why does Dilalin speak weirdly?====&lt;br /&gt;
She doesn&amp;#039;t know Japanese (which is rendered in English for the reader). Her ship assists her in translating between her own language and Japanese using machine learning but such a technology is never perfect.&lt;br /&gt;
&lt;br /&gt;
====Why does Dilalin refer to Earth as &amp;quot;Gaia&amp;quot;?====&lt;br /&gt;
Her people have known about Earth since the days of ancient Greece (circa 9th century BCE) if not earlier. Since Iadena prefer to use native terms rather than invent their own, they likely lifted the name &amp;#039;&amp;#039;Gaia&amp;#039;&amp;#039;/&amp;#039;&amp;#039;Gaea&amp;#039;&amp;#039; from the humans of that era to put in their notes.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin fly?====&lt;br /&gt;
Her body is small and light enough to use an anti-gravity technology colloquially referred to as &amp;quot;flight rings&amp;quot;. They&amp;#039;re a form of technology that lacks a lot of practical application due to energy and weight constraints, but happens to be perfectly suited for keeping small things aloft.&lt;br /&gt;
&lt;br /&gt;
====What does Dilalin eat when she&amp;#039;s shown eating?====&lt;br /&gt;
Effectively an MRE (Meal Ready to Eat). It&amp;#039;s semi-gelatinous and scientifically designed to provide all the nutrients she needs. It apparently tastes like a medley of various ripe fruits.&lt;br /&gt;
&lt;br /&gt;
====Why does Dilalin eat food on a skewer? Why is the skewer so big?====&lt;br /&gt;
It&amp;#039;s the one common utensil in Iadena culture. They prefer food to be presented in a manageable form that can be eaten by hand, drunk, or skewered. It&amp;#039;s big because Lin is small.&lt;br /&gt;
&lt;br /&gt;
====Are all of Dilalin&amp;#039;s people tiny?====&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
====Why does Kaemi speak weirdly?====&lt;br /&gt;
Kaemi speaks in a different dialect than the local &amp;#039;&amp;#039;Hokkaido-ben&amp;#039;&amp;#039; dialect spoken by others. There is no canon specific dialect, but it loosely draws a few elements from certain stereotypes such as &amp;quot;rural&amp;quot; &amp;#039;&amp;#039;touhoku-ben&amp;#039;&amp;#039; and &amp;quot;brash&amp;quot; &amp;#039;&amp;#039;kansai-ben&amp;#039;&amp;#039;. I.e., she&amp;#039;s just informal and rude.&lt;br /&gt;
&lt;br /&gt;
[https://tvtropes.org/pmwiki/pmwiki.php/UsefulNotes/JapaneseDialects TVTropes] has a useful primer on Japanese dialects.&lt;br /&gt;
&lt;br /&gt;
====Why does Kaemi call Itsumi &amp;quot;Ami&amp;quot;? Why does she call Dilalin &amp;quot;Blue&amp;quot;?====&lt;br /&gt;
Kaemi has difficulties understanding relationship standings with people, and so prefers to forgo honorifics and even names entirely, and instead use her own terms. &amp;quot;Ami&amp;quot; is simply French for &amp;quot;friend&amp;quot;. She calls Dilalin &amp;quot;Blue&amp;quot; because Dilalin&amp;#039;s hair is blue.&lt;br /&gt;
&lt;br /&gt;
===Plot===&lt;br /&gt;
====Why was the plot maguffin taken to Earth?====&lt;br /&gt;
Humans radiate an energy signature that masks the energy signature of the plot maguffin (the singularity fragment). Incidentally, that energy signature correlates with latent, dormant &amp;#039;&amp;#039;exotic abilities&amp;#039;&amp;#039; that, for all intents and purposes, can be called magic.&lt;br /&gt;
&lt;br /&gt;
====What is Kaemi&amp;#039;s exotic ability? Why does she struggle with it?====&lt;br /&gt;
Currently unknown. Because it&amp;#039;s currently unknown.&lt;br /&gt;
&lt;br /&gt;
====Why is Itsumi&amp;#039;s power easily figured out? Why does she seem very good at using it?====&lt;br /&gt;
Her power had a tell when it awoke. It was extrapolated from there. She isn&amp;#039;t good at it, but she does have her attire visor and link with Dilalin&amp;#039;s ship to help her.&lt;br /&gt;
&lt;br /&gt;
====Why did Itsumi make her second spear out of asphalt?====&lt;br /&gt;
That&amp;#039;s the only abundant material she had other than sidewalk concrete. She was provided the metals for her first spear by Dilalin.&lt;br /&gt;
&lt;br /&gt;
====What happened to the first spear, anyway?====&lt;br /&gt;
It was recovered after the battle. Reduce, reuse, recycle.&lt;br /&gt;
&lt;br /&gt;
===Plot Maguffin===&lt;br /&gt;
====What is the God Singularity?====&lt;br /&gt;
The God Singularity is a physical celestial object that produces an unlimited amount of energy. The composition of the singularity and the process through which the energy is produced are undetectable and possibly unknowable, indicating the singularity may be &amp;#039;&amp;#039;anomalous to the universe&amp;#039;&amp;#039;. The singularity may be fragmented and recombined seamlessly, with each fragment retaining the same energy producing functionality. The bandwidth of a fragment of the singularity is proportional to the mass of the fragment. The actual output measurement of the singularity is classified but considered to be in the gigawatt hour (terajoule) range.&lt;br /&gt;
&lt;br /&gt;
====Where is the God Singularity?====&lt;br /&gt;
The actual location of the God Singularity is classified, but is touted as being &amp;quot;in the center of the universe&amp;quot;. It is protected by an [[Iadena]] military fleet.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Obscure_Information&amp;diff=665</id>
		<title>Obscure Information</title>
		<link rel="alternate" type="text/html" href="index.php?title=Obscure_Information&amp;diff=665"/>
		<updated>2020-02-06T21:19:31Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article exists as a quick reference for &amp;#039;&amp;#039;&amp;#039;obscure information&amp;#039;&amp;#039;&amp;#039; about various comic series in the form of questions and answers. The point of this article is to enable readers to quickly find canon information that may not be explicitly pointed out in comic pages, may not be properly documented on this wiki, or otherwise may be difficult to check.&lt;br /&gt;
&lt;br /&gt;
== Magi Soldat ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Magi Soldat}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===Planets, Ships, Space Travel===&lt;br /&gt;
====Where is Iaden?====&lt;br /&gt;
The planet [[Iaden]] is located in &amp;#039;&amp;#039;Messier 81&amp;#039;&amp;#039;, a galaxy approximately 12 million light-years from Earth.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin travel from Iaden to Earth?====&lt;br /&gt;
Dilalin&amp;#039;s ship, the &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039;, possesses FTL (Faster Than Light) transit capabilities. It travels from one point in our universe to another by jumping through tunnels through [[subspace]]. These jumps take exponentially less time than traveling through regular space at the speed of light.&lt;br /&gt;
&lt;br /&gt;
====How do subspace jumps exceed the speed of light?====&lt;br /&gt;
They technically don&amp;#039;t. A unique property of subspace enables bending the actual fabric of subspace-time itself and &amp;quot;warping&amp;quot; it around a ship. This process is less of a &amp;quot;movement&amp;quot; and more of a &amp;quot;displacement&amp;quot;. The displacement &amp;#039;&amp;#039;of&amp;#039;&amp;#039; subspace around matter isn&amp;#039;t bound by the speed limit of matter &amp;#039;&amp;#039;through&amp;#039;&amp;#039; subspace. It can be likened to Star Trek&amp;#039;s warp travel but only when in subspace.&lt;br /&gt;
&lt;br /&gt;
====How fast do ships &amp;quot;displace&amp;quot; through subspace?====&lt;br /&gt;
The rate of displacement is proportional to the strength of the &amp;#039;&amp;#039;spacial field&amp;#039;&amp;#039; (i.e., warp field) generated by the ship utilizing the tunnel. Typically, the length of tunnel and strength of field are calculated together such that the jump displacement itself is functionally instantaneous.&lt;br /&gt;
&lt;br /&gt;
====How are subspace tunnels created?====&lt;br /&gt;
Interactions between rare subatomic particles can open a temporary hole between our &amp;quot;regular&amp;quot; space and subspace. These particles must be created on-demand in particle accelerators (aka colliders). A tunnel is established by performing this interaction twice: once in space and again a calculated distance into subspace. Some large ships do this all on their own. Many smaller ships make use of &amp;quot;subspace gates&amp;quot; that do the work for them.&lt;br /&gt;
&lt;br /&gt;
====Why don&amp;#039;t ships travel through subspace in a &amp;#039;normal&amp;#039; fashion? Why instantaneous jumps?====&lt;br /&gt;
A ship can travel through subspace on standard sub-light engine propulsion or even with a very weak spacial field, but this would defeat the point of entering subspace. A ship displacing at a reasonable FTL velocity would be maneuvering far too quickly to navigate effectively as no computer can calculate quickly enough to make adjustments. Since the gravitational pull of celestial objects in regular space also affects the underlying region of subspace in the form of &amp;quot;gravitational turbulence&amp;quot;, reckless subspace travel risks damaging ships or exposing them to undesirable time dilation effects.&lt;br /&gt;
&lt;br /&gt;
Jumping through tunnels also means knowing what is on the other side of the tunnel, and ensuring the exit point is clear of unexpected debris or other objects.&lt;br /&gt;
&lt;br /&gt;
====Where is Dilalin&amp;#039;s ship?====&lt;br /&gt;
The &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039; is hiding behind Jupiter, avoiding the prying eyes of human astronomers.&lt;br /&gt;
&lt;br /&gt;
====How do people get to and from Dilalin&amp;#039;s ship?====&lt;br /&gt;
Same method ships use to travel between points in space: subspace tunnels. This method of transit is meant for even shorter distances than Jupiter-Earth, but it is still doable. This version of the process involves extra steps to compensate for both entry and exit point moving relative to one another, and to safeguard the individuals in transit. These extra steps are referred to colloquially as &amp;quot;locking&amp;quot; the tunnel.&lt;br /&gt;
&lt;br /&gt;
===Characters===&lt;br /&gt;
====Why does Dilalin speak weirdly?====&lt;br /&gt;
She doesn&amp;#039;t know Japanese (which is rendered in English for the reader). Her ship assists her in translating between her own language and Japanese using machine learning but such a technology is never perfect.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin fly?====&lt;br /&gt;
Her body is small and light enough to use an anti-gravity technology colloquially referred to as &amp;quot;flight rings&amp;quot;. They&amp;#039;re a form of technology that lacks a lot of practical application due to energy and weight constraints, but happens to be perfectly suited for keeping small things aloft.&lt;br /&gt;
&lt;br /&gt;
====What does Dilalin eat when she&amp;#039;s shown eating?====&lt;br /&gt;
Effectively an MRE (Meal Ready to Eat). It&amp;#039;s semi-gelatinous and scientifically designed to provide all the nutrients she needs. It apparently tastes like a medley of various ripe fruits.&lt;br /&gt;
&lt;br /&gt;
====Why does Dilalin eat food on a skewer? Why is the skewer so big?====&lt;br /&gt;
It&amp;#039;s the one common utensil in Iadena culture. They prefer food to be presented in a manageable form that can be eaten by hand, drunk, or skewered. It&amp;#039;s big because Lin is small.&lt;br /&gt;
&lt;br /&gt;
====Are all of Dilalin&amp;#039;s people tiny?====&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
====Why does Kaemi speak weirdly?====&lt;br /&gt;
Kaemi speaks in a different dialect than the local &amp;#039;&amp;#039;Hokkaido-ben&amp;#039;&amp;#039; dialect spoken by others. There is no canon specific dialect, but it loosely draws a few elements from certain stereotypes such as &amp;quot;rural&amp;quot; &amp;#039;&amp;#039;touhoku-ben&amp;#039;&amp;#039; and &amp;quot;brash&amp;quot; &amp;#039;&amp;#039;kansai-ben&amp;#039;&amp;#039;. I.e., she&amp;#039;s just informal and rude.&lt;br /&gt;
&lt;br /&gt;
[https://tvtropes.org/pmwiki/pmwiki.php/UsefulNotes/JapaneseDialects TVTropes] has a useful primer on Japanese dialects.&lt;br /&gt;
&lt;br /&gt;
====Why does Kaemi call Itsumi &amp;quot;Ami&amp;quot;? Why does she call Dilalin &amp;quot;Blue&amp;quot;?====&lt;br /&gt;
Kaemi has difficulties understanding relationship standings with people, and so prefers to forgo honorifics and even names entirely, and instead use her own terms. &amp;quot;Ami&amp;quot; is simply French for &amp;quot;friend&amp;quot;. She calls Dilalin &amp;quot;Blue&amp;quot; because Dilalin&amp;#039;s hair is blue.&lt;br /&gt;
&lt;br /&gt;
===Plot===&lt;br /&gt;
====Why was the plot maguffin taken to Earth?====&lt;br /&gt;
Humans radiate an energy signature that masks the energy signature of the plot maguffin (the singularity fragment). Incidentally, that energy signature correlates with latent, dormant &amp;#039;&amp;#039;exotic abilities&amp;#039;&amp;#039; that, for all intents and purposes, can be called magic.&lt;br /&gt;
&lt;br /&gt;
====What is Kaemi&amp;#039;s exotic ability? Why does she struggle with it?====&lt;br /&gt;
Currently unknown. Because it&amp;#039;s currently unknown.&lt;br /&gt;
&lt;br /&gt;
====Why is Itsumi&amp;#039;s power easily figured out? Why does she seem very good at using it?====&lt;br /&gt;
Her power had a tell when it awoke. It was extrapolated from there. She isn&amp;#039;t good at it, but she does have her attire visor and link with Dilalin&amp;#039;s ship to help her.&lt;br /&gt;
&lt;br /&gt;
====Why did Itsumi make her second spear out of asphalt?====&lt;br /&gt;
That&amp;#039;s the only abundant material she had other than sidewalk concrete. She was provided the metals for her first spear by Dilalin.&lt;br /&gt;
&lt;br /&gt;
====What happened to the first spear, anyway?====&lt;br /&gt;
It was recovered after the battle. Reduce, reuse, recycle.&lt;br /&gt;
&lt;br /&gt;
===Plot Maguffin===&lt;br /&gt;
====What is the God Singularity?====&lt;br /&gt;
The God Singularity is a physical celestial object that produces an unlimited amount of energy. The composition of the singularity and the process through which the energy is produced are undetectable and possibly unknowable, indicating the singularity may be &amp;#039;&amp;#039;anomalous to the universe&amp;#039;&amp;#039;. The singularity may be fragmented and recombined seamlessly, with each fragment retaining the same energy producing functionality. The bandwidth of a fragment of the singularity is proportional to the mass of the fragment. The actual output measurement of the singularity is classified but considered to be in the gigawatt hour (terajoule) range.&lt;br /&gt;
&lt;br /&gt;
====Where is the God Singularity?====&lt;br /&gt;
The actual location of the God Singularity is classified, but is touted as being &amp;quot;in the center of the universe&amp;quot;. It is protected by an [[Iadena]] military fleet.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Obscure_Information&amp;diff=664</id>
		<title>Obscure Information</title>
		<link rel="alternate" type="text/html" href="index.php?title=Obscure_Information&amp;diff=664"/>
		<updated>2020-02-04T19:02:25Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article exists as a quick reference for &amp;#039;&amp;#039;&amp;#039;obscure information&amp;#039;&amp;#039;&amp;#039; about various comic series in the form of questions and answers. The point of this article is to enable readers to quickly find canon information that may not be explicitly pointed out in comic pages, may not be properly documented on this wiki, or otherwise may be difficult to check.&lt;br /&gt;
&lt;br /&gt;
== Magi Soldat ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Magi Soldat}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
====Where is Iaden?====&lt;br /&gt;
The planet [[Iaden]] is located in &amp;#039;&amp;#039;Messier 81&amp;#039;&amp;#039;, a galaxy approximately 12 million light-years from Earth.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin travel from Iaden to Earth?====&lt;br /&gt;
Dilalin&amp;#039;s ship, the &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039;, possesses FTL (Faster Than Light) transit capabilities. It travels from one point in our universe to another by jumping through tunnels through [[subspace]]. These jumps take exponentially less time than traveling through regular space at the speed of light.&lt;br /&gt;
&lt;br /&gt;
====How do subspace jumps exceed the speed of light?====&lt;br /&gt;
They technically don&amp;#039;t. A unique property of subspace enables bending the actual fabric of subspace-time itself and &amp;quot;warping&amp;quot; it around a ship. This process is less of a &amp;quot;movement&amp;quot; and more of a &amp;quot;displacement&amp;quot;. The displacement &amp;#039;&amp;#039;of&amp;#039;&amp;#039; subspace around matter isn&amp;#039;t bound by the speed limit of matter &amp;#039;&amp;#039;through&amp;#039;&amp;#039; subspace. It can be likened to Star Trek&amp;#039;s warp travel but only when in subspace.&lt;br /&gt;
&lt;br /&gt;
====How fast do ships &amp;quot;displace&amp;quot; through subspace?====&lt;br /&gt;
The rate of displacement is proportional to the strength of the &amp;#039;&amp;#039;spacial field&amp;#039;&amp;#039; (i.e., warp field) generated by the ship utilizing the tunnel. Typically, the length of tunnel and strength of field are calculated together such that the jump displacement itself is functionally instantaneous.&lt;br /&gt;
&lt;br /&gt;
====How are subspace tunnels created?====&lt;br /&gt;
Interactions between rare subatomic particles can open a temporary hole between our &amp;quot;regular&amp;quot; space and subspace. These particles must be created on-demand in particle accelerators (aka colliders). A tunnel is established by performing this interaction twice: once in space and again a calculated distance into subspace. Some large ships do this all on their own. Many smaller ships make use of &amp;quot;subspace gates&amp;quot; that do the work for them.&lt;br /&gt;
&lt;br /&gt;
====Why don&amp;#039;t ships travel through subspace in a &amp;#039;normal&amp;#039; fashion? Why instantaneous jumps?====&lt;br /&gt;
A ship can travel through subspace on standard sub-light engine propulsion or even with a very weak spacial field, but this would defeat the point of entering subspace. A ship displacing at a reasonable FTL velocity would be maneuvering far too quickly to navigate effectively as no computer can calculate quickly enough to make adjustments. Since the gravitational pull of celestial objects in regular space also affects the underlying region of subspace in the form of &amp;quot;gravitational turbulence&amp;quot;, reckless subspace travel risks damaging ships or exposing them to undesirable time dilation effects.&lt;br /&gt;
&lt;br /&gt;
Jumping through tunnels also means knowing what is on the other side of the tunnel, and ensuring the exit point is clear of unexpected debris or other objects.&lt;br /&gt;
&lt;br /&gt;
====Where is Dilalin&amp;#039;s ship?====&lt;br /&gt;
The &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039; is hiding behind Jupiter, avoiding the prying eyes of human astronomers.&lt;br /&gt;
&lt;br /&gt;
====How do people get to and from Dilalin&amp;#039;s ship?====&lt;br /&gt;
Same method ships use to travel between points in space: subspace tunnels. This method of transit is meant for even shorter distances than Jupiter-Earth, but it is still doable. This version of the process involves extra steps to compensate for both entry and exit point moving relative to one another, and to safeguard the individuals in transit. These extra steps are referred to colloquially as &amp;quot;locking&amp;quot; the tunnel.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin fly?====&lt;br /&gt;
Her body is small and light enough to use anti-gravity technology.&lt;br /&gt;
&lt;br /&gt;
====What does Dilalin eat when she&amp;#039;s shown eating?====&lt;br /&gt;
Effectively an [[Iadena]] MRE (Meal Ready to Eat). It&amp;#039;s semi-gelatinous and scientifically designed to provide all the nutrients she needs. It apparently tastes like a medley of various ripe fruits.&lt;br /&gt;
&lt;br /&gt;
====Why does Dilalin eat food on a skewer? Why is the skewer so big?====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena#Dining_Etiquette}}&amp;#039;&amp;#039;&lt;br /&gt;
It&amp;#039;s the one common utensil in Iadena culture. They prefer food to be presented in a manageable form that can be eaten by hand, drunk, or skewered. It&amp;#039;s big because Lin is small.&lt;br /&gt;
&lt;br /&gt;
====Are all of Dilalin&amp;#039;s people tiny?====&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
====Why was the plot maguffin taken to Earth?====&lt;br /&gt;
Humans radiate an energy signature that masks the energy signature of the plot maguffin (the singularity fragment). Incidentally, that energy signature correlates with latent, dormant &amp;#039;&amp;#039;exotic abilities&amp;#039;&amp;#039; that, for all intents and purposes, can be called magic.&lt;br /&gt;
&lt;br /&gt;
====What is Kaemi&amp;#039;s exotic ability? Why does she struggle with it?====&lt;br /&gt;
Currently unknown. Because it&amp;#039;s currently unknown.&lt;br /&gt;
&lt;br /&gt;
====Why is Itsumi&amp;#039;s power easily figured out? Why does she seem very good at using it?====&lt;br /&gt;
Her power had a tell when it awoke. It was extrapolated from there. She isn&amp;#039;t good at it, but she does have her attire visor and link with Dilalin&amp;#039;s ship to help her.&lt;br /&gt;
&lt;br /&gt;
====Why did Itsumi make her second spear out of asphalt?====&lt;br /&gt;
That&amp;#039;s the only abundant material she had other than sidewalk concrete. She was provided the metals for her first spear by Dilalin.&lt;br /&gt;
&lt;br /&gt;
====What happened to the first spear, anyway?====&lt;br /&gt;
It was recovered after the battle. Reduce, reuse, recycle.&lt;br /&gt;
&lt;br /&gt;
====What is the God Singularity?====&lt;br /&gt;
The God Singularity is a physical celestial object that produces an unlimited amount of energy. The composition of the singularity and the process through which the energy is produced are undetectable and possibly unknowable, indicating the singularity may be &amp;#039;&amp;#039;anomalous to the universe&amp;#039;&amp;#039;. The singularity may be fragmented and recombined seamlessly, with each fragment retaining the same energy producing functionality. The bandwidth of a fragment of the singularity is proportional to the mass of the fragment. The actual output measurement of the singularity is classified but considered to be in the gigawatt hour (terajoule) range.&lt;br /&gt;
&lt;br /&gt;
====Where is the God Singularity?====&lt;br /&gt;
The actual location of the God Singularity is classified, but is touted as being &amp;quot;in the center of the universe&amp;quot;. It is protected by an [[Iadena]] military fleet.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Obscure_Information&amp;diff=663</id>
		<title>Obscure Information</title>
		<link rel="alternate" type="text/html" href="index.php?title=Obscure_Information&amp;diff=663"/>
		<updated>2020-02-03T20:56:04Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;This article exists as a quick reference for &amp;#039;&amp;#039;&amp;#039;obscure information&amp;#039;&amp;#039;&amp;#039; about various comic series in the form of questions and answers. The point of this article is to enable...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article exists as a quick reference for &amp;#039;&amp;#039;&amp;#039;obscure information&amp;#039;&amp;#039;&amp;#039; about various comic series in the form of questions and answers. The point of this article is to enable readers to quickly reference canon that may not be readily remembered or searched without necessarily digging through all the articles pertaining to a given series.&lt;br /&gt;
&lt;br /&gt;
== Magi Soldat ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Magi Soldat}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
====Where is Iaden?====&lt;br /&gt;
The planet [[Iaden]] is located in &amp;#039;&amp;#039;Messier 81&amp;#039;&amp;#039;, a galaxy approximately 12 million light-years from Earth.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin travel from Iaden to Earth?====&lt;br /&gt;
Dilalin&amp;#039;s ship, the &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039;, possesses FTL (Faster Than Light) transit capabilities. It travels from one point in our universe to another by jumping through tunnels through [[subspace]]. These jumps take exponentially less time than traveling through plane-space (regular space) at the speed of light.&lt;br /&gt;
&lt;br /&gt;
====How do subspace jumps exceed the speed of light?====&lt;br /&gt;
They technically don&amp;#039;t. A unique property of subspace enables bending the actual fabric of subspace-time itself and &amp;quot;warping&amp;quot; it around a ship. This process is less of a &amp;quot;movement&amp;quot; and more of a &amp;quot;displacement&amp;quot;. The displacement &amp;#039;&amp;#039;of&amp;#039;&amp;#039; subspace around matter isn&amp;#039;t bound by the speed limit of matter &amp;#039;&amp;#039;through&amp;#039;&amp;#039; subspace.&lt;br /&gt;
&lt;br /&gt;
====How fast do ships &amp;quot;displace&amp;quot; through subspace?====&lt;br /&gt;
The rate of displacement is proportional to the strength of the &amp;#039;&amp;#039;spacial field&amp;#039;&amp;#039; (i.e., warp field) generated by the ship utilizing the tunnel. Typically, the length of tunnel and strength of field are calculated together such that the jump displacement itself is functionally instantaneous.&lt;br /&gt;
&lt;br /&gt;
====How are subspace tunnels created?====&lt;br /&gt;
Interactions between rare subatomic particles can open a temporary hole between our &amp;quot;regular&amp;quot; space and subspace. These particles must be created on-demand in particle accelerators (aka colliders). A tunnel is established by performing this interaction twice: once in space and again a calculated distance into subspace. Some large ships do this all on their own. Many smaller ships make use of &amp;quot;subspace gates&amp;quot; that do the work for them.&lt;br /&gt;
&lt;br /&gt;
====Why don&amp;#039;t ships travel through subspace in a &amp;#039;normal&amp;#039; fashion? Why instantaneous jumps?====&lt;br /&gt;
A ship can travel through subspace on standard sub-light engine propulsion or even with a very weak spacial field, but this would defeat the point of entering subspace. A ship displacing at a reasonable FTL velocity would be maneuvering far too quickly to navigate effectively as no computer can calculate quickly enough to make adjustments. Since the gravitational pull of celestial objects in regular space also affects the underlying region of subspace in the form of &amp;quot;gravitational turbulence&amp;quot;, reckless subspace travel risks damaging ships or exposing them to undesirable time dilation effects.&lt;br /&gt;
&lt;br /&gt;
Jumping through tunnels also means knowing what is on the other side of the tunnel, and ensuring the exit point is clear of unexpected debris or other objects.&lt;br /&gt;
&lt;br /&gt;
====Where is Dilalin&amp;#039;s ship?====&lt;br /&gt;
The &amp;#039;&amp;#039;Niylinel&amp;#039;&amp;#039; is hiding behind Jupiter, avoiding the prying eyes of human astronomers.&lt;br /&gt;
&lt;br /&gt;
====How do people get to and from Dilalin&amp;#039;s ship?====&lt;br /&gt;
Same method ships use to travel between points in space: subspace tunnels. This method of transit is meant for even shorter distances than Jupiter-Earth, but it is still doable. This version of the process involves extra steps to compensate for both entry and exit point moving relative to one another, and to safeguard the individuals in transit. These extra steps are referred to colloquially as &amp;quot;locking&amp;quot; the tunnel.&lt;br /&gt;
&lt;br /&gt;
====How does Dilalin fly?====&lt;br /&gt;
Her body is small and light enough to use anti-gravity technology.&lt;br /&gt;
&lt;br /&gt;
====What is the God Singularity?====&lt;br /&gt;
The God Singularity is a physical celestial object that produces an unlimited amount of energy. The composition of the singularity and the process through which the energy is produced are undetectable and possibly unknowable, indicating the singularity may be &amp;#039;&amp;#039;anomalous to the universe&amp;#039;&amp;#039;. The singularity may be fragmented and recombined seamlessly, with each fragment retaining the same energy producing functionality. The bandwidth of a fragment of the singularity is proportional to the mass of the fragment. The actual output measurement of the singularity is classified but considered to be in the gigawatt hour (terajoule) range.&lt;br /&gt;
&lt;br /&gt;
====Where is the God Singularity?====&lt;br /&gt;
The actual location of the God Singularity is classified, but is touted as being &amp;quot;in the center of the universe&amp;quot;. It is protected by an [[Iadena]] military fleet.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Minor_World_Building_Elements&amp;diff=662</id>
		<title>Minor World Building Elements</title>
		<link rel="alternate" type="text/html" href="index.php?title=Minor_World_Building_Elements&amp;diff=662"/>
		<updated>2019-08-09T21:28:47Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a compiled list of minor world building elements that are too small or insignificant for their own articles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Species and Planets ==&lt;br /&gt;
&lt;br /&gt;
=== The Original Species ===&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Original Species&amp;#039;&amp;#039;&amp;#039; were the first known intelligent life forms to evolve within [[Cosmos-3]] and are the genetic ancestors of all current intelligent life in that cosmos, including Earth&amp;#039;s humans and the [[Iadena]].&lt;br /&gt;
&lt;br /&gt;
Little is concretely known about the Original Species beyond their genetic ancestorship and their possession of technology far surpassing any technology created by modern races. At some point after seeding life throughout known space, the entire species vanished, taking virtually every trace of their existence with them save for one knowledge cache.&lt;br /&gt;
&lt;br /&gt;
Currently, it is unknown whether the Original Species still exists or if they perished or ascended to some other plane of existence.&lt;br /&gt;
&lt;br /&gt;
==== Trivia ====&lt;br /&gt;
* It is generally considered true that the Iadena homeworld was also the homeworld of the Original Species.&lt;br /&gt;
* According to &amp;#039;&amp;#039;Word of God&amp;#039;&amp;#039;, an unused plot line reveals the Original Species also left behind a massive ship capable of planetary engineering to an as-of-yet unnamed species.&lt;br /&gt;
&lt;br /&gt;
=== The Jenide ===&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Jenide&amp;#039;&amp;#039;&amp;#039; were a species of humanoids from the planet &amp;#039;&amp;#039;&amp;#039;Jenid&amp;#039;&amp;#039;&amp;#039;. They were only marginally more technologically advanced than 21st-century Earth humans at the height of their civilization. Due to an unidentified anomaly, their sun mysteriously lost most of the hydrogen in its core, exacerbating its age by billions of years, leaving only a few generations of time before it would exhaust its core hydrogen supply and begin its expansion into the red giant phase --a process that would consume the Jenide homeworld.&lt;br /&gt;
&lt;br /&gt;
The Jenide spent their remaining time developing a nuclear-powered interstellar ark as an attempt to preserve their civilization. This ark was launched 50 years before the estimated radial expansion of their sun.&lt;br /&gt;
&lt;br /&gt;
During their quest to reach a new world, the ark&amp;#039;s emigrants encountered the Iadena and learned of the [[God Singularity]]. The emigrants hoped to negotiate with the Iadena for help. Initially, they hoped the Iadena could help offload the entire planet&amp;#039;s population but were refused. They then pleaded for the Iadena to use the God Singularity to restore the hydrogen core fuel to their star but were also refused.&lt;br /&gt;
&lt;br /&gt;
After a string of unsuccessful negotiations, the Iadena council became concerned the emigrants would attempt a siege in order to steal a fragment of the God Singularity and so authorized the destruction of the ark, condemning the Jenide to perish. This would be the Iadena&amp;#039;s first genocide and the spark that lit the flames of a civil war.&lt;br /&gt;
&lt;br /&gt;
=== Planet Hives ===&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;planet hive&amp;#039;&amp;#039;&amp;#039; is a rare evolutionary quirk where all life on a planet coalesces into a single multi-faceted hive mind. In essence, all life becomes interconnected as a single super-species. Generally, planet hives to do not possess any sapient or sentient facets. They are considered parasitic and a threat and so a number of intelligent species (including the Iadena) tend to eradicate them as they are found.&lt;br /&gt;
&lt;br /&gt;
There have been at least three documented planet hives in the history of Cosmos-3.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Saruwatari_Miki&amp;diff=661</id>
		<title>Saruwatari Miki</title>
		<link rel="alternate" type="text/html" href="index.php?title=Saruwatari_Miki&amp;diff=661"/>
		<updated>2019-08-09T06:27:34Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;{{CharInfo |name = Saruwatari Miki |katakana = 猿渡美希 |romaji = Saruwatari Miki |image = empty.png|228px |series = Ellipsis |age = 16 (Ellipsis); 18 |bloodtype = &amp;#039;&amp;#039;u...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CharInfo&lt;br /&gt;
|name = Saruwatari Miki&lt;br /&gt;
|katakana = 猿渡美希&lt;br /&gt;
|romaji = Saruwatari Miki&lt;br /&gt;
|image = empty.png|228px&lt;br /&gt;
|series = [[Ellipsis]]&lt;br /&gt;
|age = 16 (Ellipsis); 18&lt;br /&gt;
|bloodtype = &amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&lt;br /&gt;
|home = Wakkanai, Hokkaido&lt;br /&gt;
|relative = Saruwatari Harue (Mother)&amp;lt;br&amp;gt;Abe Fujie (Aunt)&amp;lt;br&amp;gt;Saruwatari Shin&amp;#039;ichi (Half-brother)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Saruwatari Miki&amp;#039;&amp;#039;&amp;#039; (猿渡美希 &amp;lt;&amp;#039;&amp;#039;Saruwatari Miki&amp;#039;&amp;#039;&amp;gt;) is a teenage girl and a student at [[Wakkanai Frontier Academy]].&lt;br /&gt;
&lt;br /&gt;
== Appearance ==&lt;br /&gt;
Saruwatari Miki is a teenage girl with long wild crimson hair and vibrant blue eyes. She has a rather large mole visible on her right cheek.&lt;br /&gt;
&lt;br /&gt;
Miki tends to wear teal spandex, a denim miniskirt, and some form of baggy top or sweater. Despite having been born far later, her fashion sense is arguably very &amp;quot;80&amp;#039;s&amp;quot;. In school, she wears the standard academy girls&amp;#039; uniform.&lt;br /&gt;
&lt;br /&gt;
== Personality ==&lt;br /&gt;
Miki is the very energetic sort who loves to play. Much to others&amp;#039; chagrin, she&amp;#039;ll often run rather than walk, and balance herself on railings and other ledges. Miki tends to think very little and live in the moment a lot, preferring simple answers and desires over complicated explanations and goals.&lt;br /&gt;
&lt;br /&gt;
== Biography ==&lt;br /&gt;
=== Early Life ===&lt;br /&gt;
Miki was the second child born to Saruwatari Harue, and to an unknown father. Shortly after her birth, custody of her was given to Harue&amp;#039;s sister Fujie as Harue had no desire to raise children on her own. Miki would spend the majority of her life under the care of Fujie, alongside her half-brother Shin&amp;#039;ichi.&lt;br /&gt;
&lt;br /&gt;
== Trivia ==&lt;br /&gt;
* Miki is one of the few characters in the &amp;#039;&amp;#039;Canonical Works Universe&amp;#039;&amp;#039; who lacks any form of dormant [[exotic ability]].&lt;br /&gt;
* Miki&amp;#039;s hair was originally pink in color.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=660</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=660"/>
		<updated>2019-07-27T21:29:40Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; refers to both a nationality and native ethnic group of the planet [[Iaden]] in [[Magi Soldat]]. This article is specifically about the ethnic group.&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
Iadena are a humanoid race largely similar in appearance to Earth&amp;#039;s human beings. Distinguishing features include a slightly sallow skin tone and a &amp;quot;sharper&amp;quot; framing of the eyes. In terms of stature, the average Iadena will reach a height of 4-5 feet tall (approx. 120-150 cm).&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 135 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
Iadena anatomy also shares much in common with human anatomy. Notable deviations include fewer, thicker ribs, a third kidney, and a second liver.&lt;br /&gt;
&lt;br /&gt;
Generally, all bones of the Iadena skeleton are a couple millimeters thicker than their human counterparts. However, the ribs are exceptionally larger, being 3-5 millimeters thicker than human ribs. As a side-effect, Iadena have fewer ribs, though the amount of overall protection for the organs underneath remains the same. Typically, males have 10 pairs of ribs, whereas females have 11 pairs. This extra pair of ribs is situated far lower on the spinal column and is considered to be a vestigial remnant of a structure known as the &amp;#039;&amp;#039;uterine pseudo-sheath&amp;#039;&amp;#039;, a secondary rib cage that encased the uterus and developing fetus.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Ancient Iadena originally had an asymmetric pair of kidneys, the larger of which ultimately split into two smaller kidneys. Similar to humans, Iadena can survive on a single kidney.&lt;br /&gt;
&lt;br /&gt;
The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red and iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
An Iadena woman experience fertility seasons for the bulk of her young adult life. As she matures, these seasons begin to shorten until reduced to a duration comparable to human menstrual cycles. Fertility ultimately ceases after approximately 47 seasons/cycles, when the woman is about 80 years old.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Iadena#Festival of our Heritage|Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily irritated by capsaicinoids. Despite this susceptibility, Iadena taste receptors are apparently unresponsive to their presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
=== Prehistory ===&lt;br /&gt;
There is evidence that prehistoric Iadena worshiped at least three different deities, including a &amp;quot;World God&amp;quot; responsible for the creation and destruction of all things, a &amp;quot;Day God&amp;quot; that gave life to these creations, and a &amp;quot;Night God&amp;quot; that took life away.&lt;br /&gt;
&lt;br /&gt;
Interpretations of relics and glyphs suggest that prehistoric Iadena believed that life force was a shared commodity, and that sleep was necessary in order to allow other living things to take on life force and act out their lives. As the sun set, it was the duty of the Night God to take life force away from the sleeping creatures and pool it beneath a great tree. As the sun rose, it was the duty of the Day God to take that pooled life force and disseminate it to the waking. Certain glyphs suggest that the giving up of life force was voluntary, and so staying awake at night may have been looked down on as selfish or heretical.&lt;br /&gt;
&lt;br /&gt;
Whether or not prehistoric Iadena believed in any form of afterlife or reincarnation is as of yet unknown.&lt;br /&gt;
&lt;br /&gt;
=== Early History ===&lt;br /&gt;
At some point early in written history, the Iadena discovered the only known cache of knowledge left behind by the [[Minor_World_Building_Elements#The_Original_Species|the Original Species]]. The effort to translate and understand this cache deeply influenced Iadena worldview over time. As they became more and more aware of the true nature of the Original Species, more and more Iadena began to abandon their primordial spirituality in favor of the cache&amp;#039;s concrete wisdom.&lt;br /&gt;
&lt;br /&gt;
This newfound &amp;quot;Cache-ism&amp;quot; asserted the Original Species as the &amp;quot;Ground Breakers&amp;quot; who were truly responsible for the creation of Iaden and the heavens surrounding it. Nearly all interpretations of this lore painted the Original Species as a new pantheon of gods.&lt;br /&gt;
&lt;br /&gt;
A number of civil wars were fought between those who believed in the lore of the cache, and those who still held to their belief in the primordial three gods.&lt;br /&gt;
&lt;br /&gt;
=== Modern Times ===&lt;br /&gt;
As the translation of the cache progressed, so too did the ideals of Cache-ism. With each passing revelation, interpretations began to slowly mortalize the Original Species. By the time the cache had reached 85% translation, many Iadena had moved away from the notion of the species as gods and had begun to embrace them as biological ancestors who once lived on Iaden themselves.&lt;br /&gt;
&lt;br /&gt;
Through translations of the cache, the Iadena also became aware of the [[God Singularity]] and other life in the universe.&lt;br /&gt;
&lt;br /&gt;
==== Manifest Destiny ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
With the canonization of Iaden as the home world of the Original Species, many Iadena believe themselves &amp;quot;chosen&amp;quot; by their ancestors as successors to their ancestors&amp;#039; dynasty. They strongly believed it was their birthright duty to protect the God Singularity at all costs.&lt;br /&gt;
&lt;br /&gt;
This belief and duty has lead to a common element of pride among Iadena, wherein they are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
==== Dissenters and Exodus ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Andromeda Colony}}&amp;#039;&amp;#039;&lt;br /&gt;
Some Iadena refuted their Manifest Destiny, believing that this particular interpretation of the cache was more self-serving than honest. Many of these dissenters departed from Iaden and the very galaxy itself to establish a distant colony of their own.&lt;br /&gt;
&lt;br /&gt;
Currently, there still remains a minority dissenter population on Iaden. While their dissent is protected from persecution, many choose to alienate themselves anyway, as many forms of employment indirectly empower the current military empire and its actions.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
=== Naming Conventions ===&lt;br /&gt;
Iadena typically hold two to three names: a given name, a surname (family name), and an optional functional name that provides additional information about what the person does for a living.&lt;br /&gt;
&lt;br /&gt;
Traditionally, surnames are considered less important than given and functional names. It is not uncommon for an Iadena to omit their surname outside of governmental and military settings.&lt;br /&gt;
&lt;br /&gt;
Iadena who are close friends may simply refer to each other by given name alone. Strangers or individuals in business settings refer to each other by given name and functional name.&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal entry into adulthood. &amp;quot;Adulthood&amp;quot; is a status earned rather than given. Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in their early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically an expectation rather than a celebrated event, Iadena will often celebrate young adults for their faster maturation. Oppositely, Iadena who do not attain adulthood until later in their lives are often treated as social pariahs.&lt;br /&gt;
&lt;br /&gt;
==== Sexuality ====&lt;br /&gt;
Iadena are very open about sexuality and place no social taboo or stigma on sex or sex work. However, it is still considered socially inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
For Iadena, the age of consent is not quite so straightforward. Only Iadena adults can give consent, but only after reaching full biological maturation --an age of about 24-25 Earth years. Thus, it is possible for an Iadena to be legally an adult yet unable to give consent, or old enough to consent yet not legally an adult. It is considered a moderate felony if any party involved in sexual activity is either not an adult or unable to consent. It is a severe felony to the highest degree if any party involved meets neither requirement.&lt;br /&gt;
&lt;br /&gt;
In cases where all relevant parties are adults but unable to consent, the parties may petition for an affidavit of exception. For individuals not considered adults but are of age, there are old bylaws that allow for seeking an affidavit of sexual health. However, these bylaws have been rendered all but obsolete by most all modern courts.&lt;br /&gt;
&lt;br /&gt;
==== Gender Identity ====&lt;br /&gt;
Historically, Iadena embraced a rigid sex-aligned gender binary. With advances in medical science over time, Iadena culture as a whole opened up to the notion of transgender identities. Today, there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, on the other hand, are often met with small amounts of resistance and annoyance due to being considered less-straightforward in nature. &lt;br /&gt;
&lt;br /&gt;
Fortunately, identity is a protected class without exception.&lt;br /&gt;
&lt;br /&gt;
=== Family and Familial Unions ===&lt;br /&gt;
Iadena families tend to be chosen, rather than assigned through genetic relationship. While paternity and maternity are important recorded details, there is no cultural emphasis to consider one&amp;#039;s father or mother to be &amp;quot;family&amp;quot;. Rather, Iadena are encouraged to choose their family over time.&lt;br /&gt;
&lt;br /&gt;
Iadena do not have &amp;quot;marriage&amp;quot; in the traditional human sense, instead practicing a tradition known as familial unions. A familial union is a document defining significant relationships between individuals. This includes partnerships, non-partner significant others, and parent-child relationships. Forming a union also enables the relevant parties to gain situational co-authority where applicable. Any number of individuals may union together legally, though it is considered to be in bad taste for a union to be larger than five or six persons.&lt;br /&gt;
&lt;br /&gt;
=== Dining Etiquette ===&lt;br /&gt;
Iadena typically eat four meals per day. When possible, they prefer to eat together in groups, and whoever is last to finish takes the responsibility to clean up and/or pay any bills. It is not considered rude to leave when finished, even if others are still eating.&lt;br /&gt;
&lt;br /&gt;
Iadena are not above eating with their hands, but will also employ a utensil in the form of a singular, pointed &amp;quot;chopstick&amp;quot;. It is a culinary and social faux pas to present to others food that requires cutting or tearing into smaller, more manageable pieces.&lt;br /&gt;
&lt;br /&gt;
=== Holidays and Cultural Events ===&lt;br /&gt;
==== Festival of our Heritage ====&lt;br /&gt;
The &amp;#039;&amp;#039;Festival of our Heritage&amp;#039;&amp;#039; is the most prominent worldwide event in Iadena culture and lasts for several days. During this period, Iadena are encouraged to indulge in foods not normally eaten, and to display and wear imagery alluding to the Original Species. In practice, it is a celebration of the belief that Iadena are a chosen people.&lt;br /&gt;
&lt;br /&gt;
==== New Year&amp;#039;s Day ====&lt;br /&gt;
Similar to East Asian humans, Iadena consider themselves one year older at the turn of each new year and celebrate the collective achievement.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of their economic system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is referred to as basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of these basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few recipes.&lt;br /&gt;
&lt;br /&gt;
It is through the &amp;quot;blandness&amp;quot; of these amenities that Iadena are encouraged to work and earn wages. With these wages, one may &amp;quot;upgrade&amp;quot; the quality of their life, whether it is better food, better entertainment, or even larger housing.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Merely having the necessary money can be insufficient to acquire certain material goods or services. Depending on the &amp;quot;merit&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods and never interfere with the acquisition of food or health and socially positive activities.&lt;br /&gt;
&lt;br /&gt;
In essence, the gist of this economic philosophy is: &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Excess Audit and Taxation ===&lt;br /&gt;
At the conclusion of each year, a portion of the Iadena population is audited. The purpose of this audit is to minimize unnecessary hoarding of wealth by checking for &amp;quot;excessive excess&amp;quot;. As such a concept is largely subjective, any audited individual flagged as excessive is allowed a defensive speech to an appeals panel to explain their intents and attachments. If the defense is unsuccessful, the individual&amp;#039;s future wages are garnished for a period of time.&lt;br /&gt;
&lt;br /&gt;
== Political System ==&lt;br /&gt;
{{stub}}&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Government and Territory}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entire planet of Iaden is overseen by a single republic entity. This entity is composed of two parts: the singular &amp;#039;&amp;#039;&amp;#039;Rada&amp;#039;&amp;#039;&amp;#039; and a select party called the &amp;#039;&amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Rada ===&lt;br /&gt;
The &amp;#039;&amp;#039;Rada&amp;#039;&amp;#039; is a singular person akin to a President, who stands as equal to the Radesa. The Rada has equivalent executive power to the Radesa, and is able to both veto their motions and introduce motions for them to discuss.&lt;br /&gt;
&lt;br /&gt;
The purpose of the Rada is to represent &amp;quot;minority&amp;quot;. The Rada&amp;#039;s job is to act in the good faith of the minority population who do not agree with majority politics. The Rada aims to keep political action anchored to reality by reminding the Radesa of the diversity of the wills of the people.&lt;br /&gt;
&lt;br /&gt;
The current incumbent Rada is [[Iliane Niy]].&lt;br /&gt;
&lt;br /&gt;
=== Radesa ===&lt;br /&gt;
The &amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039; are a cabinet of individuals who oversee the legislative workings of Iaden as a whole.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=659</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=659"/>
		<updated>2019-07-27T20:13:57Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: /* Family Familial Unions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; refers to both a nationality and native ethnic group of the planet [[Iaden]] in [[Magi Soldat]]. This article is specifically about the ethnic group.&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
Iadena are a humanoid race largely similar in appearance to Earth&amp;#039;s human beings. Distinguishing features include a slightly sallow skin tone and a &amp;quot;sharper&amp;quot; framing of the eyes. In terms of stature, the average Iadena will reach a height of 4-5 feet tall (approx. 120-150 cm).&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 135 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
Iadena anatomy also shares much in common with human anatomy. Notable deviations include fewer, thicker ribs, a third kidney, and a second liver.&lt;br /&gt;
&lt;br /&gt;
Generally, all bones of the Iadena skeleton are a couple millimeters thicker than their human counterparts. However, the ribs are exceptionally larger, being 3-5 millimeters thicker than human ribs. As a side-effect, Iadena have fewer ribs, though the amount of overall protection for the organs underneath remains the same. Typically, males have 10 pairs of ribs, whereas females have 11 pairs. This extra pair of ribs is situated far lower on the spinal column and is considered to be a vestigial remnant of a structure known as the &amp;#039;&amp;#039;uterine pseudo-sheath&amp;#039;&amp;#039;, a secondary rib cage that encased the uterus and developing fetus.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Ancient Iadena originally had an asymmetric pair of kidneys, the larger of which ultimately split into two smaller kidneys. Similar to humans, Iadena can survive on a single kidney.&lt;br /&gt;
&lt;br /&gt;
The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red and iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
An Iadena woman experience fertility seasons for the bulk of her young adult life. As she matures, these seasons begin to shorten until reduced to a duration comparable to human menstrual cycles. Fertility ultimately ceases after approximately 47 seasons/cycles, when the woman is about 80 years old.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily irritated by capsaicinoids. Despite this susceptibility, Iadena taste receptors are apparently unresponsive to their presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
=== Prehistory ===&lt;br /&gt;
There is evidence that prehistoric Iadena worshiped at least three different deities, including a &amp;quot;World God&amp;quot; responsible for the creation and destruction of all things, a &amp;quot;Day God&amp;quot; that gave life to these creations, and a &amp;quot;Night God&amp;quot; that took life away.&lt;br /&gt;
&lt;br /&gt;
Interpretations of relics and glyphs suggest that prehistoric Iadena believed that life force was a shared commodity, and that sleep was necessary in order to allow other living things to take on life force and act out their lives. As the sun set, it was the duty of the Night God to take life force away from the sleeping creatures and pool it beneath a great tree. As the sun rose, it was the duty of the Day God to take that pooled life force and disseminate it to the waking. Certain glyphs suggest that the giving up of life force was voluntary, and so staying awake at night may have been looked down on as selfish or heretical.&lt;br /&gt;
&lt;br /&gt;
Whether or not prehistoric Iadena believed in any form of afterlife or reincarnation is as of yet unknown.&lt;br /&gt;
&lt;br /&gt;
=== Early History ===&lt;br /&gt;
At some point early in written history, the Iadena discovered the only known cache of knowledge left behind by the [[Minor_World_Building_Elements#The_Original_Species|the Original Species]]. The effort to translate and understand this cache deeply influenced Iadena worldview over time. As they became more and more aware of the true nature of the Original Species, more and more Iadena began to abandon their primordial spirituality in favor of the cache&amp;#039;s concrete wisdom.&lt;br /&gt;
&lt;br /&gt;
This newfound &amp;quot;Cache-ism&amp;quot; asserted the Original Species as the &amp;quot;Ground Breakers&amp;quot; who were truly responsible for the creation of Iaden and the heavens surrounding it. Nearly all interpretations of this lore painted the Original Species as a new pantheon of gods.&lt;br /&gt;
&lt;br /&gt;
A number of civil wars were fought between those who believed in the lore of the cache, and those who still held to their belief in the primordial three gods.&lt;br /&gt;
&lt;br /&gt;
=== Modern Times ===&lt;br /&gt;
As the translation of the cache progressed, so too did the ideals of Cache-ism. With each passing revelation, interpretations began to slowly mortalize the Original Species. By the time the cache had reached 85% translation, many Iadena had moved away from the notion of the species as gods and had begun to embrace them as biological ancestors who once lived on Iaden themselves.&lt;br /&gt;
&lt;br /&gt;
Through translations of the cache, the Iadena also became aware of the [[God Singularity]] and other life in the universe.&lt;br /&gt;
&lt;br /&gt;
==== Manifest Destiny ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
With the canonization of Iaden as the home world of the Original Species, many Iadena believe themselves &amp;quot;chosen&amp;quot; by their ancestors as successors to their ancestors&amp;#039; dynasty. They strongly believed it was their birthright duty to protect the God Singularity at all costs.&lt;br /&gt;
&lt;br /&gt;
This belief and duty has lead to a common element of pride among Iadena, wherein they are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
==== Dissenters and Exodus ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Andromeda Colony}}&amp;#039;&amp;#039;&lt;br /&gt;
Some Iadena refuted their Manifest Destiny, believing that this particular interpretation of the cache was more self-serving than honest. Many of these dissenters departed from Iaden and the very galaxy itself to establish a distant colony of their own.&lt;br /&gt;
&lt;br /&gt;
Currently, there still remains a minority dissenter population on Iaden. While their dissent is protected from persecution, many choose to alienate themselves anyway, as many forms of employment indirectly empower the current military empire and its actions.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
=== Naming Conventions ===&lt;br /&gt;
Iadena typically hold two to three names: a given name, a surname (family name), and an optional functional name that provides additional information about what the person does for a living.&lt;br /&gt;
&lt;br /&gt;
Traditionally, surnames are considered less important than given and functional names. It is not uncommon for an Iadena to omit their surname outside of governmental and military settings.&lt;br /&gt;
&lt;br /&gt;
Iadena who are close friends may simply refer to each other by given name alone. Strangers or individuals in business settings refer to each other by given name and functional name.&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal entry into adulthood. &amp;quot;Adulthood&amp;quot; is a status earned rather than given. Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in their early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically an expectation rather than a celebrated event, Iadena will often celebrate young adults for their faster maturation. Oppositely, Iadena who do not attain adulthood until later in their lives are often treated as social pariahs.&lt;br /&gt;
&lt;br /&gt;
==== Sexuality ====&lt;br /&gt;
Iadena are very open about sexuality and place no social taboo or stigma on sex or sex work. However, it is still considered socially inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
For Iadena, the age of consent is not quite so straightforward. Only Iadena adults can give consent, but only after reaching full biological maturation --an age of about 24-25 Earth years. Thus, it is possible for an Iadena to be legally an adult yet unable to give consent, or old enough to consent yet not legally an adult. It is considered a moderate felony if any party involved in sexual activity is either not an adult or unable to consent. It is a severe felony to the highest degree if any party involved meets neither requirement.&lt;br /&gt;
&lt;br /&gt;
In cases where all relevant parties are adults but unable to consent, the parties may petition for an affidavit of exception. For individuals not considered adults but are of age, there are old bylaws that allow for seeking an affidavit of sexual health. However, these bylaws have been rendered all but obsolete by most all modern courts.&lt;br /&gt;
&lt;br /&gt;
==== Gender Identity ====&lt;br /&gt;
Historically, Iadena embraced a rigid sex-aligned gender binary. With advances in medical science over time, Iadena culture as a whole opened up to the notion of transgender identities. Today, there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, on the other hand, are often met with small amounts of resistance and annoyance due to being considered less-straightforward in nature. &lt;br /&gt;
&lt;br /&gt;
Fortunately, identity is a protected class without exception.&lt;br /&gt;
&lt;br /&gt;
=== Family and Familial Unions ===&lt;br /&gt;
Iadena families tend to be chosen, rather than assigned through genetic relationship. While paternity and maternity are important recorded details, there is no cultural emphasis to consider one&amp;#039;s father or mother to be &amp;quot;family&amp;quot;. Rather, Iadena are encouraged to choose their family over time.&lt;br /&gt;
&lt;br /&gt;
Iadena do not have &amp;quot;marriage&amp;quot; in the traditional human sense, instead practicing a tradition known as familial unions. A familial union is a document defining significant relationships between individuals. This includes partnerships, non-partner significant others, and parent-child relationships. Forming a union also enables the relevant parties to gain situational co-authority where applicable. Any number of individuals may union together legally, though it is considered to be in bad taste for a union to be larger than five or six persons.&lt;br /&gt;
&lt;br /&gt;
=== Dining Etiquette ===&lt;br /&gt;
Iadena typically eat four meals per day. When possible, they prefer to eat together in groups, and whoever is last to finish takes the responsibility to clean up and/or pay any bills. It is not considered rude to leave when finished, even if others are still eating.&lt;br /&gt;
&lt;br /&gt;
Iadena are not above eating with their hands, but will also employ a utensil in the form of a singular, pointed &amp;quot;chopstick&amp;quot;. It is a culinary and social faux pas to present to others food that requires cutting or tearing into smaller, more manageable pieces.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of their economic system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is referred to as basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of these basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few recipes.&lt;br /&gt;
&lt;br /&gt;
It is through the &amp;quot;blandness&amp;quot; of these amenities that Iadena are encouraged to work and earn wages. With these wages, one may &amp;quot;upgrade&amp;quot; the quality of their life, whether it is better food, better entertainment, or even larger housing.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Merely having the necessary money can be insufficient to acquire certain material goods or services. Depending on the &amp;quot;merit&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods and never interfere with the acquisition of food or health and socially positive activities.&lt;br /&gt;
&lt;br /&gt;
In essence, the gist of this economic philosophy is: &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Excess Audit and Taxation ===&lt;br /&gt;
At the conclusion of each year, a portion of the Iadena population is audited. The purpose of this audit is to minimize unnecessary hoarding of wealth by checking for &amp;quot;excessive excess&amp;quot;. As such a concept is largely subjective, any audited individual flagged as excessive is allowed a defensive speech to an appeals panel to explain their intents and attachments. If the defense is unsuccessful, the individual&amp;#039;s future wages are garnished for a period of time.&lt;br /&gt;
&lt;br /&gt;
== Political System ==&lt;br /&gt;
{{stub}}&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Government and Territory}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entire planet of Iaden is overseen by a single republic entity. This entity is composed of two parts: the singular &amp;#039;&amp;#039;&amp;#039;Rada&amp;#039;&amp;#039;&amp;#039; and a select party called the &amp;#039;&amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Rada ===&lt;br /&gt;
The &amp;#039;&amp;#039;Rada&amp;#039;&amp;#039; is a singular person akin to a President, who stands as equal to the Radesa. The Rada has equivalent executive power to the Radesa, and is able to both veto their motions and introduce motions for them to discuss.&lt;br /&gt;
&lt;br /&gt;
The purpose of the Rada is to represent &amp;quot;minority&amp;quot;. The Rada&amp;#039;s job is to act in the good faith of the minority population who do not agree with majority politics. The Rada aims to keep political action anchored to reality by reminding the Radesa of the diversity of the wills of the people.&lt;br /&gt;
&lt;br /&gt;
The current incumbent Rada is [[Iliane Niy]].&lt;br /&gt;
&lt;br /&gt;
=== Radesa ===&lt;br /&gt;
The &amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039; are a cabinet of individuals who oversee the legislative workings of Iaden as a whole.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=658</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=658"/>
		<updated>2019-07-27T17:26:29Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; refers to both a nationality and native ethnic group of the planet [[Iaden]] in [[Magi Soldat]]. This article is specifically about the ethnic group.&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
Iadena are a humanoid race largely similar in appearance to Earth&amp;#039;s human beings. Distinguishing features include a slightly sallow skin tone and a &amp;quot;sharper&amp;quot; framing of the eyes. In terms of stature, the average Iadena will reach a height of 4-5 feet tall (approx. 120-150 cm).&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 135 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
Iadena anatomy also shares much in common with human anatomy. Notable deviations include fewer, thicker ribs, a third kidney, and a second liver.&lt;br /&gt;
&lt;br /&gt;
Generally, all bones of the Iadena skeleton are a couple millimeters thicker than their human counterparts. However, the ribs are exceptionally larger, being 3-5 millimeters thicker than human ribs. As a side-effect, Iadena have fewer ribs, though the amount of overall protection for the organs underneath remains the same. Typically, males have 10 pairs of ribs, whereas females have 11 pairs. This extra pair of ribs is situated far lower on the spinal column and is considered to be a vestigial remnant of a structure known as the &amp;#039;&amp;#039;uterine pseudo-sheath&amp;#039;&amp;#039;, a secondary rib cage that encased the uterus and developing fetus.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Ancient Iadena originally had an asymmetric pair of kidneys, the larger of which ultimately split into two smaller kidneys. Similar to humans, Iadena can survive on a single kidney.&lt;br /&gt;
&lt;br /&gt;
The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red and iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
An Iadena woman experience fertility seasons for the bulk of her young adult life. As she matures, these seasons begin to shorten until reduced to a duration comparable to human menstrual cycles. Fertility ultimately ceases after approximately 47 seasons/cycles, when the woman is about 80 years old.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily irritated by capsaicinoids. Despite this susceptibility, Iadena taste receptors are apparently unresponsive to their presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
=== Prehistory ===&lt;br /&gt;
There is evidence that prehistoric Iadena worshiped at least three different deities, including a &amp;quot;World God&amp;quot; responsible for the creation and destruction of all things, a &amp;quot;Day God&amp;quot; that gave life to these creations, and a &amp;quot;Night God&amp;quot; that took life away.&lt;br /&gt;
&lt;br /&gt;
Interpretations of relics and glyphs suggest that prehistoric Iadena believed that life force was a shared commodity, and that sleep was necessary in order to allow other living things to take on life force and act out their lives. As the sun set, it was the duty of the Night God to take life force away from the sleeping creatures and pool it beneath a great tree. As the sun rose, it was the duty of the Day God to take that pooled life force and disseminate it to the waking. Certain glyphs suggest that the giving up of life force was voluntary, and so staying awake at night may have been looked down on as selfish or heretical.&lt;br /&gt;
&lt;br /&gt;
Whether or not prehistoric Iadena believed in any form of afterlife or reincarnation is as of yet unknown.&lt;br /&gt;
&lt;br /&gt;
=== Early History ===&lt;br /&gt;
At some point early in written history, the Iadena discovered the only known cache of knowledge left behind by the [[Minor_World_Building_Elements#The_Original_Species|the Original Species]]. The effort to translate and understand this cache deeply influenced Iadena worldview over time. As they became more and more aware of the true nature of the Original Species, more and more Iadena began to abandon their primordial spirituality in favor of the cache&amp;#039;s concrete wisdom.&lt;br /&gt;
&lt;br /&gt;
This newfound &amp;quot;Cache-ism&amp;quot; asserted the Original Species as the &amp;quot;Ground Breakers&amp;quot; who were truly responsible for the creation of Iaden and the heavens surrounding it. Nearly all interpretations of this lore painted the Original Species as a new pantheon of gods.&lt;br /&gt;
&lt;br /&gt;
A number of civil wars were fought between those who believed in the lore of the cache, and those who still held to their belief in the primordial three gods.&lt;br /&gt;
&lt;br /&gt;
=== Modern Times ===&lt;br /&gt;
As the translation of the cache progressed, so too did the ideals of Cache-ism. With each passing revelation, interpretations began to slowly mortalize the Original Species. By the time the cache had reached 85% translation, many Iadena had moved away from the notion of the species as gods and had begun to embrace them as biological ancestors who once lived on Iaden themselves.&lt;br /&gt;
&lt;br /&gt;
Through translations of the cache, the Iadena also became aware of the [[God Singularity]] and other life in the universe.&lt;br /&gt;
&lt;br /&gt;
==== Manifest Destiny ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
With the canonization of Iaden as the home world of the Original Species, many Iadena believe themselves &amp;quot;chosen&amp;quot; by their ancestors as successors to their ancestors&amp;#039; dynasty. They strongly believed it was their birthright duty to protect the God Singularity at all costs.&lt;br /&gt;
&lt;br /&gt;
This belief and duty has lead to a common element of pride among Iadena, wherein they are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
==== Dissenters and Exodus ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Andromeda Colony}}&amp;#039;&amp;#039;&lt;br /&gt;
Some Iadena refuted their Manifest Destiny, believing that this particular interpretation of the cache was more self-serving than honest. Many of these dissenters departed from Iaden and the very galaxy itself to establish a distant colony of their own.&lt;br /&gt;
&lt;br /&gt;
Currently, there still remains a minority dissenter population on Iaden. While their dissent is protected from persecution, many choose to alienate themselves anyway, as many forms of employment indirectly empower the current military empire and its actions.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
=== Naming Conventions ===&lt;br /&gt;
Iadena typically hold two to three names: a given name, a surname (family name), and an optional functional name that provides additional information about what the person does for a living.&lt;br /&gt;
&lt;br /&gt;
Traditionally, surnames are considered less important than given and functional names. It is not uncommon for an Iadena to omit their surname outside of governmental and military settings.&lt;br /&gt;
&lt;br /&gt;
Iadena who are close friends may simply refer to each other by given name alone. Strangers or individuals in business settings refer to each other by given name and functional name.&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal entry into adulthood. &amp;quot;Adulthood&amp;quot; is a status earned rather than given. Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in their early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically an expectation rather than a celebrated event, Iadena will often celebrate young adults for their faster maturation. Oppositely, Iadena who do not attain adulthood until later in their lives are often treated as social pariahs.&lt;br /&gt;
&lt;br /&gt;
==== Sexuality ====&lt;br /&gt;
Iadena are very open about sexuality and place no social taboo or stigma on sex or sex work. However, it is still considered socially inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
For Iadena, the age of consent is not quite so straightforward. Only Iadena adults can give consent, but only after reaching full biological maturation --an age of about 24-25 Earth years. Thus, it is possible for an Iadena to be legally an adult yet unable to give consent, or old enough to consent yet not legally an adult. It is considered a moderate felony if any party involved in sexual activity is either not an adult or unable to consent. It is a severe felony to the highest degree if any party involved meets neither requirement.&lt;br /&gt;
&lt;br /&gt;
In cases where all relevant parties are adults but unable to consent, the parties may petition for an affidavit of exception. For individuals not considered adults but are of age, there are old bylaws that allow for seeking an affidavit of sexual health. However, these bylaws have been rendered all but obsolete by most all modern courts.&lt;br /&gt;
&lt;br /&gt;
==== Gender Identity ====&lt;br /&gt;
Historically, Iadena embraced a rigid sex-aligned gender binary. With advances in medical science over time, Iadena culture as a whole opened up to the notion of transgender identities. Today, there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, on the other hand, are often met with small amounts of resistance and annoyance due to being considered less-straightforward in nature. &lt;br /&gt;
&lt;br /&gt;
Fortunately, identity is a protected class without exception.&lt;br /&gt;
&lt;br /&gt;
=== Family Familial Unions ===&lt;br /&gt;
Iadena families tend to be chosen, rather than assigned through genetic relationship. While paternity and maternity are important recorded details, there is no cultural emphasis to consider one&amp;#039;s father or mother to be &amp;quot;family&amp;quot;. Rather, Iadena are encouraged to choose their family over time.&lt;br /&gt;
&lt;br /&gt;
Iadena do not have &amp;quot;marriage&amp;quot; in the traditional human sense, instead practicing a tradition known as familial unions. A familial union is a document defining significant relationships between individuals. This includes partnerships, non-partner significant others, and parent-child relationships. Forming a union also enables the relevant parties to gain situational co-authority where applicable. Any number of individuals may union together legally, though it is considered to be in bad taste for a union to be larger than five or six persons.&lt;br /&gt;
&lt;br /&gt;
=== Dining Etiquette ===&lt;br /&gt;
Iadena typically eat four meals per day. When possible, they prefer to eat together in groups, and whoever is last to finish takes the responsibility to clean up and/or pay any bills. It is not considered rude to leave when finished, even if others are still eating.&lt;br /&gt;
&lt;br /&gt;
Iadena are not above eating with their hands, but will also employ a utensil in the form of a singular, pointed &amp;quot;chopstick&amp;quot;. It is a culinary and social faux pas to present to others food that requires cutting or tearing into smaller, more manageable pieces.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of their economic system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is referred to as basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of these basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few recipes.&lt;br /&gt;
&lt;br /&gt;
It is through the &amp;quot;blandness&amp;quot; of these amenities that Iadena are encouraged to work and earn wages. With these wages, one may &amp;quot;upgrade&amp;quot; the quality of their life, whether it is better food, better entertainment, or even larger housing.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Merely having the necessary money can be insufficient to acquire certain material goods or services. Depending on the &amp;quot;merit&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods and never interfere with the acquisition of food or health and socially positive activities.&lt;br /&gt;
&lt;br /&gt;
In essence, the gist of this economic philosophy is: &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Excess Audit and Taxation ===&lt;br /&gt;
At the conclusion of each year, a portion of the Iadena population is audited. The purpose of this audit is to minimize unnecessary hoarding of wealth by checking for &amp;quot;excessive excess&amp;quot;. As such a concept is largely subjective, any audited individual flagged as excessive is allowed a defensive speech to an appeals panel to explain their intents and attachments. If the defense is unsuccessful, the individual&amp;#039;s future wages are garnished for a period of time.&lt;br /&gt;
&lt;br /&gt;
== Political System ==&lt;br /&gt;
{{stub}}&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Government and Territory}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entire planet of Iaden is overseen by a single republic entity. This entity is composed of two parts: the singular &amp;#039;&amp;#039;&amp;#039;Rada&amp;#039;&amp;#039;&amp;#039; and a select party called the &amp;#039;&amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Rada ===&lt;br /&gt;
The &amp;#039;&amp;#039;Rada&amp;#039;&amp;#039; is a singular person akin to a President, who stands as equal to the Radesa. The Rada has equivalent executive power to the Radesa, and is able to both veto their motions and introduce motions for them to discuss.&lt;br /&gt;
&lt;br /&gt;
The purpose of the Rada is to represent &amp;quot;minority&amp;quot;. The Rada&amp;#039;s job is to act in the good faith of the minority population who do not agree with majority politics. The Rada aims to keep political action anchored to reality by reminding the Radesa of the diversity of the wills of the people.&lt;br /&gt;
&lt;br /&gt;
The current incumbent Rada is [[Iliane Niy]].&lt;br /&gt;
&lt;br /&gt;
=== Radesa ===&lt;br /&gt;
The &amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039; are a cabinet of individuals who oversee the legislative workings of Iaden as a whole.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=657</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=657"/>
		<updated>2019-07-27T17:25:39Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; refers to both a nationality and native ethnic group of the planet [[Iaden]], who serve as minor antagonists in [[Magi Soldat]]. This article is specifically about the ethnic group.&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
Iadena are a humanoid race largely similar in appearance to Earth&amp;#039;s human beings. Distinguishing features include a slightly sallow skin tone and a &amp;quot;sharper&amp;quot; framing of the eyes. In terms of stature, the average Iadena will reach a height of 4-5 feet tall (approx. 120-150 cm).&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 135 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
Iadena anatomy also shares much in common with human anatomy. Notable deviations include fewer, thicker ribs, a third kidney, and a second liver.&lt;br /&gt;
&lt;br /&gt;
Generally, all bones of the Iadena skeleton are a couple millimeters thicker than their human counterparts. However, the ribs are exceptionally larger, being 3-5 millimeters thicker than human ribs. As a side-effect, Iadena have fewer ribs, though the amount of overall protection for the organs underneath remains the same. Typically, males have 10 pairs of ribs, whereas females have 11 pairs. This extra pair of ribs is situated far lower on the spinal column and is considered to be a vestigial remnant of a structure known as the &amp;#039;&amp;#039;uterine pseudo-sheath&amp;#039;&amp;#039;, a secondary rib cage that encased the uterus and developing fetus.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Ancient Iadena originally had an asymmetric pair of kidneys, the larger of which ultimately split into two smaller kidneys. Similar to humans, Iadena can survive on a single kidney.&lt;br /&gt;
&lt;br /&gt;
The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red and iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
An Iadena woman experience fertility seasons for the bulk of her young adult life. As she matures, these seasons begin to shorten until reduced to a duration comparable to human menstrual cycles. Fertility ultimately ceases after approximately 47 seasons/cycles, when the woman is about 80 years old.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily irritated by capsaicinoids. Despite this susceptibility, Iadena taste receptors are apparently unresponsive to their presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
=== Prehistory ===&lt;br /&gt;
There is evidence that prehistoric Iadena worshiped at least three different deities, including a &amp;quot;World God&amp;quot; responsible for the creation and destruction of all things, a &amp;quot;Day God&amp;quot; that gave life to these creations, and a &amp;quot;Night God&amp;quot; that took life away.&lt;br /&gt;
&lt;br /&gt;
Interpretations of relics and glyphs suggest that prehistoric Iadena believed that life force was a shared commodity, and that sleep was necessary in order to allow other living things to take on life force and act out their lives. As the sun set, it was the duty of the Night God to take life force away from the sleeping creatures and pool it beneath a great tree. As the sun rose, it was the duty of the Day God to take that pooled life force and disseminate it to the waking. Certain glyphs suggest that the giving up of life force was voluntary, and so staying awake at night may have been looked down on as selfish or heretical.&lt;br /&gt;
&lt;br /&gt;
Whether or not prehistoric Iadena believed in any form of afterlife or reincarnation is as of yet unknown.&lt;br /&gt;
&lt;br /&gt;
=== Early History ===&lt;br /&gt;
At some point early in written history, the Iadena discovered the only known cache of knowledge left behind by the [[Minor_World_Building_Elements#The_Original_Species|the Original Species]]. The effort to translate and understand this cache deeply influenced Iadena worldview over time. As they became more and more aware of the true nature of the Original Species, more and more Iadena began to abandon their primordial spirituality in favor of the cache&amp;#039;s concrete wisdom.&lt;br /&gt;
&lt;br /&gt;
This newfound &amp;quot;Cache-ism&amp;quot; asserted the Original Species as the &amp;quot;Ground Breakers&amp;quot; who were truly responsible for the creation of Iaden and the heavens surrounding it. Nearly all interpretations of this lore painted the Original Species as a new pantheon of gods.&lt;br /&gt;
&lt;br /&gt;
A number of civil wars were fought between those who believed in the lore of the cache, and those who still held to their belief in the primordial three gods.&lt;br /&gt;
&lt;br /&gt;
=== Modern Times ===&lt;br /&gt;
As the translation of the cache progressed, so too did the ideals of Cache-ism. With each passing revelation, interpretations began to slowly mortalize the Original Species. By the time the cache had reached 85% translation, many Iadena had moved away from the notion of the species as gods and had begun to embrace them as biological ancestors who once lived on Iaden themselves.&lt;br /&gt;
&lt;br /&gt;
Through translations of the cache, the Iadena also became aware of the [[God Singularity]] and other life in the universe.&lt;br /&gt;
&lt;br /&gt;
==== Manifest Destiny ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
With the canonization of Iaden as the home world of the Original Species, many Iadena believe themselves &amp;quot;chosen&amp;quot; by their ancestors as successors to their ancestors&amp;#039; dynasty. They strongly believed it was their birthright duty to protect the God Singularity at all costs.&lt;br /&gt;
&lt;br /&gt;
This belief and duty has lead to a common element of pride among Iadena, wherein they are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
==== Dissenters and Exodus ====&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Andromeda Colony}}&amp;#039;&amp;#039;&lt;br /&gt;
Some Iadena refuted their Manifest Destiny, believing that this particular interpretation of the cache was more self-serving than honest. Many of these dissenters departed from Iaden and the very galaxy itself to establish a distant colony of their own.&lt;br /&gt;
&lt;br /&gt;
Currently, there still remains a minority dissenter population on Iaden. While their dissent is protected from persecution, many choose to alienate themselves anyway, as many forms of employment indirectly empower the current military empire and its actions.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
=== Naming Conventions ===&lt;br /&gt;
Iadena typically hold two to three names: a given name, a surname (family name), and an optional functional name that provides additional information about what the person does for a living.&lt;br /&gt;
&lt;br /&gt;
Traditionally, surnames are considered less important than given and functional names. It is not uncommon for an Iadena to omit their surname outside of governmental and military settings.&lt;br /&gt;
&lt;br /&gt;
Iadena who are close friends may simply refer to each other by given name alone. Strangers or individuals in business settings refer to each other by given name and functional name.&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal entry into adulthood. &amp;quot;Adulthood&amp;quot; is a status earned rather than given. Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in their early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically an expectation rather than a celebrated event, Iadena will often celebrate young adults for their faster maturation. Oppositely, Iadena who do not attain adulthood until later in their lives are often treated as social pariahs.&lt;br /&gt;
&lt;br /&gt;
==== Sexuality ====&lt;br /&gt;
Iadena are very open about sexuality and place no social taboo or stigma on sex or sex work. However, it is still considered socially inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
For Iadena, the age of consent is not quite so straightforward. Only Iadena adults can give consent, but only after reaching full biological maturation --an age of about 24-25 Earth years. Thus, it is possible for an Iadena to be legally an adult yet unable to give consent, or old enough to consent yet not legally an adult. It is considered a moderate felony if any party involved in sexual activity is either not an adult or unable to consent. It is a severe felony to the highest degree if any party involved meets neither requirement.&lt;br /&gt;
&lt;br /&gt;
In cases where all relevant parties are adults but unable to consent, the parties may petition for an affidavit of exception. For individuals not considered adults but are of age, there are old bylaws that allow for seeking an affidavit of sexual health. However, these bylaws have been rendered all but obsolete by most all modern courts.&lt;br /&gt;
&lt;br /&gt;
==== Gender Identity ====&lt;br /&gt;
Historically, Iadena embraced a rigid sex-aligned gender binary. With advances in medical science over time, Iadena culture as a whole opened up to the notion of transgender identities. Today, there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, on the other hand, are often met with small amounts of resistance and annoyance due to being considered less-straightforward in nature. &lt;br /&gt;
&lt;br /&gt;
Fortunately, identity is a protected class without exception.&lt;br /&gt;
&lt;br /&gt;
=== Family Familial Unions ===&lt;br /&gt;
Iadena families tend to be chosen, rather than assigned through genetic relationship. While paternity and maternity are important recorded details, there is no cultural emphasis to consider one&amp;#039;s father or mother to be &amp;quot;family&amp;quot;. Rather, Iadena are encouraged to choose their family over time.&lt;br /&gt;
&lt;br /&gt;
Iadena do not have &amp;quot;marriage&amp;quot; in the traditional human sense, instead practicing a tradition known as familial unions. A familial union is a document defining significant relationships between individuals. This includes partnerships, non-partner significant others, and parent-child relationships. Forming a union also enables the relevant parties to gain situational co-authority where applicable. Any number of individuals may union together legally, though it is considered to be in bad taste for a union to be larger than five or six persons.&lt;br /&gt;
&lt;br /&gt;
=== Dining Etiquette ===&lt;br /&gt;
Iadena typically eat four meals per day. When possible, they prefer to eat together in groups, and whoever is last to finish takes the responsibility to clean up and/or pay any bills. It is not considered rude to leave when finished, even if others are still eating.&lt;br /&gt;
&lt;br /&gt;
Iadena are not above eating with their hands, but will also employ a utensil in the form of a singular, pointed &amp;quot;chopstick&amp;quot;. It is a culinary and social faux pas to present to others food that requires cutting or tearing into smaller, more manageable pieces.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of their economic system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is referred to as basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of these basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few recipes.&lt;br /&gt;
&lt;br /&gt;
It is through the &amp;quot;blandness&amp;quot; of these amenities that Iadena are encouraged to work and earn wages. With these wages, one may &amp;quot;upgrade&amp;quot; the quality of their life, whether it is better food, better entertainment, or even larger housing.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Merely having the necessary money can be insufficient to acquire certain material goods or services. Depending on the &amp;quot;merit&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods and never interfere with the acquisition of food or health and socially positive activities.&lt;br /&gt;
&lt;br /&gt;
In essence, the gist of this economic philosophy is: &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Excess Audit and Taxation ===&lt;br /&gt;
At the conclusion of each year, a portion of the Iadena population is audited. The purpose of this audit is to minimize unnecessary hoarding of wealth by checking for &amp;quot;excessive excess&amp;quot;. As such a concept is largely subjective, any audited individual flagged as excessive is allowed a defensive speech to an appeals panel to explain their intents and attachments. If the defense is unsuccessful, the individual&amp;#039;s future wages are garnished for a period of time.&lt;br /&gt;
&lt;br /&gt;
== Political System ==&lt;br /&gt;
{{stub}}&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Government and Territory}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entire planet of Iaden is overseen by a single republic entity. This entity is composed of two parts: the singular &amp;#039;&amp;#039;&amp;#039;Rada&amp;#039;&amp;#039;&amp;#039; and a select party called the &amp;#039;&amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Rada ===&lt;br /&gt;
The &amp;#039;&amp;#039;Rada&amp;#039;&amp;#039; is a singular person akin to a President, who stands as equal to the Radesa. The Rada has equivalent executive power to the Radesa, and is able to both veto their motions and introduce motions for them to discuss.&lt;br /&gt;
&lt;br /&gt;
The purpose of the Rada is to represent &amp;quot;minority&amp;quot;. The Rada&amp;#039;s job is to act in the good faith of the minority population who do not agree with majority politics. The Rada aims to keep political action anchored to reality by reminding the Radesa of the diversity of the wills of the people.&lt;br /&gt;
&lt;br /&gt;
The current incumbent Rada is [[Iliane Niy]].&lt;br /&gt;
&lt;br /&gt;
=== Radesa ===&lt;br /&gt;
The &amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039; are a cabinet of individuals who oversee the legislative workings of Iaden as a whole.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=656</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=656"/>
		<updated>2019-07-26T03:56:03Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; refers to both a nationality and native ethnic group of the planet [[Iaden]], who serve as minor antagonists in [[Magi Soldat]]. This article is specifically about the ethnic group.&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
Iadena are a humanoid race largely similar in appearance to Earth&amp;#039;s human beings. Distinguishing features include a slightly sallow skin tone and a &amp;quot;sharper&amp;quot; framing of the eyes. In terms of stature, the average Iadena will reach a height of 4-5 feet tall (approx. 120-150 cm).&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 135 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
Iadena anatomy also shares much in common with human anatomy. Notable deviations include fewer, thicker ribs, a third kidney, and a second liver.&lt;br /&gt;
&lt;br /&gt;
Generally, all bones of the Iadena skeleton are a couple millimeters thicker than their human counterparts. However, the ribs are exceptionally larger, being 3-5 millimeters thicker than human ribs. As a side-effect, Iadena have fewer ribs, though the amount of overall protection for the organs underneath remains the same. Typically, males have 10 pairs of ribs, whereas females have 11 pairs. This extra pair of ribs is situated far lower on the spinal column and is considered to be a vestigial remnant of a structure known as the &amp;#039;&amp;#039;uterine pseudo-sheath&amp;#039;&amp;#039;, a secondary rib cage that encased the uterus and developing fetus.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Ancient Iadena originally had an asymmetric pair of kidneys, the larger of which ultimately split into two smaller kidneys. Similar to humans, Iadena can survive on a single kidney.&lt;br /&gt;
&lt;br /&gt;
The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red and iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
An Iadena woman experience fertility seasons for the bulk of her young adult life. As she matures, these seasons begin to shorten until reduced to a duration comparable to human menstrual cycles. Fertility ultimately ceases after approximately 47 seasons/cycles, when the woman is about 80 years old.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily irritated by capsaicinoids. Despite this susceptibility, Iadena taste receptors are apparently unresponsive to their presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
Iadena are largely atheistic as a people. Rather than believing in deities or spirits, Iadena life and culture is largely influenced by [[Minor_World_Building_Elements#The_Original_Species|the Original Species]].&lt;br /&gt;
&lt;br /&gt;
Due to the presence of the only known cache of Original Species knowledge on Iaden, the Iadena believe that their home world was also the home world of the Original Species, and that they themselves were &amp;quot;chosen&amp;quot; by the Original Species as successors to their dynasty. This belief has lead to a common element of pride, wherein Iadena are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
=== Naming Conventions ===&lt;br /&gt;
Iadena typically hold two to three names: a given name, a surname (family name), and an optional functional name that provides additional information about what the person does for a living. &lt;br /&gt;
&lt;br /&gt;
Traditionally, surnames are considered less important than given and functional names. It isn&amp;#039;t uncommon for an Iadena to introduce themselves by given and functional name alone outside of governmental and military settings.&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal entry into adulthood. &amp;quot;Adulthood&amp;quot; is a status earned rather than given. Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in their early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically an expectation rather than a celebrated event, Iadena will often celebrate young adults for their faster maturation. Oppositely, Iadena who do not attain adulthood until later in their lives are often treated as social pariahs.&lt;br /&gt;
&lt;br /&gt;
==== Sexuality ====&lt;br /&gt;
Iadena are very open about sexuality and place no social taboo or stigma on sex or sex work. However, it is still considered socially inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
For Iadena, the age of consent is not quite so straightforward. Only Iadena adults can give consent, but only after reaching full biological maturation --an age of about 24-25 Earth years. Thus, it is possible for an Iadena to be legally an adult yet unable to give consent, or old enough to consent yet not legally an adult. It is considered a moderate felony if any party involved in sexual activity is either not an adult or unable to consent. It is a severe felony to the highest degree if any party involved meets neither requirement.&lt;br /&gt;
&lt;br /&gt;
In cases where all relevant parties are adults but unable to consent, the parties may petition for an affidavit of exception. For individuals not considered adults but are of age, there are old bylaws that allow for seeking an affidavit of sexual health. However, these bylaws have been rendered all but obsolete by most all modern courts.&lt;br /&gt;
&lt;br /&gt;
==== Gender Identity ====&lt;br /&gt;
Historically, Iadena embraced a rigid sex-aligned gender binary. With advances in medical science over time, Iadena culture as a whole opened up to the notion of transgender identities. Today, there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, on the other hand, are often met with small amounts of resistance and annoyance due to being considered less-straightforward in nature. &lt;br /&gt;
&lt;br /&gt;
Fortunately, identity is a protected class without exception.&lt;br /&gt;
&lt;br /&gt;
=== Dining Etiquette ===&lt;br /&gt;
Iadena typically eat four meals per day. When possible, they prefer to eat together in groups, and whoever is last to finish takes the responsibility to clean up and/or pay any bills. It is not considered rude to leave when finished, even if others are still eating.&lt;br /&gt;
&lt;br /&gt;
Iadena are not above eating with their hands, but will also employ a utensil in the form of a singular, pointed &amp;quot;chopstick&amp;quot;. It is a culinary and social faux pas to present to others food that requires cutting or tearing into smaller, more manageable pieces.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of their economic system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is referred to as basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of these basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few recipes.&lt;br /&gt;
&lt;br /&gt;
It is through the &amp;quot;blandness&amp;quot; of these amenities that Iadena are encouraged to work and earn wages. With these wages, one may &amp;quot;upgrade&amp;quot; the quality of their life, whether it is better food, better entertainment, or even larger housing.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Merely having the necessary money can be insufficient to acquire certain material goods or services. Depending on the &amp;quot;merit&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods and never interfere with the acquisition of food or health and socially positive activities.&lt;br /&gt;
&lt;br /&gt;
In essence, the gist of this economic philosophy is: &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Excess Audit and Taxation ===&lt;br /&gt;
At the conclusion of each year, a portion of the Iadena population is audited. The purpose of this audit is to minimize unnecessary hoarding of wealth by checking for &amp;quot;excessive excess&amp;quot;. As such a concept is largely subjective, any audited individual flagged as excessive is allowed a defensive speech to an appeals panel to explain their intents and attachments. If the defense is unsuccessful, the individual&amp;#039;s future wages are garnished for a period of time.&lt;br /&gt;
&lt;br /&gt;
== Political System ==&lt;br /&gt;
{{stub}}&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Government and Territory}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entire planet of Iaden is overseen by a single republic entity. This entity is composed of two parts: the singular &amp;#039;&amp;#039;&amp;#039;Rada&amp;#039;&amp;#039;&amp;#039; and a select party called the &amp;#039;&amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Rada ===&lt;br /&gt;
The &amp;#039;&amp;#039;Rada&amp;#039;&amp;#039; is a singular person akin to a President, who stands as equal to the Radesa. The Rada has equivalent executive power to the Radesa, and is able to both veto their motions and introduce motions for them to discuss.&lt;br /&gt;
&lt;br /&gt;
The purpose of the Rada is to represent &amp;quot;minority&amp;quot;. The Rada&amp;#039;s job is to act in the good faith of the minority population who do not agree with majority politics. The Rada aims to keep political action anchored to reality by reminding the Radesa of the diversity of the wills of the people.&lt;br /&gt;
&lt;br /&gt;
The current incumbent Rada is [[Iliane Niy]].&lt;br /&gt;
&lt;br /&gt;
=== Radesa ===&lt;br /&gt;
The &amp;#039;&amp;#039;Radesa&amp;#039;&amp;#039; are a cabinet of individuals who oversee the legislative workings of Iaden as a whole.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=655</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=655"/>
		<updated>2019-07-25T23:16:29Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; are a nation and ethnic group native to the planet [[Iaden]], who serve as minor antagonists in [[Magi Soldat]].&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
&lt;br /&gt;
Iadena are a humanoid race largely similar in appearance to Earth&amp;#039;s human beings. Distinguishing features include a slightly sallow skin tone and a &amp;quot;sharper&amp;quot; framing of the eyes. In terms of stature, the average Iadena will reach a height of 4-5 feet tall (approx. 120-150 cm).&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 170 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
&lt;br /&gt;
Iadena anatomy also shares much in common with human anatomy. Notable deviations include fewer, thicker ribs, a third kidney, and a second liver.&lt;br /&gt;
&lt;br /&gt;
Generally, all bones of the Iadena skeleton are a couple millimeters thicker than their human counterparts. However, the ribs are exceptionally larger, being 3-5 millimeters thicker than human ribs. As a side-effect, Iadena have fewer ribs, though the amount of overall protection for the organs underneath remains the same. Typically, males have 10 pairs of ribs, whereas females have 11 pairs. This extra pair of ribs is situated far lower on the spinal column and is considered to be a vestigial remnant of a structure known as the &amp;#039;&amp;#039;uterine pseudo-sheath&amp;#039;&amp;#039;, a secondary rib cage that encased the uterus and developing fetus.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Ancient Iadena originally had an asymmetric pair of kidneys, the larger of which ultimately split into two smaller kidneys. Similar to humans, Iadena can survive on a single kidney.&lt;br /&gt;
&lt;br /&gt;
The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red and iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
An Iadena woman experience fertility seasons for the bulk of her young adult life. As she matures, these seasons begin to shorten until reduced to a duration comparable to human menstrual cycles. Fertility ultimately ceases after approximately 47 seasons/cycles, when the woman is about 80 years old.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily irritated by capsaicinoids. Despite this susceptibility, Iadena taste receptors are apparently unresponsive to their presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
Iadena are largely atheistic as a people. Rather than believing in deities or spirits, Iadena life and culture is largely influenced by [[Minor_World_Building_Elements#The_Original_Species|the Original Species]].&lt;br /&gt;
&lt;br /&gt;
Due to the presence of the only known cache of Original Species knowledge on Iaden, the Iadena believe that their home world was also the home world of the Original Species, and that they themselves were &amp;quot;chosen&amp;quot; by the Original Species as successors to their dynasty. This belief has lead to a common element of pride, wherein Iadena are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal adulthood. Rather, Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in the early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically not a celebrated event, Iadena will often celebrate young adults for their faster maturation.&lt;br /&gt;
&lt;br /&gt;
=== Sexuality ===&lt;br /&gt;
Iadena are openly sexual and embrace all forms of sexuality. Sex is not considered a taboo subject, nor is prostitution and other sex work forbidden. However, it is still considered culturally inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
There is no specific Iadena age of consent. The age of consent for any given individual occurs when they are granted legal adulthood status. For those not considered adults, an affidavit of sexual health may be acquired that permits the individual to seek sexual service. However, most social circles consider it more appropriate to simply provide the individual with masturbatory aides.&lt;br /&gt;
&lt;br /&gt;
=== Gender Identity ===&lt;br /&gt;
Iadena recognize binary transgender identities and there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, however, are often met with small amounts of resistance due to the less statically defined nature of non-binary identities.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of this system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is the basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few types of meals.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Though Iadena do receive wages for their work, merely having the money can be insufficient to purchase certain material goods or services. Depending on the &amp;quot;merit status&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods. It would be somewhat correct to consider the philosophy to be &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Main_Page&amp;diff=654</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="index.php?title=Main_Page&amp;diff=654"/>
		<updated>2019-07-25T20:55:47Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the Canonical Works Universe (CWU) Wiki!&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The CWU Wiki is a repository of information about works, characters, and concepts by StarSumiaki. Be warned that articles may be or contain spoilers for works either currently serializing or slated to serialize in some hypothetical future.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Sakezanjin&amp;diff=653</id>
		<title>Sakezanjin</title>
		<link rel="alternate" type="text/html" href="index.php?title=Sakezanjin&amp;diff=653"/>
		<updated>2019-01-27T10:08:16Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;{{spoilersFuture}} &amp;#039;&amp;#039;&amp;#039;Sakezanjin&amp;#039;&amp;#039;&amp;#039; (サケザン人) are a race of demi-humans.  == Name == The name &amp;#039;&amp;#039;Sakezanjin&amp;#039;&amp;#039; is derived from the phrase &amp;#039;&amp;#039;sake isan&amp;#039;&amp;#039; (酒遺産), mean...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{spoilersFuture}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sakezanjin&amp;#039;&amp;#039;&amp;#039; (サケザン人) are a race of demi-humans.&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
The name &amp;#039;&amp;#039;Sakezanjin&amp;#039;&amp;#039; is derived from the phrase &amp;#039;&amp;#039;sake isan&amp;#039;&amp;#039; (酒遺産), meaning &amp;quot;liquor heritage&amp;quot;. In essence, their name can be read to mean &amp;quot;People of Liquor Heritage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Physiology==&lt;br /&gt;
&lt;br /&gt;
=== Transformations ===&lt;br /&gt;
Sakezanjin are capable of undergoing various physical transformations as a byproduct of their divinely-created biology. These forms enable them to better utilize ki, better metabolize alcohol, or achieve other feats not normally possible in their default states.&lt;br /&gt;
&lt;br /&gt;
While many transformations are present but merely latent within their genetic code, it is apparently possible for some Sakezanjin to spontaneously develop or otherwise evolve new transformations on an ad-hoc basis.&lt;br /&gt;
&lt;br /&gt;
==== Super Sakezanjin ====&lt;br /&gt;
When subject to an overwhelming amount of emotion, Sakezanjin are capable of entering a temporary state that boosts their metabolic efficiency. This form, known as &amp;#039;&amp;#039;Super Sakezanjin&amp;#039;&amp;#039;, is characterized by the Sakezanjin&amp;#039;s hair turning blonde and stiffly spiking outward and upward, and their irides turning a blueish-green color.&lt;br /&gt;
&lt;br /&gt;
In this form, a Sakezanjin&amp;#039;s metabolic efficiency doubles, reducing the [[ki#aoki|ki]] cost of processing alcohol by half.&lt;br /&gt;
&lt;br /&gt;
With practice, it is possible to memorize the sensations involved with the transformation, allowing for the form to be called upon at will.&lt;br /&gt;
&lt;br /&gt;
==== Shin Super Sakezanjin ====&lt;br /&gt;
Sakezanjin who have attained and mastered the Super Sakezanjin form can further evolve its power by pushing the form to its limit. This can come in the form of yet further emotional turmoil or through intense training. This form is characterized by the Sakezanjin&amp;#039;s hair growing much longer and wilder.&lt;br /&gt;
&lt;br /&gt;
In this form, a Sakezanjin&amp;#039;s metabolic efficiency is doubled yet again, granting an ultimately quadruple efficiency boost over their basal metabolic rate.&lt;br /&gt;
&lt;br /&gt;
==== Sakezanjin God ====&lt;br /&gt;
A Sakezanjin who has mastered [[godly breathing]] is capable of taking on the form of a &amp;#039;&amp;#039;Sakezanjin God&amp;#039;&amp;#039;. This form is characterized by the Sakezanjin&amp;#039;s hair and irides turning a pinkish red.&lt;br /&gt;
&lt;br /&gt;
The form is named &amp;#039;&amp;#039;God&amp;#039;&amp;#039; not for its capabilities, but for its nature. In this state, the Sakezanjin no longer produces [[ki#midori_ki|mortal ki]] and is capable of absorbing, retaining, and directly using ambient &amp;#039;&amp;#039;aoki&amp;#039;&amp;#039;, much like deities do. However, unlike true deities, the &amp;#039;&amp;#039;Sakezanjin God&amp;#039;&amp;#039; state cannot both take in and utilize &amp;#039;&amp;#039;aoki&amp;#039;&amp;#039; in the same breaths. Rather, a Sakezanjin must first fill themselves with as much &amp;#039;&amp;#039;aoki&amp;#039;&amp;#039; as possible, and then make use of it in the transformed &amp;#039;&amp;#039;God&amp;#039;&amp;#039; state.&lt;br /&gt;
&lt;br /&gt;
==== Super Sakezanjin God ====&lt;br /&gt;
The result of applying super transformation while in the &amp;#039;&amp;#039;Sakezanjin God&amp;#039;&amp;#039; state, this form is arguably the peak transformative state of a Sakezanjin. In this form, the Sakezanjin is both directly utilizing &amp;#039;&amp;#039;aoki&amp;#039;&amp;#039; and operating at a higher metabolic efficiency.&lt;br /&gt;
&lt;br /&gt;
This form is visually similar to a normal &amp;#039;&amp;#039;Super Sakezanjin&amp;#039;&amp;#039;, but both hair and irides take on a blueish hue.&lt;br /&gt;
&lt;br /&gt;
This form is sometimes also called &amp;#039;&amp;#039;&amp;#039;Sakezanjin Super God&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Sakezanjin God Super Sakezanjin&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== Super God Beyond Super ====&lt;br /&gt;
A theoretical form wherein a Sakezanjin assumes the &amp;#039;&amp;#039;God&amp;#039;&amp;#039; state and then powers up to &amp;#039;&amp;#039;Shin Super Sakezanjin&amp;#039;&amp;#039;. The form is considered to be either impossible or lethal if performed, due to the overwhelming physical stress involved in both pushing a super transformation to its limit and retaining &amp;#039;&amp;#039;aoki&amp;#039;&amp;#039; inside the body.&lt;br /&gt;
&lt;br /&gt;
==== Ultra Muscle Memory (Glimpse) ====&lt;br /&gt;
&amp;#039;&amp;#039;{{see also|Ultra Muscle Memory (Technique)}}&amp;#039;&amp;#039;&lt;br /&gt;
:: &amp;#039;&amp;#039;&amp;quot;The more a body performs an action, the more it memorizes the motions involved in that action. At some point, the body becomes capable of performing those actions with little to no conscious input from the brain.&amp;quot;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Sakezanjin who have been pushed far beyond their utmost limits physically and spiritually, to the brink of unconsciousness, may find their body continuing to act without them. Even without conscious input, the Sakezanjin&amp;#039;s body continues to perform the tasks laid before it.&lt;br /&gt;
&lt;br /&gt;
==== Mastered Ultra Muscle Memory ====&lt;br /&gt;
:: &amp;#039;&amp;#039;&amp;quot;Muscle memory is not strictly repeating the same steps. With time, the body will fine-tune the process and achieve the most efficient equilibrium. Perhaps... even evolution is not beyond muscle memory&amp;#039;s grasp in that regard.&amp;quot;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The theoretical ultimate, final conclusion to Ultra Muscle Memory. In this state of being, the Sakezanjin&amp;#039;s body not only reacts to external stimuli through its own muscle memory, but actively fine tunes every biological process involved in those reactions. It is possible that the body will even break its own limiters if it has to.&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, achieving this state of being causes a Sakezanjin&amp;#039;s hair and irides to turn silver.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=652</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=652"/>
		<updated>2019-01-24T23:55:00Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; are a nation and ethnic group native to the planet [[Iaden]], who serve as minor antagonists in [[Magi Soldat]].&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
&lt;br /&gt;
Iadena are a humanoid race largely visually similar to humans. In terms of stature, the average Iadena tends to reach heights of around 5 feet (approx. 1.5 meters) and sport a thin musculature.&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 170 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
&lt;br /&gt;
Iadena internal anatomy shares much in common with human internal anatomy, with only a few deviations in the form of a third kidney and a second liver.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Primitive Iadena originally had an asymmetric pair of kidneys. The larger second kidney ultimately split into two smaller kidneys. The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
The Iadena skeleton is slightly thicker than a human skeleton, and its rib cage contains only 11 pairs of ribs.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red, iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
Iadena women experience fertility seasons for the bulk of their young adult lives. As they mature, these seasons begin to shorten until reduced to a duration comparable to human menstruation.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily susceptible to capsaicinoids. Consumption of capsaicinoids can incapacitate an Iadena with severe pain and diarrhea. Oddly, despite this susceptibility, Iadena taste receptors are apparently unresponsive to its presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
Historically, Iadena primarily spoke &amp;#039;&amp;#039;Iadenol&amp;#039;&amp;#039; and a few other derivative dialects. Iadenol is considered a [https://en.wikipedia.org/wiki/Language_isolate language isolate] and the first known language of the Iadena.&lt;br /&gt;
&lt;br /&gt;
In contemporary times, Iadena primarily speak &amp;#039;&amp;#039;Iali&amp;#039;&amp;#039;. Iali is a constructed derivation of Iadenol created by the Iadena government to promote linguistic elegance, and facilitate a higher information bandwidth in documentation and communication. Since its enforcement as a primary language, the Iadena government has put forth immense efforts to convert and translate media from Iadenol to Iali. Some works have been completely replaced with new Iali versions, while others have dual Iadenol and Iali formats. Only certain historic literary works remain untouched.&lt;br /&gt;
&lt;br /&gt;
Though it still remains possible to learn Iadenol as an educational elective, government subsidy of the pursuit has slowly diminished. A number of anthropologists and rural Iadena have criticized this decision vis-a-vis the ongoing conversion efforts as a form of censorship.&lt;br /&gt;
&lt;br /&gt;
== Religion ==&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iadena Manifest Destiny}}&amp;#039;&amp;#039;&lt;br /&gt;
Iadena are largely atheistic as a people. Rather than believing in deities or spirits, Iadena life and culture is largely influenced by [[Minor_World_Building_Elements#The_Original_Species|the Original Species]].&lt;br /&gt;
&lt;br /&gt;
Due to the presence of the only known cache of Original Species knowledge on Iaden, the Iadena believe that their home world was also the home world of the Original Species, and that they themselves were &amp;quot;chosen&amp;quot; by the Original Species as successors to their dynasty. This belief has lead to a common element of pride, wherein Iadena are compelled to be productive and contributing members of society in the name of their Manifest Destiny.&lt;br /&gt;
&lt;br /&gt;
== Culture and Society ==&lt;br /&gt;
&lt;br /&gt;
=== Coming of Age and Adulthood ===&lt;br /&gt;
Iadena do not consider any specific age to signal adulthood. Rather, Iadena are encouraged to apply for adulthood status when they feel ready. This process involves a number of physical and mental examinations intended to gauge the maturity of the individual. For most Iadena, this process occurs after all educational endeavors are complete, which tends to occur in the early 20s.&lt;br /&gt;
&lt;br /&gt;
Occasionally, a particularly young Iadena will attain legally recognized adulthood. While adulthood is typically not a celebrated event, Iadena will often celebrate young adults for their faster maturation.&lt;br /&gt;
&lt;br /&gt;
=== Sexuality ===&lt;br /&gt;
Iadena are openly sexual and embrace all forms of sexuality. Sex is not considered a taboo subject, nor is prostitution and other sex work forbidden. However, it is still considered culturally inappropriate to mention the subject or proposition a person in professional environments.&lt;br /&gt;
&lt;br /&gt;
There is no specific Iadena age of consent. The age of consent for any given individual occurs when they are granted legal adulthood status. For those not considered adults, an affidavit of sexual health may be acquired that permits the individual to seek sexual service. However, most social circles consider it more appropriate to simply provide the individual with masturbatory aides.&lt;br /&gt;
&lt;br /&gt;
=== Gender Identity ===&lt;br /&gt;
Iadena recognize binary transgender identities and there is very little discriminatory behavior towards binary transgender individuals. Nonbinary transgender identities, however, are often met with small amounts of resistance due to the less statically defined nature of non-binary identities.&lt;br /&gt;
&lt;br /&gt;
== Economic System ==&lt;br /&gt;
The Iadena economy is a partial &amp;quot;merit&amp;quot; system that provides only the bare necessities and offers additional material goods and rewards as an incentive for merited behaviors.&lt;br /&gt;
&lt;br /&gt;
=== Basal Equity ===&lt;br /&gt;
At the core of this system, all Iadena are unconditionally guaranteed the right to a roof, a bed, an appropriate amount of meals per day, and access to education and educational information. This is the basal equity --the right to an equivalent start. No matter what an Iadena chooses to do with their life, they will always have these amenities.&lt;br /&gt;
&lt;br /&gt;
The quality of basal amenities is suitable, but often as minimal as possible. Housing is often considerably small, consisting of just enough room for a bed, a bathroom, a small kitchenette, and a table with a computer terminal. Food is nutritious and portioned, but often limited to only a few types of meals.&lt;br /&gt;
&lt;br /&gt;
=== Acquisition Privilege ===&lt;br /&gt;
Though Iadena do receive wages for their work, merely having the money can be insufficient to purchase certain material goods or services. Depending on the &amp;quot;merit status&amp;quot; of their employment, some Iadena are restricted from certain transactions. Typically, these restrictions only apply to frivolous goods. It would be somewhat correct to consider the philosophy to be &amp;quot;the more useful you are, the more materialistic you may be&amp;quot;.&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Iadena&amp;diff=651</id>
		<title>Iadena</title>
		<link rel="alternate" type="text/html" href="index.php?title=Iadena&amp;diff=651"/>
		<updated>2019-01-16T02:24:59Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; are a nation and ethnic group native to the planet Iaden, who serve as minor antagonists in Magi Soldat.  == Physiology ==  Iadena are a humanoid race...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;Iadena&amp;#039;&amp;#039;&amp;#039; are a nation and ethnic group native to the planet [[Iaden]], who serve as minor antagonists in [[Magi Soldat]].&lt;br /&gt;
&lt;br /&gt;
== Physiology ==&lt;br /&gt;
&lt;br /&gt;
Iadena are a humanoid race largely visually similar to humans. In terms of stature, the average Iadena tends to reach heights of around 5 feet (approx. 1.5 meters) and sport a thin musculature.&lt;br /&gt;
&lt;br /&gt;
Iadena typically live to upwards of 170 Earth years.&lt;br /&gt;
&lt;br /&gt;
=== Internal Anatomy ===&lt;br /&gt;
&lt;br /&gt;
Iadena internal anatomy shares much in common with human internal anatomy, with only a few deviations in the form of a third kidney and a second liver.&lt;br /&gt;
&lt;br /&gt;
The third kidney is of no special purpose. Primitive Iadena originally had an asymmetric pair of kidneys. The larger second kidney ultimately split into two smaller kidneys. The Iadena second liver is a specialized organ for handling toxins found in various tubers. It is significantly smaller than the primary liver.&lt;br /&gt;
&lt;br /&gt;
The Iadena skeleton is slightly thicker than a human skeleton, and its rib cage contains only 11 pairs of ribs.&lt;br /&gt;
&lt;br /&gt;
==== Blood and Typing ====&lt;br /&gt;
&lt;br /&gt;
Iadena blood is functionally identical to human blood. It is richly red, iron-based, and makes use of hemoglobin for oxygen transport. Iadena possess their own set of antigens, which differentiate their blood types into 6 common groups.&lt;br /&gt;
&lt;br /&gt;
==== Reproduction and Sexual Organs ====&lt;br /&gt;
&lt;br /&gt;
Iadena are sexually dimorphic, and possess sexual organs comparable to those of humans and other Earth mammals. Iadena also reproduce through sexual intercourse.&lt;br /&gt;
&lt;br /&gt;
Iadena women experience fertility seasons for the bulk of their young adult lives. As they mature, these seasons begin to shorten until reduced to a duration comparable to human menstruation.&lt;br /&gt;
&lt;br /&gt;
=== Diet ===&lt;br /&gt;
&lt;br /&gt;
Iadena are biologically omnivorous, and are capable of consuming most edible matter. However, despite this metabolic versatility, the average Iadena is largely vegetarian, with the bulk of a typical Iadena diet coming from starches and fruits. This diet is supplemented with lesser vegetables to promote variety in flavor profiles and synthesized proteins to achieve nutritional completeness.&lt;br /&gt;
&lt;br /&gt;
This particular dietary strictness is a side-effect of the Iadena being a largely space-faring people. The necessity of rationing and considering storage constraints led to the Iadena people disfavoring foods with larger overhead. This, in turn, led to the Iadena shying away from meat, nuts, legumes, certain grains, and dairy. These types of foods are often relegated to special occasions, such as the [[Festival of our Heritage]], or niche independent restaurants.&lt;br /&gt;
&lt;br /&gt;
Iadena avoid spicy foods entirely, as their digestive tracts are heavily susceptible to capsaicinoids. Consumption of capsaicinoids can incapacitate an Iadena with severe pain and diarrhea. Oddly, despite this susceptibility, Iadena taste receptors are apparently unresponsive to its presence.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;{{See also|Iali}}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Culture ==&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:See_also&amp;diff=650</id>
		<title>Template:See also</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:See_also&amp;diff=650"/>
		<updated>2019-01-16T02:20:04Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: Replaced content with &amp;quot;&amp;lt;includeonly&amp;gt;{{#invoke:Labelled list hatnote|labelledList|See also}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- Categories go on the /doc subpage, and interwikis go o...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Labelled list hatnote|labelledList|See also}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Navbox&amp;diff=647</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Navbox&amp;diff=647"/>
		<updated>2019-01-16T02:01:45Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Navbox}}&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local navbar = require(&amp;#039;Module:Navbar&amp;#039;)._navbar&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
local args&lt;br /&gt;
local border&lt;br /&gt;
local listnums&lt;br /&gt;
local ODD_EVEN_MARKER = &amp;#039;\127_ODDEVEN_\127&amp;#039;&lt;br /&gt;
local RESTART_MARKER = &amp;#039;\127_ODDEVEN0_\127&amp;#039;&lt;br /&gt;
local REGEX_MARKER = &amp;#039;\127_ODDEVEN(%d?)_\127&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function striped(wikitext)&lt;br /&gt;
	-- Return wikitext with markers replaced for odd/even striping.&lt;br /&gt;
	-- Child (subgroup) navboxes are flagged with a category that is removed&lt;br /&gt;
	-- by parent navboxes. The result is that the category shows all pages&lt;br /&gt;
	-- where a child navbox is not contained in a parent navbox.&lt;br /&gt;
	local orphanCat = &amp;#039;[[Category:Navbox orphans]]&amp;#039;&lt;br /&gt;
	if border == &amp;#039;subgroup&amp;#039; and args.orphan ~= &amp;#039;yes&amp;#039; then&lt;br /&gt;
		-- No change; striping occurs in outermost navbox.&lt;br /&gt;
		return wikitext .. orphanCat&lt;br /&gt;
	end&lt;br /&gt;
	local first, second = &amp;#039;odd&amp;#039;, &amp;#039;even&amp;#039;&lt;br /&gt;
	if args.evenodd then&lt;br /&gt;
		if args.evenodd == &amp;#039;swap&amp;#039; then&lt;br /&gt;
			first, second = second, first&lt;br /&gt;
		else&lt;br /&gt;
			first = args.evenodd&lt;br /&gt;
			second = first&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local changer&lt;br /&gt;
	if first == second then&lt;br /&gt;
		changer = first&lt;br /&gt;
	else&lt;br /&gt;
		local index = 0&lt;br /&gt;
		changer = function (code)&lt;br /&gt;
			if code == &amp;#039;0&amp;#039; then&lt;br /&gt;
				-- Current occurrence is for a group before a nested table.&lt;br /&gt;
				-- Set it to first as a valid although pointless class.&lt;br /&gt;
				-- The next occurrence will be the first row after a title&lt;br /&gt;
				-- in a subgroup and will also be first.&lt;br /&gt;
				index = 0&lt;br /&gt;
				return first&lt;br /&gt;
			end&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			return index % 2 == 1 and first or second&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local regex = orphanCat:gsub(&amp;#039;([%[%]])&amp;#039;, &amp;#039;%%%1&amp;#039;)&lt;br /&gt;
	return (wikitext:gsub(regex, &amp;#039;&amp;#039;):gsub(REGEX_MARKER, changer))  -- () omits gsub count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processItem(item, nowrapitems)&lt;br /&gt;
	if item:sub(1, 2) == &amp;#039;{|&amp;#039; then&lt;br /&gt;
		-- Applying nowrap to lines in a table does not make sense.&lt;br /&gt;
		-- Add newlines to compensate for trim of x in |parm=x in a template.&lt;br /&gt;
		return &amp;#039;\n&amp;#039; .. item ..&amp;#039;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if nowrapitems == &amp;#039;yes&amp;#039; then&lt;br /&gt;
		local lines = {}&lt;br /&gt;
		for line in (item .. &amp;#039;\n&amp;#039;):gmatch(&amp;#039;([^\n]*)\n&amp;#039;) do&lt;br /&gt;
			local prefix, content = line:match(&amp;#039;^([*:;#]+)%s*(.*)&amp;#039;)&lt;br /&gt;
			if prefix and not content:match(&amp;#039;^&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039;) then&lt;br /&gt;
				line = prefix .. &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. content .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, line)&lt;br /&gt;
		end&lt;br /&gt;
		item = table.concat(lines, &amp;#039;\n&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if item:match(&amp;#039;^[*:;#]&amp;#039;) then&lt;br /&gt;
		return &amp;#039;\n&amp;#039; .. item ..&amp;#039;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return item&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	if args.navbar ~= &amp;#039;off&amp;#039; and args.navbar ~= &amp;#039;plain&amp;#039; and not (not args.name and mw.getCurrentFrame():getParent():getTitle():gsub(&amp;#039;/sandbox$&amp;#039;, &amp;#039;&amp;#039;) == &amp;#039;Template:Navbox&amp;#039;) then&lt;br /&gt;
		titleCell:wikitext(navbar{&lt;br /&gt;
			args.name,&lt;br /&gt;
			mini = 1,&lt;br /&gt;
			fontstyle = (args.basestyle or &amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039; .. (args.titlestyle or &amp;#039;&amp;#039;) .. &amp;#039;;background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none; padding:0;&amp;#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Title row&lt;br /&gt;
--&lt;br /&gt;
local function renderTitleRow(tbl)&lt;br /&gt;
	if not args.title then return end&lt;br /&gt;
&lt;br /&gt;
	local titleRow = tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleRow&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-group&amp;#039;)&lt;br /&gt;
				:addClass(args.titlegroupclass)&lt;br /&gt;
				:cssText(args.basestyle)&lt;br /&gt;
				:cssText(args.groupstyle)&lt;br /&gt;
				:cssText(args.titlegroupstyle)&lt;br /&gt;
				:wikitext(args.titlegroup)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleCell = titleRow:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;scope&amp;#039;, &amp;#039;col&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleCell&lt;br /&gt;
			:css(&amp;#039;border-left&amp;#039;, &amp;#039;2px solid #fdfdfd&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleColspan = 2&lt;br /&gt;
	if args.imageleft then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.image then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.titlegroup then titleColspan = titleColspan - 1 end&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:cssText(args.basestyle)&lt;br /&gt;
		:cssText(args.titlestyle)&lt;br /&gt;
		:addClass(&amp;#039;navbox-title&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;colspan&amp;#039;, titleColspan)&lt;br /&gt;
&lt;br /&gt;
	renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			-- id for aria-labelledby attribute&lt;br /&gt;
			:attr(&amp;#039;id&amp;#039;, mw.uri.anchorEncode(args.title))&lt;br /&gt;
			:addClass(args.titleclass)&lt;br /&gt;
			:css(&amp;#039;font-size&amp;#039;, &amp;#039;114%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;margin&amp;#039;, &amp;#039;0 4em&amp;#039;)&lt;br /&gt;
			:wikitext(processItem(args.title))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Above/Below rows&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function getAboveBelowColspan()&lt;br /&gt;
	local ret = 2&lt;br /&gt;
	if args.imageleft then ret = ret + 1 end&lt;br /&gt;
	if args.image then ret = ret + 1 end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow(tbl)&lt;br /&gt;
	if not args.above then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox-abovebelow&amp;#039;)&lt;br /&gt;
			:addClass(args.aboveclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:cssText(args.abovestyle)&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan())&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				-- id for aria-labelledby attribute, if no title&lt;br /&gt;
				:attr(&amp;#039;id&amp;#039;, args.title and nil or mw.uri.anchorEncode(args.above))&lt;br /&gt;
				:wikitext(processItem(args.above, args.nowrapitems))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow(tbl)&lt;br /&gt;
	if not args.below then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox-abovebelow&amp;#039;)&lt;br /&gt;
			:addClass(args.belowclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:cssText(args.belowstyle)&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan())&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:wikitext(processItem(args.below, args.nowrapitems))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   List rows&lt;br /&gt;
--&lt;br /&gt;
local function renderListRow(tbl, index, listnum)&lt;br /&gt;
	local row = tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args.imageleft then&lt;br /&gt;
		row&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-image&amp;#039;)&lt;br /&gt;
				:addClass(args.imageclass)&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;1px&amp;#039;)               -- Minimize width&lt;br /&gt;
				:css(&amp;#039;padding&amp;#039;, &amp;#039;0px 2px 0px 0px&amp;#039;)&lt;br /&gt;
				:cssText(args.imageleftstyle)&lt;br /&gt;
				:attr(&amp;#039;rowspan&amp;#039;, #listnums)&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:wikitext(processItem(args.imageleft))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;#039;group&amp;#039; .. listnum] then&lt;br /&gt;
		local groupCell = row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		-- id for aria-labelledby attribute, if lone group with no title or above&lt;br /&gt;
		if listnum == 1 and not (args.title or args.above or args.group2) then&lt;br /&gt;
			groupCell&lt;br /&gt;
				:attr(&amp;#039;id&amp;#039;, mw.uri.anchorEncode(args.group1))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox-group&amp;#039;)&lt;br /&gt;
			:addClass(args.groupclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, args.groupwidth or &amp;#039;1%&amp;#039;) -- If groupwidth not specified, minimize width&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:cssText(args.groupstyle)&lt;br /&gt;
			:cssText(args[&amp;#039;group&amp;#039; .. listnum .. &amp;#039;style&amp;#039;])&lt;br /&gt;
			:wikitext(args[&amp;#039;group&amp;#039; .. listnum])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listCell = row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;#039;group&amp;#039; .. listnum] then&lt;br /&gt;
		listCell&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-left-width&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-left-style&amp;#039;, &amp;#039;solid&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		listCell:attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args.groupwidth then&lt;br /&gt;
		listCell:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rowstyle  -- usually nil so cssText(rowstyle) usually adds nothing&lt;br /&gt;
	if index % 2 == 1 then&lt;br /&gt;
		rowstyle = args.oddstyle&lt;br /&gt;
	else&lt;br /&gt;
		rowstyle = args.evenstyle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listText = args[&amp;#039;list&amp;#039; .. listnum]&lt;br /&gt;
	local oddEven = ODD_EVEN_MARKER&lt;br /&gt;
	if listText:sub(1, 12) == &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;table&amp;#039; then&lt;br /&gt;
		-- Assume list text is for a subgroup navbox so no automatic striping for this row.&lt;br /&gt;
		oddEven = listText:find(&amp;#039;&amp;lt;th[^&amp;gt;]*&amp;quot;navbox%-title&amp;quot;&amp;#039;) and RESTART_MARKER or &amp;#039;odd&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	listCell&lt;br /&gt;
		:css(&amp;#039;padding&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
		:cssText(args.liststyle)&lt;br /&gt;
		:cssText(rowstyle)&lt;br /&gt;
		:cssText(args[&amp;#039;list&amp;#039; .. listnum .. &amp;#039;style&amp;#039;])&lt;br /&gt;
		:addClass(&amp;#039;navbox-list&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;navbox-&amp;#039; .. oddEven)&lt;br /&gt;
		:addClass(args.listclass)&lt;br /&gt;
		:addClass(args[&amp;#039;list&amp;#039; .. listnum .. &amp;#039;class&amp;#039;])&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, (index == 1 and args.list1padding) or args.listpadding or &amp;#039;0em 0.25em&amp;#039;)&lt;br /&gt;
			:wikitext(processItem(listText, args.nowrapitems))&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args.image then&lt;br /&gt;
		row&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;navbox-image&amp;#039;)&lt;br /&gt;
				:addClass(args.imageclass)&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;1px&amp;#039;)               -- Minimize width&lt;br /&gt;
				:css(&amp;#039;padding&amp;#039;, &amp;#039;0px 0px 0px 2px&amp;#039;)&lt;br /&gt;
				:cssText(args.imagestyle)&lt;br /&gt;
				:attr(&amp;#039;rowspan&amp;#039;, #listnums)&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:wikitext(processItem(args.image))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Tracking categories&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function needsHorizontalLists()&lt;br /&gt;
	if border == &amp;#039;subgroup&amp;#039; or args.tracking == &amp;#039;no&amp;#039; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local listClasses = {&lt;br /&gt;
		[&amp;#039;plainlist&amp;#039;] = true, [&amp;#039;hlist&amp;#039;] = true, [&amp;#039;hlist hnum&amp;#039;] = true,&lt;br /&gt;
		[&amp;#039;hlist hwrap&amp;#039;] = true, [&amp;#039;hlist vcard&amp;#039;] = true, [&amp;#039;vcard hlist&amp;#039;] = true,&lt;br /&gt;
		[&amp;#039;hlist vevent&amp;#039;] = true,&lt;br /&gt;
	}&lt;br /&gt;
	return not (listClasses[args.listclass] or listClasses[args.bodyclass])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasBackgroundColors()&lt;br /&gt;
	for _, key in ipairs({&amp;#039;titlestyle&amp;#039;, &amp;#039;groupstyle&amp;#039;, &amp;#039;basestyle&amp;#039;, &amp;#039;abovestyle&amp;#039;, &amp;#039;belowstyle&amp;#039;}) do&lt;br /&gt;
		if tostring(args[key]):find(&amp;#039;background&amp;#039;, 1, true) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasBorders()&lt;br /&gt;
	for _, key in ipairs({&amp;#039;groupstyle&amp;#039;, &amp;#039;basestyle&amp;#039;, &amp;#039;abovestyle&amp;#039;, &amp;#039;belowstyle&amp;#039;}) do&lt;br /&gt;
		if tostring(args[key]):find(&amp;#039;border&amp;#039;, 1, true) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isIllegible()&lt;br /&gt;
	local styleratio = require(&amp;#039;Module:Color contrast&amp;#039;)._styleratio&lt;br /&gt;
&lt;br /&gt;
	for key, style in pairs(args) do&lt;br /&gt;
		if tostring(key):match(&amp;quot;style$&amp;quot;) then&lt;br /&gt;
			if styleratio{mw.text.unstripNoWiki(style)} &amp;lt; 4.5 then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTrackingCategories()&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	if needsHorizontalLists() then table.insert(cats, &amp;#039;Navigational boxes without horizontal lists&amp;#039;) end&lt;br /&gt;
	if hasBackgroundColors() then table.insert(cats, &amp;#039;Navboxes using background colours&amp;#039;) end&lt;br /&gt;
	if isIllegible() then table.insert(cats, &amp;#039;Potentially illegible navboxes&amp;#039;) end&lt;br /&gt;
	if hasBorders() then table.insert(cats, &amp;#039;Navboxes using borders&amp;#039;) end&lt;br /&gt;
	return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategories(builder)&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title.namespace ~= 10 then return end -- not in template space&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	if subpage == &amp;#039;doc&amp;#039; or subpage == &amp;#039;sandbox&amp;#039; or subpage == &amp;#039;testcases&amp;#039; then return end&lt;br /&gt;
&lt;br /&gt;
	for _, cat in ipairs(getTrackingCategories()) do&lt;br /&gt;
		builder:wikitext(&amp;#039;[[Category:&amp;#039; .. cat .. &amp;#039;]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Main navbox tables&lt;br /&gt;
--&lt;br /&gt;
local function renderMainTable()&lt;br /&gt;
	local tbl = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;nowraplinks&amp;#039;)&lt;br /&gt;
		:addClass(args.bodyclass)&lt;br /&gt;
&lt;br /&gt;
	if args.title and (args.state ~= &amp;#039;plain&amp;#039; and args.state ~= &amp;#039;off&amp;#039;) then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(&amp;#039;collapsible&amp;#039;)&lt;br /&gt;
			:addClass(args.state or &amp;#039;autocollapse&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tbl:css(&amp;#039;border-spacing&amp;#039;, 0)&lt;br /&gt;
	if border == &amp;#039;subgroup&amp;#039; or border == &amp;#039;none&amp;#039; then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(&amp;#039;navbox-subgroup&amp;#039;)&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
			:cssText(args.style)&lt;br /&gt;
	else  -- regular navbox - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(&amp;#039;navbox-inner&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;background&amp;#039;, &amp;#039;transparent&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	tbl:cssText(args.innerstyle)&lt;br /&gt;
&lt;br /&gt;
	renderTitleRow(tbl)&lt;br /&gt;
	renderAboveRow(tbl)&lt;br /&gt;
	for i, listnum in ipairs(listnums) do&lt;br /&gt;
		renderListRow(tbl, i, listnum)&lt;br /&gt;
	end&lt;br /&gt;
	renderBelowRow(tbl)&lt;br /&gt;
&lt;br /&gt;
	return tbl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbox(navboxArgs)&lt;br /&gt;
	args = navboxArgs&lt;br /&gt;
	listnums = {}&lt;br /&gt;
&lt;br /&gt;
	for k, _ in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			local listnum = k:match(&amp;#039;^list(%d+)$&amp;#039;)&lt;br /&gt;
			if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(listnums)&lt;br /&gt;
&lt;br /&gt;
	border = mw.text.trim(args.border or args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	if border == &amp;#039;child&amp;#039; then&lt;br /&gt;
		border = &amp;#039;subgroup&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- render the main body of the navbox&lt;br /&gt;
	local tbl = renderMainTable()&lt;br /&gt;
&lt;br /&gt;
	-- render the appropriate wrapper around the navbox, depending on the border param&lt;br /&gt;
	local res = mw.html.create()&lt;br /&gt;
	if border == &amp;#039;none&amp;#039; then&lt;br /&gt;
		local nav = res:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args.title or args.above or (args.group1 and not args.group2) then&lt;br /&gt;
			nav:attr(&amp;#039;aria-labelledby&amp;#039;, mw.uri.anchorEncode(args.title or args.above or args.group1))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&amp;#039;aria-label&amp;#039;, &amp;#039;Navbox&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	elseif border == &amp;#039;subgroup&amp;#039; then&lt;br /&gt;
		-- We assume that this navbox is being rendered in a list cell of a parent navbox, and is&lt;br /&gt;
		-- therefore inside a div with padding:0em 0.25em. We start with a &amp;lt;/div&amp;gt; to avoid the&lt;br /&gt;
		-- padding being applied, and at the end add a &amp;lt;div&amp;gt; to balance out the parent&amp;#039;s &amp;lt;/div&amp;gt;&lt;br /&gt;
		res&lt;br /&gt;
			:wikitext(&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		local nav = res:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;navbox&amp;#039;)&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
			:cssText(args.style)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, &amp;#039;3px&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args.title or args.above or (args.group1 and not args.group2) then&lt;br /&gt;
			nav:attr(&amp;#039;aria-labelledby&amp;#039;, mw.uri.anchorEncode(args.title or args.above or args.group1))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&amp;#039;aria-label&amp;#039;, &amp;#039;Navbox&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (args.nocat or &amp;#039;false&amp;#039;):lower() == &amp;#039;false&amp;#039; then&lt;br /&gt;
		renderTrackingCategories(res)&lt;br /&gt;
	end&lt;br /&gt;
	return striped(tostring(res))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	args = getArgs(frame, {wrappers = {&amp;#039;Template:Navbox&amp;#039;, &amp;#039;Template:Navbox subgroup&amp;#039;}})&lt;br /&gt;
	if frame.args.border then&lt;br /&gt;
		-- This allows Template:Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}.&lt;br /&gt;
		args.border = frame.args.border&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Read the arguments in the order they&amp;#039;ll be output in, to make references number in the right order.&lt;br /&gt;
	local _&lt;br /&gt;
	_ = args.title&lt;br /&gt;
	_ = args.above&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		_ = args[&amp;quot;group&amp;quot; .. tostring(i)]&lt;br /&gt;
		_ = args[&amp;quot;list&amp;quot; .. tostring(i)]&lt;br /&gt;
	end&lt;br /&gt;
	_ = args.below&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Protection_banner/config&amp;diff=649</id>
		<title>Module:Protection banner/config</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Protection_banner/config&amp;diff=649"/>
		<updated>2019-01-16T02:01:45Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides configuration data for [[Module:Protection banner]].&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                                BANNER DATA&lt;br /&gt;
--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Banner data consists of six fields:&lt;br /&gt;
-- * text - the main protection text that appears at the top of protection&lt;br /&gt;
--   banners.&lt;br /&gt;
-- * explanation - the text that appears below the main protection text, used&lt;br /&gt;
--   to explain the details of the protection.&lt;br /&gt;
-- * tooltip - the tooltip text you see when you move the mouse over a small&lt;br /&gt;
--   padlock icon.&lt;br /&gt;
-- * link - the page that the small padlock icon links to.&lt;br /&gt;
-- * alt - the alt text for the small padlock icon. This is also used as tooltip&lt;br /&gt;
--   text for the large protection banners.&lt;br /&gt;
-- * image - the padlock image used in both protection banners and small padlock&lt;br /&gt;
--   icons.&lt;br /&gt;
--&lt;br /&gt;
-- The module checks in three separate tables to find a value for each field.&lt;br /&gt;
-- First it checks the banners table, which has values specific to the reason&lt;br /&gt;
-- for the page being protected. Then the module checks the defaultBanners&lt;br /&gt;
-- table, which has values specific to each protection level. Finally, the&lt;br /&gt;
-- module checks the masterBanner table, which holds data for protection&lt;br /&gt;
-- templates to use if no data has been found in the previous two tables.&lt;br /&gt;
--&lt;br /&gt;
-- The values in the banner data can take parameters. These are specified&lt;br /&gt;
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name&lt;br /&gt;
-- enclosed in curly braces).&lt;br /&gt;
--&lt;br /&gt;
--                          Available parameters:&lt;br /&gt;
--&lt;br /&gt;
-- ${CURRENTVERSION} - a link to the page history or the move log, with the&lt;br /&gt;
-- display message &amp;quot;current-version-edit-display&amp;quot; or&lt;br /&gt;
-- &amp;quot;current-version-move-display&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${EDITREQUEST} - a link to create an edit request for the current page.&lt;br /&gt;
--&lt;br /&gt;
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. &amp;quot;Please discuss any changes&lt;br /&gt;
-- on the talk page; you may submit a request to ask an administrator to make&lt;br /&gt;
-- an edit if it is minor or supported by consensus.&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${IMAGELINK} - a link to set the image to, depending on the protection&lt;br /&gt;
-- action and protection level.&lt;br /&gt;
--&lt;br /&gt;
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry&lt;br /&gt;
-- is set. E.g. &amp;quot;Editing of this page by new or unregistered users is currently &lt;br /&gt;
-- disabled until dd Month YYYY.&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation&lt;br /&gt;
-- so that it can be used in run-on sentences.&lt;br /&gt;
--&lt;br /&gt;
-- ${PAGETYPE} - the type of the page, e.g. &amp;quot;article&amp;quot; or &amp;quot;template&amp;quot;.&lt;br /&gt;
-- Defined in the cfg.pagetypes table.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.&lt;br /&gt;
-- &amp;quot;Editing of this page by new or unregistered users is currently disabled&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the&lt;br /&gt;
-- template.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONLEVEL} - the protection level, e.g. &amp;quot;fully protected&amp;quot; or&lt;br /&gt;
-- &amp;quot;semi-protected&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,&lt;br /&gt;
-- depending on the protection action.&lt;br /&gt;
--&lt;br /&gt;
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links&lt;br /&gt;
-- straight to that talk page section.&lt;br /&gt;
--&lt;br /&gt;
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to&lt;br /&gt;
-- create a blurb like &amp;quot;This template is semi-protected&amp;quot;, or &amp;quot;This article is&lt;br /&gt;
-- move-protected until DD Month YYYY&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${VANDAL} - links for the specified username (or the root page name)&lt;br /&gt;
-- using Module:Vandal-m.&lt;br /&gt;
--&lt;br /&gt;
--                                 Functions&lt;br /&gt;
--&lt;br /&gt;
-- For advanced users, it is possible to use Lua functions instead of strings&lt;br /&gt;
-- in the banner config tables. Using functions gives flexibility that is not&lt;br /&gt;
-- possible just by using parameters. Functions take two arguments, the&lt;br /&gt;
-- protection object and the template arguments, and they must output a string.&lt;br /&gt;
--&lt;br /&gt;
-- For example:&lt;br /&gt;
--&lt;br /&gt;
-- text = function (protectionObj, args)&lt;br /&gt;
--     if protectionObj.level == &amp;#039;autoconfirmed&amp;#039; then&lt;br /&gt;
--         return &amp;#039;foo&amp;#039;&lt;br /&gt;
--     else&lt;br /&gt;
--         return &amp;#039;bar&amp;#039;&lt;br /&gt;
--     end&lt;br /&gt;
-- end&lt;br /&gt;
--&lt;br /&gt;
-- Some protection object properties and methods that may be useful:&lt;br /&gt;
-- protectionObj.action - the protection action&lt;br /&gt;
-- protectionObj.level - the protection level&lt;br /&gt;
-- protectionObj.reason - the protection reason&lt;br /&gt;
-- protectionObj.expiry - the expiry. Nil if unset, the string &amp;quot;indef&amp;quot; if set&lt;br /&gt;
--     to indefinite, and the protection time in unix time if temporary.&lt;br /&gt;
-- protectionObj.protectionDate - the protection date in unix time, or nil if&lt;br /&gt;
--     unspecified.&lt;br /&gt;
-- protectionObj.bannerConfig - the banner config found by the module. Beware&lt;br /&gt;
--     of editing the config field used by the function, as it could create an&lt;br /&gt;
--     infinite loop.&lt;br /&gt;
-- protectionObj:isProtected - returns a boolean showing whether the page is&lt;br /&gt;
--     protected.&lt;br /&gt;
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is&lt;br /&gt;
--     temporary.&lt;br /&gt;
-- protectionObj:isIncorrect - returns a boolean showing whether the protection&lt;br /&gt;
--     template is incorrect.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- The master banner data, used if no values have been found in banners or&lt;br /&gt;
-- defaultBanners.&lt;br /&gt;
masterBanner = {&lt;br /&gt;
	text = &amp;#039;${INTROBLURB}&amp;#039;,&lt;br /&gt;
	explanation = &amp;#039;${EXPLANATIONBLURB}&amp;#039;,&lt;br /&gt;
	tooltip = &amp;#039;${TOOLTIPBLURB}&amp;#039;,&lt;br /&gt;
	link = &amp;#039;${IMAGELINK}&amp;#039;,&lt;br /&gt;
	alt = &amp;#039;Page ${PROTECTIONLEVEL}&amp;#039;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The default banner data. This holds banner data for different protection&lt;br /&gt;
-- levels.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
defaultBanners = {&lt;br /&gt;
	edit = {},&lt;br /&gt;
	move = {},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			alt = &amp;#039;Page protected with pending changes&amp;#039;,&lt;br /&gt;
			tooltip = &amp;#039;All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Pending-protection-shackle.svg&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	upload = {}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The banner data. This holds banner data for different protection reasons.&lt;br /&gt;
-- In fact, the reasons specified in this table control which reasons are&lt;br /&gt;
-- valid inputs to the first positional parameter.&lt;br /&gt;
--&lt;br /&gt;
-- There is also a non-standard &amp;quot;description&amp;quot; field that can be used for items&lt;br /&gt;
-- in this table. This is a description of the protection reason for use in the&lt;br /&gt;
-- module documentation.&lt;br /&gt;
--&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
banners = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		blp = {&lt;br /&gt;
			description = &amp;#039;For pages protected to promote compliance with the&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Biographies of living persons&amp;#039;&lt;br /&gt;
				.. &amp;#039;|biographies of living persons]] policy&amp;#039;,&lt;br /&gt;
			text = &amp;#039;${INTROFRAGMENT} to promote compliance with&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Biographies of living persons&amp;#039;&lt;br /&gt;
				.. &amp;quot;|Wikipedia&amp;#039;s&amp;amp;nbsp;policy on&amp;amp;nbsp;the&amp;amp;nbsp;biographies&amp;quot;&lt;br /&gt;
				.. &amp;#039; of&amp;amp;nbsp;living&amp;amp;nbsp;people]].&amp;#039;,&lt;br /&gt;
			tooltip = &amp;#039;${TOOLTIPFRAGMENT} to promote compliance with the policy on&amp;#039;&lt;br /&gt;
				.. &amp;#039; biographies of living people&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		dmca = {&lt;br /&gt;
			description = &amp;#039;For pages protected by the Wikimedia Foundation&amp;#039;&lt;br /&gt;
				.. &amp;#039; due to [[Digital Millennium Copyright Act]] takedown requests&amp;#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &amp;#039;Pursuant to a rights owner notice under the Digital&amp;#039;&lt;br /&gt;
					.. &amp;#039; Millennium Copyright Act (DMCA) regarding some content&amp;#039;&lt;br /&gt;
					.. &amp;#039; in this article, the Wikimedia Foundation acted under&amp;#039;&lt;br /&gt;
					.. &amp;#039; applicable law and took down and restricted the content&amp;#039;&lt;br /&gt;
					.. &amp;#039; in question.&amp;#039;&lt;br /&gt;
				if args.notice then&lt;br /&gt;
					ret = ret .. &amp;#039; A copy of the received notice can be found here: &amp;#039;&lt;br /&gt;
						.. args.notice .. &amp;#039;.&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. &amp;#039; For more information, including websites discussing&amp;#039;&lt;br /&gt;
					.. &amp;#039; how to file a counter-notice, please see&amp;#039;&lt;br /&gt;
					.. &amp;quot; [[Wikipedia:Office actions]] and the article&amp;#039;s ${TALKPAGE}.&amp;quot;&lt;br /&gt;
					.. &amp;quot;&amp;#039;&amp;#039;&amp;#039;Do not remove this template from the article until the&amp;quot;&lt;br /&gt;
					.. &amp;quot; restrictions are withdrawn&amp;#039;&amp;#039;&amp;#039;.&amp;quot;&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = &amp;#039;Office-protection-shackle.svg&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = &amp;#039;For pages protected due to editing disputes&amp;#039;,&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				-- Find the value of &amp;quot;disputes&amp;quot;.&lt;br /&gt;
				local display = &amp;#039;disputes&amp;#039;&lt;br /&gt;
				local disputes&lt;br /&gt;
				if args.section then&lt;br /&gt;
					disputes = string.format(&lt;br /&gt;
						&amp;#039;[[%s:%s#%s|%s]]&amp;#039;,&lt;br /&gt;
						mw.site.namespaces[protectionObj.title.namespace].talk.name,&lt;br /&gt;
						protectionObj.title.text,&lt;br /&gt;
						args.section,&lt;br /&gt;
						display&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					disputes = display&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- Make the blurb, depending on the expiry.&lt;br /&gt;
				local msg&lt;br /&gt;
				if type(protectionObj.expiry) == &amp;#039;number&amp;#039; then&lt;br /&gt;
					msg = &amp;#039;${INTROFRAGMENT} or until editing %s have been resolved.&amp;#039;&lt;br /&gt;
				else&lt;br /&gt;
					msg = &amp;#039;${INTROFRAGMENT} until editing %s have been resolved.&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				return string.format(msg, disputes)&lt;br /&gt;
			end,&lt;br /&gt;
			explanation = &amp;quot;This protection is &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; an endorsement of the&amp;quot;&lt;br /&gt;
				.. &amp;#039; ${CURRENTVERSION}. ${EXPLANATIONBLURB}&amp;#039;,&lt;br /&gt;
			tooltip = &amp;#039;${TOOLTIPFRAGMENT} due to editing disputes&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		ecp = {&lt;br /&gt;
			description = &amp;#039;For articles in topic areas authorized by&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Arbitration Committee|ArbCom]] or&amp;#039;&lt;br /&gt;
				.. &amp;#039; meets the criteria for community use&amp;#039;,&lt;br /&gt;
			tooltip = &amp;#039;This ${PAGETYPE} is extended-confirmed protected&amp;#039;,&lt;br /&gt;
			alt = &amp;#039;Extended-protected ${PAGETYPE}&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		mainpage = {&lt;br /&gt;
			description = &amp;#039;For pages protected for being displayed on the [[Main Page]]&amp;#039;,&lt;br /&gt;
			text = &amp;#039;This file is currently&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:This page is protected|protected]] from&amp;#039;&lt;br /&gt;
				.. &amp;#039; editing because it is currently or will soon be displayed&amp;#039;&lt;br /&gt;
				.. &amp;#039; on the [[Main Page]].&amp;#039;,&lt;br /&gt;
			explanation = &amp;#039;Images on the Main Page are protected due to their high&amp;#039;&lt;br /&gt;
				.. &amp;#039; visibility. Please discuss any necessary changes on the ${TALKPAGE}.&amp;#039;&lt;br /&gt;
				.. &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
				.. &amp;quot;&amp;#039;&amp;#039;&amp;#039;Administrators:&amp;#039;&amp;#039;&amp;#039; Once this image is definitely off the Main Page,&amp;quot;&lt;br /&gt;
				.. &amp;#039; please unprotect this file, or reduce to semi-protection,&amp;#039;&lt;br /&gt;
				.. &amp;#039; as appropriate.&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		office = {&lt;br /&gt;
			description = &amp;#039;For pages protected by the Wikimedia Foundation&amp;#039;,&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				local ret = &amp;#039;This ${PAGETYPE} is currently under the&amp;#039;&lt;br /&gt;
					.. &amp;#039; scrutiny of the&amp;#039;&lt;br /&gt;
					.. &amp;#039; [[Wikipedia:Office actions|Wikimedia Foundation Office]]&amp;#039;&lt;br /&gt;
					.. &amp;#039; and is protected.&amp;#039;&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. &amp;#039; It has been protected since ${PROTECTIONDATE}.&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			explanation = &amp;quot;If you can edit this page, please discuss all changes and&amp;quot;&lt;br /&gt;
				.. &amp;quot; additions on the ${TALKPAGE} first. &amp;#039;&amp;#039;&amp;#039;Do not remove protection from this&amp;quot;&lt;br /&gt;
				.. &amp;quot; page unless you are authorized by the Wikimedia Foundation to do&amp;quot;&lt;br /&gt;
				.. &amp;quot; so.&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
			image = &amp;#039;Office-protection-shackle.svg&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		reset = {&lt;br /&gt;
			description = &amp;#039;For pages protected by the Wikimedia Foundation and&amp;#039;&lt;br /&gt;
				.. &amp;#039; &amp;quot;reset&amp;quot; to a bare-bones version&amp;#039;,&lt;br /&gt;
 			text = &amp;#039;This ${PAGETYPE} is currently under the&amp;#039;&lt;br /&gt;
					.. &amp;#039; scrutiny of the&amp;#039;&lt;br /&gt;
					.. &amp;#039; [[Wikipedia:Office actions|Wikimedia Foundation Office]]&amp;#039;&lt;br /&gt;
					.. &amp;#039; and is protected.&amp;#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &amp;#039;&amp;#039;&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. &amp;#039;On ${PROTECTIONDATE} this ${PAGETYPE} was&amp;#039;&lt;br /&gt;
				else&lt;br /&gt;
					ret = ret .. &amp;#039;This ${PAGETYPE} has been&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. &amp;#039; reduced to a&amp;#039;&lt;br /&gt;
				.. &amp;#039; simplified, &amp;quot;bare bones&amp;quot; version so that it may be completely&amp;#039;&lt;br /&gt;
				.. &amp;#039; rewritten to ensure it meets the policies of&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].&amp;#039;&lt;br /&gt;
				.. &amp;#039; Standard Wikipedia policies will apply to its rewriting—which&amp;#039;&lt;br /&gt;
				.. &amp;#039; will eventually be open to all editors—and will be strictly&amp;#039;&lt;br /&gt;
				.. &amp;#039; enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while&amp;#039;&lt;br /&gt;
				.. &amp;#039; it is being rebuilt.\n\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;Any insertion of material directly from&amp;#039;&lt;br /&gt;
				.. &amp;#039; pre-protection revisions of the ${PAGETYPE} will be removed, as&amp;#039;&lt;br /&gt;
				.. &amp;#039; will any material added to the ${PAGETYPE} that is not properly&amp;#039;&lt;br /&gt;
				.. &amp;#039; sourced. The associated talk page(s) were also cleared on the&amp;#039;&lt;br /&gt;
				.. &amp;quot; same date.\n\n&amp;quot;&lt;br /&gt;
				.. &amp;quot;If you can edit this page, please discuss all changes and&amp;quot;&lt;br /&gt;
				.. &amp;quot; additions on the ${TALKPAGE} first. &amp;#039;&amp;#039;&amp;#039;Do not override&amp;quot;&lt;br /&gt;
				.. &amp;quot; this action, and do not remove protection from this page,&amp;quot;&lt;br /&gt;
				.. &amp;quot; unless you are authorized by the Wikimedia Foundation&amp;quot;&lt;br /&gt;
				.. &amp;quot; to do so. No editor may remove this notice.&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = &amp;#039;Office-protection-shackle.svg&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		sock = {&lt;br /&gt;
			description = &amp;#039;For pages protected due to&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Sock puppetry|sock puppetry]]&amp;#039;,&lt;br /&gt;
			text = &amp;#039;${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Blocking policy|blocked]] or&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Banning policy|banned users]]&amp;#039;&lt;br /&gt;
				.. &amp;#039; from editing it.&amp;#039;,&lt;br /&gt;
			tooltip = &amp;#039;${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from&amp;#039;&lt;br /&gt;
				.. &amp;#039; editing it&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		template = {&lt;br /&gt;
			description = &amp;#039;For [[Wikipedia:High-risk templates|high-risk]]&amp;#039;&lt;br /&gt;
				.. &amp;#039; templates and Lua modules&amp;#039;,&lt;br /&gt;
			text = &amp;#039;This is a permanently [[Help:Protection|protected]] ${PAGETYPE},&amp;#039;&lt;br /&gt;
				.. &amp;#039; as it is [[Wikipedia:High-risk templates|high-risk]].&amp;#039;,&lt;br /&gt;
			explanation = &amp;#039;Please discuss any changes on the ${TALKPAGE}; you may&amp;#039;&lt;br /&gt;
				.. &amp;#039; ${EDITREQUEST} to ask an&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Administrators|administrator]] or&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Template editor|template editor]] to make an edit if&amp;#039;&lt;br /&gt;
				.. &amp;#039; it is [[Help:Minor edit#When to mark an edit as a minor edit&amp;#039;&lt;br /&gt;
				.. &amp;#039;|uncontroversial]] or supported by&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Consensus|consensus]]. You can also&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection|request]] that the page be&amp;#039;&lt;br /&gt;
				.. &amp;#039; unprotected.&amp;#039;,&lt;br /&gt;
			tooltip = &amp;#039;This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}&amp;#039;&lt;br /&gt;
				.. &amp;#039; to prevent vandalism&amp;#039;,&lt;br /&gt;
			alt = &amp;#039;Permanently protected ${PAGETYPE}&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		usertalk = {&lt;br /&gt;
			description = &amp;#039;For pages protected against disruptive edits by a&amp;#039;&lt;br /&gt;
				.. &amp;#039; particular user&amp;#039;,&lt;br /&gt;
			text = &amp;#039;${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,&amp;#039;&lt;br /&gt;
				.. &amp;#039; such as abusing the&amp;#039;&lt;br /&gt;
				.. &amp;#039; &amp;amp;#123;&amp;amp;#123;[[Template:unblock|unblock]]&amp;amp;#125;&amp;amp;#125; template.&amp;#039;,&lt;br /&gt;
			explanation = &amp;#039;If you cannot edit this user talk page and you need to&amp;#039;&lt;br /&gt;
				.. &amp;#039; make a change or leave a message, you can&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection&amp;#039;&lt;br /&gt;
				.. &amp;#039;#Current requests for edits to a protected page&amp;#039;&lt;br /&gt;
				.. &amp;#039;|request an edit]],&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection&amp;#039;&lt;br /&gt;
				.. &amp;#039;#Current requests for reduction in protection level&amp;#039;&lt;br /&gt;
				.. &amp;#039;|request unprotection]],&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Special:Userlogin|log in]],&amp;#039;&lt;br /&gt;
				.. &amp;#039; or [[Special:UserLogin/signup|create an account]].&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = &amp;#039;For pages protected against&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Vandalism|vandalism]]&amp;#039;,&lt;br /&gt;
			text = &amp;#039;${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].&amp;#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &amp;#039;&amp;#039;&lt;br /&gt;
				if protectionObj.level == &amp;#039;sysop&amp;#039; then&lt;br /&gt;
					ret = ret .. &amp;quot;This protection is &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; an endorsement of the&amp;quot;&lt;br /&gt;
						.. &amp;#039; ${CURRENTVERSION}. &amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				return ret .. &amp;#039;${EXPLANATIONBLURB}&amp;#039;&lt;br /&gt;
			end,&lt;br /&gt;
			tooltip = &amp;#039;${TOOLTIPFRAGMENT} due to vandalism&amp;#039;,&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = &amp;#039;For pages protected against page moves due to&amp;#039;&lt;br /&gt;
				.. &amp;#039; disputes over the page title&amp;#039;,&lt;br /&gt;
			explanation = &amp;quot;This protection is &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; an endorsement of the&amp;quot;&lt;br /&gt;
				.. &amp;#039; ${CURRENTVERSION}. ${EXPLANATIONBLURB}&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Move-protection-shackle.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = &amp;#039;For pages protected against&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Vandalism#Page-move vandalism&amp;#039;&lt;br /&gt;
				.. &amp;#039; |page-move vandalism]]&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {},&lt;br /&gt;
	upload = {}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                            GENERAL DATA TABLES&lt;br /&gt;
--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection blurbs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the protection blurbs available with the&lt;br /&gt;
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and&lt;br /&gt;
-- protection level, and is checked by the module in the following order:&lt;br /&gt;
-- 1. page&amp;#039;s protection action, page&amp;#039;s protection level&lt;br /&gt;
-- 2. page&amp;#039;s protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
protectionBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &amp;#039;This ${PAGETYPE} is currently [[Help:Protection|&amp;#039;&lt;br /&gt;
			.. &amp;#039;protected]] from editing&amp;#039;,&lt;br /&gt;
		autoconfirmed = &amp;#039;Editing of this ${PAGETYPE} by [[Wikipedia:User access&amp;#039;&lt;br /&gt;
			.. &amp;#039; levels#New users|new]] or [[Wikipedia:User access levels#Unregistered&amp;#039;&lt;br /&gt;
			.. &amp;#039; users|unregistered]] users is currently [[Help:Protection|disabled]]&amp;#039;,&lt;br /&gt;
		extendedconfirmed = &amp;#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} as a result of&amp;#039;&lt;br /&gt;
			.. &amp;#039; [[Wikipedia:Arbitration Committee|ArbCom]] enforcement or meets the&amp;#039;&lt;br /&gt;
			.. &amp;#039; [[Wikipedia:Protection policy#extended|criteria for community use]]&amp;#039;,&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &amp;#039;This ${PAGETYPE} is currently [[Help:Protection|protected]]&amp;#039;&lt;br /&gt;
			.. &amp;#039; from [[Help:Moving a page|page moves]]&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = &amp;#039;All edits made to this ${PAGETYPE} by&amp;#039;&lt;br /&gt;
			.. &amp;#039; [[Wikipedia:User access levels#New users|new]] or&amp;#039;&lt;br /&gt;
			.. &amp;#039; [[Wikipedia:User access levels#Unregistered users|unregistered]]&amp;#039;&lt;br /&gt;
			.. &amp;#039; users are currently&amp;#039;&lt;br /&gt;
			.. &amp;#039; [[Wikipedia:Pending changes|subject to review]]&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &amp;#039;Uploading new versions of this ${PAGETYPE} is currently disabled&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Explanation blurbs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the explanation blurbs available with the&lt;br /&gt;
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,&lt;br /&gt;
-- protection level, and whether the page is a talk page or not. If the page is&lt;br /&gt;
-- a talk page it will have a talk key of &amp;quot;talk&amp;quot;; otherwise it will have a talk&lt;br /&gt;
-- key of &amp;quot;subject&amp;quot;. The table is checked in the following order:&lt;br /&gt;
-- 1. page&amp;#039;s protection action, page&amp;#039;s protection level, page&amp;#039;s talk key&lt;br /&gt;
-- 2. page&amp;#039;s protection action, page&amp;#039;s protection level, default talk key&lt;br /&gt;
-- 3. page&amp;#039;s protection action, default protection level, page&amp;#039;s talk key&lt;br /&gt;
-- 4. page&amp;#039;s protection action, default protection level, default talk key&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
explanationBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		autoconfirmed = {&lt;br /&gt;
			subject = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details. If you&amp;#039;&lt;br /&gt;
				.. &amp;#039; cannot edit this ${PAGETYPE} and you wish to make a change, you can&amp;#039;&lt;br /&gt;
				.. &amp;#039; ${EDITREQUEST}, discuss changes on the ${TALKPAGE},&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection&amp;#039;&lt;br /&gt;
				.. &amp;#039;#Current requests for reduction in protection level&amp;#039;&lt;br /&gt;
				.. &amp;#039;|request unprotection]], [[Special:Userlogin|log in]], or&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Special:UserLogin/signup|create an account]].&amp;#039;,&lt;br /&gt;
			default = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details. If you&amp;#039;&lt;br /&gt;
				.. &amp;#039; cannot edit this ${PAGETYPE} and you wish to make a change, you can&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection&amp;#039;&lt;br /&gt;
				.. &amp;#039;#Current requests for reduction in protection level&amp;#039;&lt;br /&gt;
				.. &amp;#039;|request unprotection]], [[Special:Userlogin|log in]], or&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Special:UserLogin/signup|create an account]].&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		extendedconfirmed = {&lt;br /&gt;
			default = &amp;#039;Extended confirmed protection prevents edits from all IP editors&amp;#039;&lt;br /&gt;
				.. &amp;#039; and registered users with fewer than 30 days tenure and 500 edits.&amp;#039;&lt;br /&gt;
				.. &amp;#039; The [[Wikipedia:Protection policy#extended|policy on community use]]&amp;#039;&lt;br /&gt;
				.. &amp;#039; specifies that extended confirmed protection can be applied to combat&amp;#039;&lt;br /&gt;
				.. &amp;#039; disruption, if semi-protection has proven to be ineffective.&amp;#039;&lt;br /&gt;
				.. &amp;#039; Please discuss any changes on the ${TALKPAGE}; you may&amp;#039;&lt;br /&gt;
				.. &amp;#039; ${EDITREQUEST} to ask for uncontroversial changes supported by&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Consensus|consensus]].&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
				.. &amp;#039; Please discuss any changes on the ${TALKPAGE}; you&amp;#039;&lt;br /&gt;
				.. &amp;#039; may ${EDITREQUEST} to ask an&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Administrators|administrator]] to make an edit if it&amp;#039;&lt;br /&gt;
				.. &amp;#039; is [[Help:Minor edit#When to mark an edit as a minor edit&amp;#039;&lt;br /&gt;
				.. &amp;#039;|uncontroversial]] or supported by [[Wikipedia:Consensus&amp;#039;&lt;br /&gt;
				.. &amp;#039;|consensus]]. You may also [[Wikipedia:Requests for&amp;#039;&lt;br /&gt;
				.. &amp;#039; page protection#Current requests for reduction in protection level&amp;#039;&lt;br /&gt;
				.. &amp;#039;|request]] that this page be unprotected.&amp;#039;,&lt;br /&gt;
			default = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
				.. &amp;#039; You may [[Wikipedia:Requests for page&amp;#039;&lt;br /&gt;
				.. &amp;#039; protection#Current requests for edits to a protected page|request an&amp;#039;&lt;br /&gt;
				.. &amp;#039; edit]] to this page, or [[Wikipedia:Requests for&amp;#039;&lt;br /&gt;
				.. &amp;#039; page protection#Current requests for reduction in protection level&amp;#039;&lt;br /&gt;
				.. &amp;#039;|ask]] for it to be unprotected.&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
				.. &amp;#039; The page may still be edited but cannot be moved&amp;#039;&lt;br /&gt;
				.. &amp;#039; until unprotected. Please discuss any suggested moves on the&amp;#039;&lt;br /&gt;
				.. &amp;#039; ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection|request]] that the page be&amp;#039;&lt;br /&gt;
				.. &amp;#039; unprotected.&amp;#039;,&lt;br /&gt;
			default = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
				.. &amp;#039; The page may still be edited but cannot be moved&amp;#039;&lt;br /&gt;
				.. &amp;#039; until unprotected. Please discuss any suggested moves at&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requested moves]]. You can also&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection|request]] that the page be&amp;#039;&lt;br /&gt;
				.. &amp;#039; unprotected.&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			default = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
				.. &amp;#039; Edits to this ${PAGETYPE} by new and unregistered users&amp;#039;&lt;br /&gt;
				.. &amp;#039; will not be visible to readers until they are accepted by&amp;#039;&lt;br /&gt;
				.. &amp;#039; a reviewer. To avoid the need for your edits to be&amp;#039;&lt;br /&gt;
				.. &amp;#039; reviewed, you may&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Requests for page protection&amp;#039;&lt;br /&gt;
				.. &amp;#039;#Current requests for reduction in protection level&amp;#039;&lt;br /&gt;
				.. &amp;#039;|request unprotection]], [[Special:Userlogin|log in]], or&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Special:UserLogin/signup|create an account]].&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = {&lt;br /&gt;
			default = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
				.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
				.. &amp;#039; The page may still be edited but new versions of the file&amp;#039;&lt;br /&gt;
				.. &amp;#039; cannot be uploaded until it is unprotected. You can&amp;#039;&lt;br /&gt;
				.. &amp;#039; request that a new version be uploaded by using a&amp;#039;&lt;br /&gt;
				.. &amp;#039; [[Wikipedia:Edit requests|protected edit request]], or you&amp;#039;&lt;br /&gt;
				.. &amp;#039; can  [[Wikipedia:Requests for page protection|request]]&amp;#039;&lt;br /&gt;
				.. &amp;#039; that the file be unprotected.&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection levels&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which&lt;br /&gt;
-- produces a short label for different protection levels. It is sorted by&lt;br /&gt;
-- protection action and protection level, and is checked in the following&lt;br /&gt;
-- order:&lt;br /&gt;
-- 1. page&amp;#039;s protection action, page&amp;#039;s protection level&lt;br /&gt;
-- 2. page&amp;#039;s protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
protectionLevels = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &amp;#039;protected&amp;#039;,&lt;br /&gt;
		templateeditor = &amp;#039;template-protected&amp;#039;,&lt;br /&gt;
		extendedconfirmed = &amp;#039;extended-protected&amp;#039;,&lt;br /&gt;
		autoconfirmed = &amp;#039;semi-protected&amp;#039;,&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &amp;#039;move-protected&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &amp;#039;upload-protected&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Images&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table lists different padlock images for each protection action and&lt;br /&gt;
-- protection level. It is used if an image is not specified in any of the&lt;br /&gt;
-- banner data tables, and if the page does not satisfy the conditions for using&lt;br /&gt;
-- the [&amp;#039;image-filename-indef&amp;#039;] image. It is checked in the following order:&lt;br /&gt;
-- 1. page&amp;#039;s protection action, page&amp;#039;s protection level&lt;br /&gt;
-- 2. page&amp;#039;s protection action, default protection level&lt;br /&gt;
images = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &amp;#039;Full-protection-shackle.svg&amp;#039;,&lt;br /&gt;
		templateeditor = &amp;#039;Template-protection-shackle.svg&amp;#039;,&lt;br /&gt;
		extendedconfirmed = &amp;#039;Extended-protection-shackle.svg&amp;#039;,&lt;br /&gt;
		autoconfirmed = &amp;#039;Semi-protection-shackle.svg&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &amp;#039;Move-protection-shackle.svg&amp;#039;,&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = &amp;#039;Pending-protection-shackle.svg&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &amp;#039;Upload-protection-shackle.svg&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- Pages with a reason specified in this table will show the special &amp;quot;indef&amp;quot;&lt;br /&gt;
-- padlock, defined in the &amp;#039;image-filename-indef&amp;#039; message, if no expiry is set.&lt;br /&gt;
indefImageReasons = {&lt;br /&gt;
	template = true&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Image links&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the ${IMAGELINK} parameter, which gets&lt;br /&gt;
-- the image link for small padlock icons based on the page&amp;#039;s protection action&lt;br /&gt;
-- and protection level. It is checked in the following order:&lt;br /&gt;
-- 1. page&amp;#039;s protection action, page&amp;#039;s protection level&lt;br /&gt;
-- 2. page&amp;#039;s protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
imageLinks = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &amp;#039;Wikipedia:Protection policy#full&amp;#039;,&lt;br /&gt;
		templateeditor = &amp;#039;Wikipedia:Protection policy#template&amp;#039;,&lt;br /&gt;
		extendedconfirmed = &amp;#039;Wikipedia:Protection policy#extended&amp;#039;,&lt;br /&gt;
		autoconfirmed = &amp;#039;Wikipedia:Protection policy#semi&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &amp;#039;Wikipedia:Protection policy#move&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = &amp;#039;Wikipedia:Protection policy#pending&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &amp;#039;Wikipedia:Protection policy#upload&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock indicator names&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the &amp;quot;name&amp;quot; attribute for the &amp;lt;indicator&amp;gt; extension tag&lt;br /&gt;
-- with which small padlock icons are generated. All indicator tags on a page&lt;br /&gt;
-- are displayed in alphabetical order based on this attribute, and with&lt;br /&gt;
-- indicator tags with duplicate names, the last tag on the page wins.&lt;br /&gt;
-- The attribute is chosen based on the protection action; table keys must be a&lt;br /&gt;
-- protection action name or the string &amp;quot;default&amp;quot;.&lt;br /&gt;
padlockIndicatorNames = {&lt;br /&gt;
	autoreview = &amp;#039;pp-autoreview&amp;#039;,&lt;br /&gt;
	default = &amp;#039;pp-default&amp;#039;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection categories&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- The protection categories are stored in the protectionCategories table.&lt;br /&gt;
-- Keys to this table are made up of the following strings:&lt;br /&gt;
--&lt;br /&gt;
-- 1. the expiry date&lt;br /&gt;
-- 2. the namespace&lt;br /&gt;
-- 3. the protection reason (e.g. &amp;quot;dispute&amp;quot; or &amp;quot;vandalism&amp;quot;)&lt;br /&gt;
-- 4. the protection level (e.g. &amp;quot;sysop&amp;quot; or &amp;quot;autoconfirmed&amp;quot;)&lt;br /&gt;
-- 5. the action (e.g. &amp;quot;edit&amp;quot; or &amp;quot;move&amp;quot;)&lt;br /&gt;
-- &lt;br /&gt;
-- When the module looks up a category in the table, first it will will check to&lt;br /&gt;
-- see a key exists that corresponds to all five parameters. For example, a&lt;br /&gt;
-- user page semi-protected from vandalism for two weeks would have the key&lt;br /&gt;
-- &amp;quot;temp-user-vandalism-autoconfirmed-edit&amp;quot;. If no match is found, the module&lt;br /&gt;
-- changes the first part of the key to &amp;quot;all&amp;quot; and checks the table again. It&lt;br /&gt;
-- keeps checking increasingly generic key combinations until it finds the&lt;br /&gt;
-- field, or until it reaches the key &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- The module uses a binary matrix to determine the order in which to search.&lt;br /&gt;
-- This is best demonstrated by a table. In this table, the &amp;quot;0&amp;quot; values&lt;br /&gt;
-- represent &amp;quot;all&amp;quot;, and the &amp;quot;1&amp;quot; values represent the original data (e.g.&lt;br /&gt;
-- &amp;quot;indef&amp;quot; or &amp;quot;file&amp;quot; or &amp;quot;vandalism&amp;quot;).&lt;br /&gt;
--&lt;br /&gt;
--        expiry    namespace reason   level     action&lt;br /&gt;
-- order&lt;br /&gt;
-- 1      1         1         1        1         1&lt;br /&gt;
-- 2      0         1         1        1         1&lt;br /&gt;
-- 3      1         0         1        1         1&lt;br /&gt;
-- 4      0         0         1        1         1&lt;br /&gt;
-- 5      1         1         0        1         1&lt;br /&gt;
-- 6      0         1         0        1         1&lt;br /&gt;
-- 7      1         0         0        1         1&lt;br /&gt;
-- 8      0         0         0        1         1&lt;br /&gt;
-- 9      1         1         1        0         1&lt;br /&gt;
-- 10     0         1         1        0         1&lt;br /&gt;
-- 11     1         0         1        0         1&lt;br /&gt;
-- 12     0         0         1        0         1&lt;br /&gt;
-- 13     1         1         0        0         1&lt;br /&gt;
-- 14     0         1         0        0         1&lt;br /&gt;
-- 15     1         0         0        0         1&lt;br /&gt;
-- 16     0         0         0        0         1&lt;br /&gt;
-- 17     1         1         1        1         0&lt;br /&gt;
-- 18     0         1         1        1         0&lt;br /&gt;
-- 19     1         0         1        1         0&lt;br /&gt;
-- 20     0         0         1        1         0&lt;br /&gt;
-- 21     1         1         0        1         0&lt;br /&gt;
-- 22     0         1         0        1         0&lt;br /&gt;
-- 23     1         0         0        1         0&lt;br /&gt;
-- 24     0         0         0        1         0&lt;br /&gt;
-- 25     1         1         1        0         0&lt;br /&gt;
-- 26     0         1         1        0         0&lt;br /&gt;
-- 27     1         0         1        0         0&lt;br /&gt;
-- 28     0         0         1        0         0&lt;br /&gt;
-- 29     1         1         0        0         0&lt;br /&gt;
-- 30     0         1         0        0         0&lt;br /&gt;
-- 31     1         0         0        0         0&lt;br /&gt;
-- 32     0         0         0        0         0&lt;br /&gt;
--&lt;br /&gt;
-- In this scheme the action has the highest priority, as it is the last&lt;br /&gt;
-- to change, and the expiry has the least priority, as it changes the most.&lt;br /&gt;
-- The priorities of the expiry, the protection level and the action are&lt;br /&gt;
-- fixed, but the priorities of the reason and the namespace can be swapped&lt;br /&gt;
-- through the use of the cfg.bannerDataNamespaceHasPriority table.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- If the reason specified to the template is listed in this table,&lt;br /&gt;
-- namespace data will take priority over reason data in the protectionCategories&lt;br /&gt;
-- table.&lt;br /&gt;
reasonsWithNamespacePriority = {&lt;br /&gt;
	vandalism = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The string to use as a namespace key for the protectionCategories table for each&lt;br /&gt;
-- namespace number.&lt;br /&gt;
categoryNamespaceKeys = {&lt;br /&gt;
	[  2] = &amp;#039;user&amp;#039;,&lt;br /&gt;
	[  3] = &amp;#039;user&amp;#039;,&lt;br /&gt;
	[  4] = &amp;#039;project&amp;#039;,&lt;br /&gt;
	[  6] = &amp;#039;file&amp;#039;,&lt;br /&gt;
	[  8] = &amp;#039;mediawiki&amp;#039;,&lt;br /&gt;
	[ 10] = &amp;#039;template&amp;#039;,&lt;br /&gt;
	[ 12] = &amp;#039;project&amp;#039;,&lt;br /&gt;
	[ 14] = &amp;#039;category&amp;#039;,&lt;br /&gt;
	[100] = &amp;#039;portal&amp;#039;,&lt;br /&gt;
	[828] = &amp;#039;module&amp;#039;,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
protectionCategories = {&lt;br /&gt;
	[&amp;#039;all|all|all|all|all&amp;#039;]                  = &amp;#039;Wikipedia fully protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|office|all|all&amp;#039;]               = &amp;#039;Wikipedia Office-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|reset|all|all&amp;#039;]                = &amp;#039;Wikipedia Office-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|dmca|all|all&amp;#039;]                 = &amp;#039;Wikipedia Office-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|mainpage|all|all&amp;#039;]             = &amp;#039;Wikipedia fully-protected main page files&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|all|extendedconfirmed|all&amp;#039;]    = &amp;#039;Wikipedia pages under 30-500 editing restriction&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|ecp|extendedconfirmed|all&amp;#039;]    = &amp;#039;Wikipedia pages under 30-500 editing restriction&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|template|all|all|edit&amp;#039;]            = &amp;#039;Wikipedia fully protected templates&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|all|autoconfirmed|edit&amp;#039;]       = &amp;#039;Wikipedia semi-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;indef|all|all|autoconfirmed|edit&amp;#039;]     = &amp;#039;Wikipedia indefinitely semi-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|blp|autoconfirmed|edit&amp;#039;]       = &amp;#039;Wikipedia indefinitely semi-protected biographies of living people&amp;#039;,&lt;br /&gt;
	[&amp;#039;temp|all|blp|autoconfirmed|edit&amp;#039;]      = &amp;#039;Wikipedia temporarily semi-protected biographies of living people&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|dispute|autoconfirmed|edit&amp;#039;]   = &amp;#039;Wikipedia pages semi-protected due to dispute&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|sock|autoconfirmed|edit&amp;#039;]      = &amp;#039;Wikipedia pages semi-protected from banned users&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|vandalism|autoconfirmed|edit&amp;#039;] = &amp;#039;Wikipedia pages semi-protected against vandalism&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|category|all|autoconfirmed|edit&amp;#039;]  = &amp;#039;Wikipedia semi-protected categories&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|file|all|autoconfirmed|edit&amp;#039;]      = &amp;#039;Wikipedia semi-protected files&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|portal|all|autoconfirmed|edit&amp;#039;]    = &amp;#039;Wikipedia semi-protected portals&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|project|all|autoconfirmed|edit&amp;#039;]   = &amp;#039;Wikipedia semi-protected project pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|talk|all|autoconfirmed|edit&amp;#039;]      = &amp;#039;Wikipedia semi-protected talk pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|template|all|autoconfirmed|edit&amp;#039;]  = &amp;#039;Wikipedia semi-protected templates&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|user|all|autoconfirmed|edit&amp;#039;]      = &amp;#039;Wikipedia semi-protected user and user talk pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|template|all|templateeditor|edit&amp;#039;] = &amp;#039;Wikipedia template-protected templates&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|blp|sysop|edit&amp;#039;]               = &amp;#039;Wikipedia indefinitely protected biographies of living people&amp;#039;,&lt;br /&gt;
	[&amp;#039;temp|all|blp|sysop|edit&amp;#039;]              = &amp;#039;Wikipedia temporarily protected biographies of living people&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|dispute|sysop|edit&amp;#039;]           = &amp;#039;Wikipedia pages protected due to dispute&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|sock|sysop|edit&amp;#039;]              = &amp;#039;Wikipedia pages protected from banned users&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|vandalism|sysop|edit&amp;#039;]         = &amp;#039;Wikipedia pages protected against vandalism&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|category|all|sysop|edit&amp;#039;]          = &amp;#039;Wikipedia protected categories&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|file|all|sysop|edit&amp;#039;]              = &amp;#039;Wikipedia fully-protected files&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|project|all|sysop|edit&amp;#039;]           = &amp;#039;Wikipedia fully-protected project pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|talk|all|sysop|edit&amp;#039;]              = &amp;#039;Wikipedia fully-protected talk pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|template|all|sysop|edit&amp;#039;]          = &amp;#039;Wikipedia fully protected templates&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|user|all|sysop|edit&amp;#039;]              = &amp;#039;Wikipedia protected user and user talk pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|module|all|all|edit&amp;#039;]              = &amp;#039;Wikipedia fully-protected modules&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|module|all|templateeditor|edit&amp;#039;]   = &amp;#039;Wikipedia template-protected modules&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|module|all|autoconfirmed|edit&amp;#039;]    = &amp;#039;Wikipedia semi-protected modules&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|all|sysop|move&amp;#039;]               = &amp;#039;Wikipedia move-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;indef|all|all|sysop|move&amp;#039;]             = &amp;#039;Wikipedia indefinitely move-protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|dispute|sysop|move&amp;#039;]           = &amp;#039;Wikipedia pages move-protected due to dispute&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|vandalism|sysop|move&amp;#039;]         = &amp;#039;Wikipedia pages move-protected due to vandalism&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|portal|all|sysop|move&amp;#039;]            = &amp;#039;Wikipedia move-protected portals&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|portal|all|sysop|move&amp;#039;]            = &amp;#039;Wikipedia move-protected portals&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|project|all|sysop|move&amp;#039;]           = &amp;#039;Wikipedia move-protected project pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|talk|all|sysop|move&amp;#039;]              = &amp;#039;Wikipedia move-protected talk pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|template|all|sysop|move&amp;#039;]          = &amp;#039;Wikipedia move-protected templates&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|user|all|sysop|move&amp;#039;]              = &amp;#039;Wikipedia move-protected user and user talk pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|all|all|autoconfirmed|autoreview&amp;#039;] = &amp;#039;Wikipedia pending changes protected pages&amp;#039;,&lt;br /&gt;
	[&amp;#039;all|file|all|all|upload&amp;#039;]              = &amp;#039;Wikipedia upload-protected files&amp;#039;,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Expiry category config&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table configures the expiry category behaviour for each protection&lt;br /&gt;
-- action.&lt;br /&gt;
-- * If set to true, setting that action will always categorise the page if&lt;br /&gt;
--   an expiry parameter is not set.&lt;br /&gt;
-- * If set to false, setting that action will never categorise the page.&lt;br /&gt;
-- * If set to nil, the module will categorise the page if:&lt;br /&gt;
--   1) an expiry parameter is not set, and&lt;br /&gt;
--   2) a reason is provided, and&lt;br /&gt;
--   3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck&lt;br /&gt;
--      table.&lt;br /&gt;
&lt;br /&gt;
expiryCheckActions = {&lt;br /&gt;
	edit = nil,&lt;br /&gt;
	move = false,&lt;br /&gt;
	autoreview = true,&lt;br /&gt;
	upload = false&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
reasonsWithoutExpiryCheck = {&lt;br /&gt;
	blp = true,&lt;br /&gt;
	template = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Pagetypes&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the page types available with the ${PAGETYPE} parameter.&lt;br /&gt;
-- Keys are namespace numbers, or the string &amp;quot;default&amp;quot; for the default value.&lt;br /&gt;
pagetypes = {&lt;br /&gt;
	[0] = &amp;#039;article&amp;#039;,&lt;br /&gt;
	[6] = &amp;#039;file&amp;#039;,&lt;br /&gt;
	[10] = &amp;#039;template&amp;#039;,&lt;br /&gt;
	[14] = &amp;#039;category&amp;#039;,&lt;br /&gt;
	[828] = &amp;#039;module&amp;#039;,&lt;br /&gt;
	default = &amp;#039;page&amp;#039;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Strings marking indefinite protection&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table contains values passed to the expiry parameter that mean the page&lt;br /&gt;
-- is protected indefinitely.&lt;br /&gt;
indefStrings = {&lt;br /&gt;
	[&amp;#039;indef&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;indefinite&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;indefinitely&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;infinite&amp;#039;] = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Group hierarchy&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table maps each group to all groups that have a superset of the original&lt;br /&gt;
-- group&amp;#039;s page editing permissions.&lt;br /&gt;
hierarchy = {&lt;br /&gt;
	sysop = {},&lt;br /&gt;
	reviewer = {&amp;#039;sysop&amp;#039;},&lt;br /&gt;
	filemover = {&amp;#039;sysop&amp;#039;},&lt;br /&gt;
	templateeditor = {&amp;#039;sysop&amp;#039;},&lt;br /&gt;
	extendedconfirmed = {&amp;#039;sysop&amp;#039;},&lt;br /&gt;
	autoconfirmed = {&amp;#039;reviewer&amp;#039;, &amp;#039;filemover&amp;#039;, &amp;#039;templateeditor&amp;#039;, &amp;#039;extendedconfirmed&amp;#039;},&lt;br /&gt;
	user = {&amp;#039;autoconfirmed&amp;#039;},&lt;br /&gt;
	[&amp;#039;*&amp;#039;] = {&amp;#039;user&amp;#039;}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Wrapper templates and their default arguments&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table contains wrapper templates used with the module, and their&lt;br /&gt;
-- default arguments. Templates specified in this table should contain the&lt;br /&gt;
-- following invocation, and no other template content:&lt;br /&gt;
--&lt;br /&gt;
-- {{#invoke:Protection banner|main}}&lt;br /&gt;
--&lt;br /&gt;
-- If other content is desired, it can be added between&lt;br /&gt;
-- &amp;lt;noinclude&amp;gt;...&amp;lt;/noinclude&amp;gt; tags.&lt;br /&gt;
--&lt;br /&gt;
-- When a user calls one of these wrapper templates, they will use the&lt;br /&gt;
-- default arguments automatically. However, users can override any of the&lt;br /&gt;
-- arguments.&lt;br /&gt;
wrappers = {&lt;br /&gt;
	[&amp;#039;Template:Pp&amp;#039;]                         = {},&lt;br /&gt;
	[&amp;#039;Template:Pp-30-500&amp;#039;]                  = {&amp;#039;ecp&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-blp&amp;#039;]                     = {&amp;#039;blp&amp;#039;},&lt;br /&gt;
	-- we don&amp;#039;t need Template:Pp-create&lt;br /&gt;
	[&amp;#039;Template:Pp-dispute&amp;#039;]                 = {&amp;#039;dispute&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-main-page&amp;#039;]               = {&amp;#039;mainpage&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-move&amp;#039;]                    = {action = &amp;#039;move&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-move-dispute&amp;#039;]            = {&amp;#039;dispute&amp;#039;, action = &amp;#039;move&amp;#039;},&lt;br /&gt;
	-- we don&amp;#039;t need Template:Pp-move-indef&lt;br /&gt;
	[&amp;#039;Template:Pp-move-vandalism&amp;#039;]          = {&amp;#039;vandalism&amp;#039;, action = &amp;#039;move&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-office&amp;#039;]                  = {&amp;#039;office&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-office-dmca&amp;#039;]             = {&amp;#039;dmca&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-pc&amp;#039;]                      = {action = &amp;#039;autoreview&amp;#039;, small = true},&lt;br /&gt;
	[&amp;#039;Template:Pp-pc1&amp;#039;]                     = {action = &amp;#039;autoreview&amp;#039;, small = true},&lt;br /&gt;
	[&amp;#039;Template:Pp-reset&amp;#039;]                   = {&amp;#039;reset&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-semi-indef&amp;#039;]              = {small = true},&lt;br /&gt;
	[&amp;#039;Template:Pp-sock&amp;#039;]                    = {&amp;#039;sock&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-template&amp;#039;]                = {&amp;#039;template&amp;#039;, small = true},&lt;br /&gt;
	[&amp;#039;Template:Pp-upload&amp;#039;]                  = {action = &amp;#039;upload&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-usertalk&amp;#039;]                = {&amp;#039;usertalk&amp;#039;},&lt;br /&gt;
	[&amp;#039;Template:Pp-vandalism&amp;#039;]               = {&amp;#039;vandalism&amp;#039;},&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- &lt;br /&gt;
--                                 MESSAGES&lt;br /&gt;
-- &lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
msg = {&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Intro blurb and intro fragment&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages specify what is produced by the ${INTROBLURB} and&lt;br /&gt;
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the&lt;br /&gt;
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use&lt;br /&gt;
-- intro-blurb-noexpiry or intro-fragment-noexpiry.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&amp;#039;intro-blurb-expiry&amp;#039;] = &amp;#039;${PROTECTIONBLURB} until ${EXPIRY}.&amp;#039;,&lt;br /&gt;
[&amp;#039;intro-blurb-noexpiry&amp;#039;] = &amp;#039;${PROTECTIONBLURB}.&amp;#039;,&lt;br /&gt;
[&amp;#039;intro-fragment-expiry&amp;#039;] = &amp;#039;${PROTECTIONBLURB} until ${EXPIRY},&amp;#039;,&lt;br /&gt;
[&amp;#039;intro-fragment-noexpiry&amp;#039;] = &amp;#039;${PROTECTIONBLURB}&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tooltip blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.&lt;br /&gt;
-- If the protection is temporary the tooltip-blurb-expiry message is used, and&lt;br /&gt;
-- if not the tooltip-blurb-noexpiry message is used.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&amp;#039;tooltip-blurb-expiry&amp;#039;] = &amp;#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.&amp;#039;,&lt;br /&gt;
[&amp;#039;tooltip-blurb-noexpiry&amp;#039;] = &amp;#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}.&amp;#039;,&lt;br /&gt;
[&amp;#039;tooltip-fragment-expiry&amp;#039;] = &amp;#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},&amp;#039;,&lt;br /&gt;
[&amp;#039;tooltip-fragment-noexpiry&amp;#039;] = &amp;#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Special explanation blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages&lt;br /&gt;
-- in the MediaWiki namespace.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
[&amp;#039;explanation-blurb-nounprotect&amp;#039;] = &amp;#039;See the [[Wikipedia:Protection policy|&amp;#039;&lt;br /&gt;
	.. &amp;#039;protection policy]] and ${PROTECTIONLOG} for more details.&amp;#039;&lt;br /&gt;
	.. &amp;#039; Please discuss any changes on the ${TALKPAGE}; you&amp;#039;&lt;br /&gt;
	.. &amp;#039; may ${EDITREQUEST} to ask an&amp;#039;&lt;br /&gt;
	.. &amp;#039; [[Wikipedia:Administrators|administrator]] to make an edit if it&amp;#039;&lt;br /&gt;
	.. &amp;#039; is [[Help:Minor edit#When to mark an edit as a minor edit&amp;#039;&lt;br /&gt;
	.. &amp;#039;|uncontroversial]] or supported by [[Wikipedia:Consensus&amp;#039;&lt;br /&gt;
	.. &amp;#039;|consensus]].&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection log display values&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine the display values for the protection log link&lt;br /&gt;
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&amp;#039;protection-log-display&amp;#039;] = &amp;#039;protection log&amp;#039;,&lt;br /&gt;
[&amp;#039;pc-log-display&amp;#039;] = &amp;#039;pending changes log&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Current version display values&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine the display values for the page history link&lt;br /&gt;
-- or the move log link produced by the ${CURRENTVERSION} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&amp;#039;current-version-move-display&amp;#039;] = &amp;#039;current title&amp;#039;,&lt;br /&gt;
[&amp;#039;current-version-edit-display&amp;#039;] = &amp;#039;current version&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Talk page&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This message determines the display value of the talk page link produced&lt;br /&gt;
-- with the ${TALKPAGE} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
[&amp;#039;talk-page-link-display&amp;#039;] = &amp;#039;talk page&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Edit requests&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This message determines the display value of the edit request link produced&lt;br /&gt;
-- with the ${EDITREQUEST} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
[&amp;#039;edit-request-display&amp;#039;] = &amp;#039;submit an edit request&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Expiry date format&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This is the format for the blurb expiry date. It should be valid input for&lt;br /&gt;
-- the first parameter of the #time parser function.&lt;br /&gt;
[&amp;#039;expiry-date-format&amp;#039;] = &amp;#039;F j, Y &amp;quot;at&amp;quot; H:i e&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking categories&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine which tracking categories the module outputs.&lt;br /&gt;
[&amp;#039;tracking-category-incorrect&amp;#039;] = &amp;#039;Wikipedia pages with incorrect protection templates&amp;#039;,&lt;br /&gt;
[&amp;#039;tracking-category-template&amp;#039;] = &amp;#039;Wikipedia template-protected pages other than templates and modules&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Images&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These are images that are not defined by their protection action and protection level.&lt;br /&gt;
[&amp;#039;image-filename-indef&amp;#039;] = &amp;#039;Full-protection-shackle.svg&amp;#039;,&lt;br /&gt;
[&amp;#039;image-filename-default&amp;#039;] = &amp;#039;Transparent.gif&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End messages&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Icon&amp;diff=631</id>
		<title>Module:Icon</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Icon&amp;diff=631"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements [[Template:Icon]].&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData(&amp;#039;Module:Icon/data&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local code = args.class or args[1]&lt;br /&gt;
	local iconData&lt;br /&gt;
	if code then&lt;br /&gt;
		code = code:match(&amp;#039;^%s*(.-)%s*$&amp;#039;):lower() -- trim whitespace and put in lower case&lt;br /&gt;
		iconData = data[code]&lt;br /&gt;
	end&lt;br /&gt;
	if not iconData then&lt;br /&gt;
		iconData = data._DEFAULT&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;#039;[[File:%s%s|%s|link=]]&amp;#039;,&lt;br /&gt;
		iconData.image,&lt;br /&gt;
		iconData.tooltip and &amp;#039;|&amp;#039; .. iconData.tooltip or &amp;#039;&amp;#039;,&lt;br /&gt;
		args.size or &amp;#039;16x16px&amp;#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Icon/data&amp;diff=633</id>
		<title>Module:Icon/data</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Icon/data&amp;diff=633"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module stores icon data for [[Module:Icon]].&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Icon data&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	fa = {&lt;br /&gt;
		image = &amp;quot;Featured article star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	far = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article review&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	farc = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article removal candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ffa = {&lt;br /&gt;
		aliases = {&amp;quot;dfa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fac = {&lt;br /&gt;
		aliases = {&amp;quot;fan&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ffac = {&lt;br /&gt;
		aliases = {&amp;quot;nofa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed featured article candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fl = {&lt;br /&gt;
		image = &amp;quot;Featured article star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	flrc = {&lt;br /&gt;
		aliases = {&amp;quot;flr&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list removal candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ffl = {&lt;br /&gt;
		aliases = {&amp;quot;dfl&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-featured-strike.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured list&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	flc = {&lt;br /&gt;
		aliases = {&amp;quot;fln&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fflc = {&lt;br /&gt;
		aliases = {&amp;quot;nofl&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed featured list candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	a = {&lt;br /&gt;
		image = &amp;quot;Symbol a class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;A-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	dac = {&lt;br /&gt;
		aliases = {&amp;quot;daa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol unsupport A vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Demoted A-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	acc = {&lt;br /&gt;
		aliases = {&amp;quot;acn&amp;quot;, &amp;quot;aac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;A candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;A-Class article candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	noac = {&lt;br /&gt;
		aliases = {&amp;quot;faac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol unsupport A vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed A-Class article candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ga = {&lt;br /&gt;
		image = &amp;quot;Symbol support vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	gar = {&lt;br /&gt;
		image = &amp;quot;GA Candidate Neutral vote(ChaosNil).svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article reassessment&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	dga = {&lt;br /&gt;
		image = &amp;quot;Symbol unsupport vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Delisted good article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	gan = {&lt;br /&gt;
		aliases = {&amp;quot;gac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;GA candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article nominee&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ga2 = {&lt;br /&gt;
		image = &amp;quot;Symbol neutral vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article, 2nd opinion&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	gah = {&lt;br /&gt;
		image = &amp;quot;Symbol wait.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article on hold&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fgan = {&lt;br /&gt;
		aliases = {&amp;quot;noga&amp;quot;, &amp;quot;gaf&amp;quot;, &amp;quot;gf&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol oppose vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed good article nominee&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fp = {&lt;br /&gt;
		image = &amp;quot;Cscr-featured.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured picture&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fpc = {&lt;br /&gt;
		aliases = {&amp;quot;fpn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured picture candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ffp = {&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured picture&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	vp = {&lt;br /&gt;
		image = &amp;quot;ENWP VP Logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued picture&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	vpc = {&lt;br /&gt;
		image = &amp;quot;Valued pics 1.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued picture candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fs = {&lt;br /&gt;
		image = &amp;quot;Cscr-featured.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured sound&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ffs = {&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured sound&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fsc = {&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured sound candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fpo = {&lt;br /&gt;
		image = &amp;quot;Linecons big-star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Before the featured portal process ceased in 2017, this had been designated as a featured portal.&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fpor = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured portal review&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ffpo = {&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured portal&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fpoc = {&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured portal candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ft = {&lt;br /&gt;
		image = &amp;quot;Cscr-featuredtopic.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ftrc = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic removal candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	fft = {&lt;br /&gt;
		aliases = {&amp;quot;dft&amp;quot;},&lt;br /&gt;
		image = &amp;quot;DFT candidate_cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured topic&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ftc = {&lt;br /&gt;
		aliases = {&amp;quot;ftn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;FT candidate cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	gt = {&lt;br /&gt;
		image = &amp;quot;Support cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	gtrc = {&lt;br /&gt;
		image = &amp;quot;Symbol unsupport vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic removal candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	gtc = {&lt;br /&gt;
		aliases = {&amp;quot;gtn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;GA candidate cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic candidate&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	bplus = {&lt;br /&gt;
		aliases = {&amp;quot;b+&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol bplus class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Bplus-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	b = {&lt;br /&gt;
		image = &amp;quot;Symbol b class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;B-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	br = {&lt;br /&gt;
		aliases = {&amp;quot;bcr&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Bclass-checklist.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;B-Class review&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	c = {&lt;br /&gt;
		image = &amp;quot;Symbol c class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;C-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	start = {&lt;br /&gt;
		image = &amp;quot;Symbol start class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Start-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	stub = {&lt;br /&gt;
		image = &amp;quot;Symbol stub class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Stub-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	list = {&lt;br /&gt;
		aliases = {&amp;quot;comparison&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol list class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;List-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	no = {&lt;br /&gt;
		image = &amp;quot;Crystal button cancel.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Unknown-Class article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	book = {&lt;br /&gt;
		image = &amp;quot;Symbol book class2.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikipedia book&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	category = {&lt;br /&gt;
		aliases = {&amp;quot;cat&amp;quot;, &amp;quot;categ&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Folder Hexagonal Icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Category&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	disambiguation = {&lt;br /&gt;
		aliases = {&amp;quot;dab&amp;quot;, &amp;quot;disamb&amp;quot;, &amp;quot;disambig&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol dab class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Disambiguation page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	image = {&lt;br /&gt;
		aliases = {&amp;quot;file&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Video-x-generic.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;File&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
    needed = {&lt;br /&gt;
        image = &amp;quot;Symbol needed class.svg&amp;quot;,&lt;br /&gt;
        tooltip = &amp;quot;Needed article&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
	outline = {&lt;br /&gt;
		image = &amp;quot;Global thinking.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Outline&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
        portal = {&lt;br /&gt;
		image = &amp;quot;Portal-puzzle.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Portal&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	project = {&lt;br /&gt;
		image = &amp;quot;Symbol information vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Project page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	redirect = {&lt;br /&gt;
		aliases = {&amp;quot;red&amp;quot;, &amp;quot;redir&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol redirect vote2.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Redirect&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	template = {&lt;br /&gt;
		aliases = {&amp;quot;temp&amp;quot;, &amp;quot;templ&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol template class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Template&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	essay = {&lt;br /&gt;
		image = &amp;quot;Essay.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Essay&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	na = {&lt;br /&gt;
		image = &amp;quot;Symbol neutral vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Non-article page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	aa = {&lt;br /&gt;
		image = &amp;quot;Yes check.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Audited article of limited subject matter&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	da = {&lt;br /&gt;
		image = &amp;quot;Symbol oppose vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Demoted article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	dyk = {&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Did You Know?&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	dyk2 = {&lt;br /&gt;
		image = &amp;quot;DYK questionmark icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Did You Know?&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	pr = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps kedit.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Peer review&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	ppr = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps kedit.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Portal peer review&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	q = {&lt;br /&gt;
		aliases = {&amp;quot;question&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Question&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	qi = {&lt;br /&gt;
		image = &amp;quot;Quality images logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Quality image on Wikimedia Commons&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	vi = {&lt;br /&gt;
		image = &amp;quot;Valued image seal.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued image on Wikimedia Commons&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	tfa = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Today&amp;#039;s Featured Article&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	tfl = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Today&amp;#039;s Featured List&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	itn = {&lt;br /&gt;
		image = &amp;quot;Globe current.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;In The News&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	otd = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps date.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;On This Day&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikiproject = {&lt;br /&gt;
		image = &amp;quot;People icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;WikiProject&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikipedia = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikipedia page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	commons = {&lt;br /&gt;
		image = &amp;quot;Commons-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Commons page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikiquote = {&lt;br /&gt;
		image = &amp;quot;Wikiquote-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikiquote page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikiversity = {&lt;br /&gt;
		image = &amp;quot;Wikiversity-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikiversity page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikibooks = {&lt;br /&gt;
		image = &amp;quot;Wikibooks-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikibooks page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikisource = {&lt;br /&gt;
		image = &amp;quot;Wikisource-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikisource page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wiktionary = {&lt;br /&gt;
		image = &amp;quot;Wiktionary-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wiktionary page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikinews = {&lt;br /&gt;
		image = &amp;quot;Wikinews-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikinews page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikispecies = {&lt;br /&gt;
		image = &amp;quot;Wikispecies-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikispecies page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikidata = {&lt;br /&gt;
		image = &amp;quot;Wikidata-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikidata page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	wikivoyage = {&lt;br /&gt;
		image = &amp;quot;Wikivoyage-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikivoyage page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	meta = {&lt;br /&gt;
		image = &amp;quot;Wikimedia Community Logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Meta-wiki page&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	four = {&lt;br /&gt;
		image = &amp;quot;Four Award.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Four Award&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	million = {&lt;br /&gt;
		image = &amp;quot;Million award logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Million Award&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	module = {&lt;br /&gt;
		image = &amp;quot;Lua-logo-nolabel.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Module&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	_DEFAULT = {&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End icon data&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Make aliases work the same as normal keys, and remove the &amp;quot;aliases&amp;quot; subtables. &lt;br /&gt;
for k, t in pairs(data) do&lt;br /&gt;
	if t.aliases then&lt;br /&gt;
		for i, alias in ipairs(t.aliases) do&lt;br /&gt;
			data[alias] = t&lt;br /&gt;
		end&lt;br /&gt;
		t.aliases = nil&lt;br /&gt;
	end&lt;br /&gt;
	data[k] = t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Labelled_list_hatnote&amp;diff=635</id>
		<title>Module:Labelled list hatnote</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Labelled_list_hatnote&amp;diff=635"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                               Labelled list                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module does the core work of creating a hatnote composed of a list    --&lt;br /&gt;
-- prefixed by a colon-terminated label, i.e. &amp;quot;LABEL: [andList of pages]&amp;quot;,    --&lt;br /&gt;
-- for {{see also}} and similar templates.                                    --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&amp;#039;Module:Hatnote&amp;#039;)&lt;br /&gt;
local mHatlist = require(&amp;#039;Module:Hatnote list&amp;#039;)&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Defaults global to this module&lt;br /&gt;
local defaults = {&lt;br /&gt;
	label = &amp;#039;See also&amp;#039;, --Final fallback for label argument&lt;br /&gt;
	labelForm = &amp;#039;%s: %s&amp;#039;,&lt;br /&gt;
	prefixes = {&amp;#039;label&amp;#039;, &amp;#039;label &amp;#039;, &amp;#039;l&amp;#039;},&lt;br /&gt;
	template = &amp;#039;Module:Labelled list hatnote&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Helper function that pre-combines display parameters into page arguments.&lt;br /&gt;
-- Also compresses sparse arrays, as a desirable side-effect.&lt;br /&gt;
function p.preprocessDisplays (args, prefixes)&lt;br /&gt;
	-- Prefixes specify which parameters, in order, to check for display options&lt;br /&gt;
	-- They each have numbers auto-appended, e.g. &amp;#039;label1&amp;#039;, &amp;#039;label 1&amp;#039;, &amp;amp; &amp;#039;l1&amp;#039;&lt;br /&gt;
	prefixes = prefixes or defaults.prefixes&lt;br /&gt;
	local pages = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			local display&lt;br /&gt;
			for i = 1, #prefixes do&lt;br /&gt;
				display = args[prefixes[i] .. k]&lt;br /&gt;
				if display then break end&lt;br /&gt;
			end&lt;br /&gt;
			local page = display and&lt;br /&gt;
				string.format(&amp;#039;%s|%s&amp;#039;, string.gsub(v, &amp;#039;|.*$&amp;#039;, &amp;#039;&amp;#039;), display) or v&lt;br /&gt;
			pages[#pages + 1] = page&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produces a labelled pages-list hatnote.&lt;br /&gt;
-- The main frame (template definition) takes 1 or 2 arguments, for a singular&lt;br /&gt;
-- and (optionally) plural label respectively:&lt;br /&gt;
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}&lt;br /&gt;
-- The resulting template takes pagename &amp;amp; label parameters normally.&lt;br /&gt;
function p.labelledList (frame)&lt;br /&gt;
	mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
	local labels = {frame.args[1] or defaults.label}&lt;br /&gt;
	labels[2] = frame.args[2] or labels[1]&lt;br /&gt;
	local template = frame:getParent():getTitle()&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = p.preprocessDisplays(args)&lt;br /&gt;
	local options = {&lt;br /&gt;
		extraclasses = frame.args.extraclasses,&lt;br /&gt;
		category = args.category,&lt;br /&gt;
		selfref = frame.args.selfref or args.selfref,&lt;br /&gt;
		template = template&lt;br /&gt;
	}&lt;br /&gt;
	return p._labelledList(pages, labels, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._labelledList (pages, labels, options)&lt;br /&gt;
	labels = labels or {}&lt;br /&gt;
	if #pages == 0 then&lt;br /&gt;
		return mHatnote.makeWikitextError(&lt;br /&gt;
			&amp;#039;no page names specified&amp;#039;,&lt;br /&gt;
			(options.template or defaults.template) .. &amp;#039;#Errors&amp;#039;,&lt;br /&gt;
			options.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	label = (#pages == 1 and labels[1] or labels[2]) or defaults.label&lt;br /&gt;
	local text = string.format(&lt;br /&gt;
		options.labelForm or defaults.labelForm,&lt;br /&gt;
		label,&lt;br /&gt;
		mHatlist.andList(pages, true)&lt;br /&gt;
	)&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		extraclasses = options.extraclasses,&lt;br /&gt;
		selfref = options.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return mHatnote._hatnote(text, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:List&amp;diff=637</id>
		<title>Module:List</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:List&amp;diff=637"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module outputs different kinds of lists. At the moment, bulleted,&lt;br /&gt;
-- unbulleted, horizontal, ordered, and horizontal ordered lists are supported.&lt;br /&gt;
&lt;br /&gt;
local libUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local checkType = libUtil.checkType&lt;br /&gt;
local mTableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local listTypes = {&lt;br /&gt;
	[&amp;#039;bulleted&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;unbulleted&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;horizontal&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;ordered&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;horizontal_ordered&amp;#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.makeListData(listType, args)&lt;br /&gt;
	-- Constructs a data table to be passed to p.renderList.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Classes&lt;br /&gt;
	data.classes = {}&lt;br /&gt;
	if listType == &amp;#039;horizontal&amp;#039; or listType == &amp;#039;horizontal_ordered&amp;#039; then&lt;br /&gt;
		table.insert(data.classes, &amp;#039;hlist hlist-separated&amp;#039;)&lt;br /&gt;
	elseif listType == &amp;#039;unbulleted&amp;#039; then&lt;br /&gt;
		table.insert(data.classes, &amp;#039;plainlist&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(data.classes, args.class)&lt;br /&gt;
&lt;br /&gt;
	-- Main div style&lt;br /&gt;
	data.style = args.style&lt;br /&gt;
&lt;br /&gt;
	-- Indent for horizontal lists&lt;br /&gt;
	if listType == &amp;#039;horizontal&amp;#039; or listType == &amp;#039;horizontal_ordered&amp;#039; then&lt;br /&gt;
		local indent = tonumber(args.indent)&lt;br /&gt;
		indent = indent and indent * 1.6 or 0&lt;br /&gt;
		if indent &amp;gt; 0 then&lt;br /&gt;
			data.marginLeft = indent .. &amp;#039;em&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List style types for ordered lists&lt;br /&gt;
	-- This could be &amp;quot;1, 2, 3&amp;quot;, &amp;quot;a, b, c&amp;quot;, or a number of others. The list style&lt;br /&gt;
	-- type is either set by the &amp;quot;type&amp;quot; attribute or the &amp;quot;list-style-type&amp;quot; CSS&lt;br /&gt;
	-- property.&lt;br /&gt;
	if listType == &amp;#039;ordered&amp;#039; or listType == &amp;#039;horizontal_ordered&amp;#039; then &lt;br /&gt;
		data.listStyleType = args.list_style_type or args[&amp;#039;list-style-type&amp;#039;]&lt;br /&gt;
		data.type = args[&amp;#039;type&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
		-- Detect invalid type attributes and attempt to convert them to&lt;br /&gt;
		-- list-style-type CSS properties.&lt;br /&gt;
		if data.type &lt;br /&gt;
			and not data.listStyleType&lt;br /&gt;
			and not tostring(data.type):find(&amp;#039;^%s*[1AaIi]%s*$&amp;#039;)&lt;br /&gt;
		then&lt;br /&gt;
			data.listStyleType = data.type&lt;br /&gt;
			data.type = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List tag type&lt;br /&gt;
	if listType == &amp;#039;ordered&amp;#039; or listType == &amp;#039;horizontal_ordered&amp;#039; then&lt;br /&gt;
		data.listTag = &amp;#039;ol&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		data.listTag = &amp;#039;ul&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Start number for ordered lists&lt;br /&gt;
	data.start = args.start&lt;br /&gt;
	if listType == &amp;#039;horizontal_ordered&amp;#039; then&lt;br /&gt;
		-- Apply fix to get start numbers working with horizontal ordered lists.&lt;br /&gt;
		local startNum = tonumber(data.start)&lt;br /&gt;
		if startNum then&lt;br /&gt;
			data.counterReset = &amp;#039;listitem &amp;#039; .. tostring(startNum - 1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- List style&lt;br /&gt;
	 -- ul_style and ol_style are included for backwards compatibility. No&lt;br /&gt;
	 -- distinction is made for ordered or unordered lists.&lt;br /&gt;
	data.listStyle = args.list_style&lt;br /&gt;
&lt;br /&gt;
	-- List items&lt;br /&gt;
	-- li_style is included for backwards compatibility. item_style was included&lt;br /&gt;
	-- to be easier to understand for non-coders.&lt;br /&gt;
	data.itemStyle = args.item_style or args.li_style&lt;br /&gt;
	data.items = {}&lt;br /&gt;
	for i, num in ipairs(mTableTools.numKeys(args)) do&lt;br /&gt;
		local item = {}&lt;br /&gt;
		item.content = args[num]&lt;br /&gt;
		item.style = args[&amp;#039;item&amp;#039; .. tostring(num) .. &amp;#039;_style&amp;#039;]&lt;br /&gt;
			or args[&amp;#039;item_style&amp;#039; .. tostring(num)]&lt;br /&gt;
		item.value = args[&amp;#039;item&amp;#039; .. tostring(num) .. &amp;#039;_value&amp;#039;]&lt;br /&gt;
			or args[&amp;#039;item_value&amp;#039; .. tostring(num)]&lt;br /&gt;
		table.insert(data.items, item)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderList(data)&lt;br /&gt;
	-- Renders the list HTML.&lt;br /&gt;
	&lt;br /&gt;
	-- Return the blank string if there are no list items.&lt;br /&gt;
	if type(data.items) ~= &amp;#039;table&amp;#039; or #data.items &amp;lt; 1 then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Render the main div tag.&lt;br /&gt;
	local root = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
	for i, class in ipairs(data.classes or {}) do&lt;br /&gt;
		root:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	root:css{[&amp;#039;margin-left&amp;#039;] = data.marginLeft}&lt;br /&gt;
	if data.style then&lt;br /&gt;
		root:cssText(data.style)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list tag.&lt;br /&gt;
	local list = root:tag(data.listTag or &amp;#039;ul&amp;#039;)&lt;br /&gt;
	list&lt;br /&gt;
		:attr{start = data.start, type = data.type}&lt;br /&gt;
		:css{&lt;br /&gt;
			[&amp;#039;counter-reset&amp;#039;] = data.counterReset,&lt;br /&gt;
			[&amp;#039;list-style-type&amp;#039;] = data.listStyleType&lt;br /&gt;
		}&lt;br /&gt;
	if data.listStyle then&lt;br /&gt;
		list:cssText(data.listStyle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list items&lt;br /&gt;
	for i, t in ipairs(data.items or {}) do&lt;br /&gt;
		local item = list:tag(&amp;#039;li&amp;#039;)&lt;br /&gt;
		if data.itemStyle then&lt;br /&gt;
			item:cssText(data.itemStyle)&lt;br /&gt;
		end&lt;br /&gt;
		if t.style then&lt;br /&gt;
			item:cssText(t.style)&lt;br /&gt;
		end&lt;br /&gt;
		item&lt;br /&gt;
			:attr{value = t.value}&lt;br /&gt;
			:wikitext(t.content)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args)&lt;br /&gt;
	local isDeprecated = false -- Tracks deprecated parameters.&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		if k:find(&amp;#039;^item_style%d+$&amp;#039;) or k:find(&amp;#039;^item_value%d+$&amp;#039;) then&lt;br /&gt;
			isDeprecated = true&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local ret = &amp;#039;&amp;#039;&lt;br /&gt;
	if isDeprecated then&lt;br /&gt;
		ret = ret .. &amp;#039;[[Category:List templates with deprecated parameters]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeList(listType, args)&lt;br /&gt;
	if not listType or not listTypes[listType] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;bad argument #1 to &amp;#039;makeList&amp;#039; (&amp;#039;%s&amp;#039; is not a valid list type)&amp;quot;,&lt;br /&gt;
			tostring(listType)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	checkType(&amp;#039;makeList&amp;#039;, 2, args, &amp;#039;table&amp;#039;)&lt;br /&gt;
	local data = p.makeListData(listType, args)&lt;br /&gt;
	local list = p.renderList(data)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args)&lt;br /&gt;
	return list .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for listType in pairs(listTypes) do&lt;br /&gt;
	p[listType] = function (frame)&lt;br /&gt;
		local mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
		local origArgs = mArguments.getArgs(frame)&lt;br /&gt;
		-- Copy all the arguments to a new table, for faster indexing.&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, v in pairs(origArgs) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return p.makeList(listType, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Lua_banner&amp;diff=639</id>
		<title>Module:Lua banner</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Lua_banner&amp;diff=639"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements the {{lua}} template.&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local mList = require(&amp;#039;Module:List&amp;#039;)&lt;br /&gt;
local mTableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
local mMessageBox = require(&amp;#039;Module:Message box&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		v = v:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
		if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local modules = mTableTools.compressSparseArray(args)&lt;br /&gt;
	local box = p.renderBox(modules)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args, modules)&lt;br /&gt;
	return box .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderBox(modules)&lt;br /&gt;
	local boxArgs = {}&lt;br /&gt;
	if #modules &amp;lt; 1 then&lt;br /&gt;
		boxArgs.text = &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: no modules specified&amp;lt;/strong&amp;gt;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		local moduleLinks = {}&lt;br /&gt;
		for i, module in ipairs(modules) do&lt;br /&gt;
			moduleLinks[i] = string.format(&amp;#039;[[:%s]]&amp;#039;, module)&lt;br /&gt;
		end&lt;br /&gt;
		local moduleList = mList.makeList(&amp;#039;bulleted&amp;#039;, moduleLinks)&lt;br /&gt;
		boxArgs.text = &amp;#039;This &amp;#039; .. &lt;br /&gt;
			(mw.title.getCurrentTitle():inNamespaces(828,829) and &amp;#039;module&amp;#039; or &amp;#039;template&amp;#039;) ..&lt;br /&gt;
			&amp;#039; uses [[Wikipedia:Lua|Lua]]:\n&amp;#039; .. moduleList&lt;br /&gt;
	end&lt;br /&gt;
	boxArgs.type = &amp;#039;notice&amp;#039;&lt;br /&gt;
	boxArgs.small = true&lt;br /&gt;
	boxArgs.image = &amp;#039;[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]&amp;#039;&lt;br /&gt;
	return mMessageBox.main(&amp;#039;mbox&amp;#039;, boxArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args, modules, titleObj)&lt;br /&gt;
	if yesno(args.nocat) then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Error category&lt;br /&gt;
	if #modules &amp;lt; 1 then&lt;br /&gt;
		cats[#cats + 1] = &amp;#039;Lua templates with errors&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Lua templates category&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	local subpageBlacklist = {&lt;br /&gt;
		doc = true,&lt;br /&gt;
		sandbox = true,&lt;br /&gt;
		sandbox2 = true,&lt;br /&gt;
		testcases = true&lt;br /&gt;
	}&lt;br /&gt;
	if titleObj.namespace == 10 &lt;br /&gt;
		and not subpageBlacklist[titleObj.subpageText]&lt;br /&gt;
	then&lt;br /&gt;
		local category = args.category&lt;br /&gt;
		if not category then&lt;br /&gt;
			local categories = {&lt;br /&gt;
				[&amp;#039;Module:String&amp;#039;] = &amp;#039;Lua String-based templates&amp;#039;,&lt;br /&gt;
				[&amp;#039;Module:Math&amp;#039;] = &amp;#039;Templates based on the Math Lua module&amp;#039;,&lt;br /&gt;
				[&amp;#039;Module:BaseConvert&amp;#039;] = &amp;#039;Templates based on the BaseConvert Lua module&amp;#039;,&lt;br /&gt;
				[&amp;#039;Module:Citation&amp;#039;] = &amp;#039;Lua-based citation templates&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
			categories[&amp;#039;Module:Citation/CS1&amp;#039;] = categories[&amp;#039;Module:Citation&amp;#039;]&lt;br /&gt;
			category = modules[1] and categories[modules[1]]&lt;br /&gt;
			category = category or &amp;#039;Lua-based templates&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		cats[#cats + 1] = category&lt;br /&gt;
		local protLevels = {&lt;br /&gt;
			autoconfirmed = 1,&lt;br /&gt;
			extendedconfirmed = 2,&lt;br /&gt;
			templateeditor = 3,&lt;br /&gt;
			sysop = 4&lt;br /&gt;
		}&lt;br /&gt;
		local currentProt = titleObj.protectionLevels[&amp;quot;edit&amp;quot;][1]&lt;br /&gt;
		if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end&lt;br /&gt;
		for i, module in ipairs(modules) do&lt;br /&gt;
			local moduleProt = mw.title.new(module).protectionLevels[&amp;quot;edit&amp;quot;][1]&lt;br /&gt;
			if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end&lt;br /&gt;
			if moduleProt &amp;lt; currentProt then&lt;br /&gt;
				cats[#cats + 1] = &amp;quot;Templates using under-protected Lua modules&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, cat in ipairs(cats) do&lt;br /&gt;
		cats[i] = string.format(&amp;#039;[[Category:%s]]&amp;#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(cats)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Math&amp;diff=641</id>
		<title>Module:Math</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Math&amp;diff=641"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module provides a number of basic mathematical operations.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local yesno, getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.&lt;br /&gt;
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper functions used to avoid redundant code.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function err(msg)&lt;br /&gt;
	-- Generates wikitext error messages.&lt;br /&gt;
	return mw.ustring.format(&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Formatting error: %s&amp;lt;/strong&amp;gt;&amp;#039;, msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function unpackNumberArgs(args)&lt;br /&gt;
	-- Returns an unpacked list of arguments specified with numerical keys.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			table.insert(ret, v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return unpack(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeArgArray(...)&lt;br /&gt;
	-- Makes an array of arguments from a list of arguments that might include nils.&lt;br /&gt;
	local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can&amp;#039;t use ipairs.&lt;br /&gt;
	local nums = {} -- Stores the numbers of valid numerical arguments.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		v = p._cleanNumber(v)&lt;br /&gt;
		if v then&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	for i, num in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = args[num]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fold(func, ...)&lt;br /&gt;
	-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,&lt;br /&gt;
	-- and must return a number as an output. This number is then supplied as input to the next function call.&lt;br /&gt;
	local vals = makeArgArray(...)	&lt;br /&gt;
	local count = #vals -- The number of valid arguments&lt;br /&gt;
	if count == 0 then return&lt;br /&gt;
		-- Exit if we have no valid args, otherwise removing the first arg would cause an error.&lt;br /&gt;
		nil, 0&lt;br /&gt;
	end &lt;br /&gt;
	local ret = table.remove(vals, 1)&lt;br /&gt;
	for _, val in ipairs(vals) do&lt;br /&gt;
		ret = func(ret, val)&lt;br /&gt;
	end&lt;br /&gt;
	return ret, count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Fold arguments by selectively choosing values (func should return when to choose the current &amp;quot;dominant&amp;quot; value).&lt;br /&gt;
]]&lt;br /&gt;
local function binary_fold(func, ...)&lt;br /&gt;
	local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...)&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
random&lt;br /&gt;
&lt;br /&gt;
Generate a random number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke: Math | random }}&lt;br /&gt;
{{#invoke: Math | random | maximum value }}&lt;br /&gt;
{{#invoke: Math | random | minimum value | maximum value }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.random(args)&lt;br /&gt;
	local first = p._cleanNumber(args[1])&lt;br /&gt;
	local second = p._cleanNumber(args[2])&lt;br /&gt;
	return p._random(first, second)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._random(first, second)&lt;br /&gt;
	math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))&lt;br /&gt;
	-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.&lt;br /&gt;
	if first and second then&lt;br /&gt;
		if first &amp;lt;= second then -- math.random doesn&amp;#039;t allow the first number to be greater than the second.&lt;br /&gt;
			return math.random(first, second)&lt;br /&gt;
		end&lt;br /&gt;
	elseif first then&lt;br /&gt;
		return math.random(first)&lt;br /&gt;
	else&lt;br /&gt;
		return math.random()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
order&lt;br /&gt;
&lt;br /&gt;
Determine order of magnitude of a number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke: Math | order | value }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.order(args)&lt;br /&gt;
	local input_string = (args[1] or args.x or &amp;#039;0&amp;#039;);&lt;br /&gt;
	local input_number = p._cleanNumber(input_string);&lt;br /&gt;
	if input_number == nil then&lt;br /&gt;
		return err(&amp;#039;order of magnitude input appears non-numeric&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return p._order(input_number)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._order(x)&lt;br /&gt;
	if x == 0 then return 0 end&lt;br /&gt;
	return math.floor(math.log10(math.abs(x)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision&lt;br /&gt;
&lt;br /&gt;
Detemines the precision of a number using the string representation&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{ #invoke: Math | precision | value }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.precision(args)&lt;br /&gt;
	local input_string = (args[1] or args.x or &amp;#039;0&amp;#039;);&lt;br /&gt;
	local trap_fraction = args.check_fraction;&lt;br /&gt;
	local input_number;&lt;br /&gt;
&lt;br /&gt;
	if not yesno then&lt;br /&gt;
		yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, &amp;quot;no&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;0&amp;quot; and a few others. See [[Module:Yesno]].&lt;br /&gt;
		local pos = string.find(input_string, &amp;#039;/&amp;#039;, 1, true);&lt;br /&gt;
		if pos ~= nil then&lt;br /&gt;
			if string.find(input_string, &amp;#039;/&amp;#039;, pos + 1, true) == nil then&lt;br /&gt;
				local denominator = string.sub(input_string, pos+1, -1);&lt;br /&gt;
				local denom_value = tonumber(denominator);&lt;br /&gt;
				if denom_value ~= nil then&lt;br /&gt;
					return math.log10(denom_value);&lt;br /&gt;
				end&lt;br /&gt;
			end                        &lt;br /&gt;
		end&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	input_number, input_string = p._cleanNumber(input_string);&lt;br /&gt;
	if input_string == nil then&lt;br /&gt;
		return err(&amp;#039;precision input appears non-numeric&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return p._precision(input_string)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._precision(x)&lt;br /&gt;
	if type(x) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		x = tostring(x)&lt;br /&gt;
	end&lt;br /&gt;
	x = string.upper(x)&lt;br /&gt;
&lt;br /&gt;
	local decimal = x:find(&amp;#039;%.&amp;#039;)&lt;br /&gt;
	local exponent_pos = x:find(&amp;#039;E&amp;#039;)&lt;br /&gt;
	local result = 0;&lt;br /&gt;
&lt;br /&gt;
	if exponent_pos ~= nil then&lt;br /&gt;
		local exponent = string.sub(x, exponent_pos + 1)&lt;br /&gt;
		x = string.sub(x, 1, exponent_pos - 1)&lt;br /&gt;
		result = result - tonumber(exponent)&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	if decimal ~= nil then&lt;br /&gt;
		result = result + string.len(x) - decimal&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pos = string.len(x);&lt;br /&gt;
	while x:byte(pos) == string.byte(&amp;#039;0&amp;#039;) do&lt;br /&gt;
		pos = pos - 1&lt;br /&gt;
		result = result - 1&lt;br /&gt;
		if pos &amp;lt;= 0 then&lt;br /&gt;
			return 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
max&lt;br /&gt;
&lt;br /&gt;
Finds the maximum argument&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| max | value1 | value2 | ... }}&lt;br /&gt;
&lt;br /&gt;
Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.max(args)&lt;br /&gt;
	return p._max(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._max(...)&lt;br /&gt;
	local max_value = binary_fold((function(a, b) return a &amp;gt; b end), ...)&lt;br /&gt;
	if max_value then&lt;br /&gt;
		return max_value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
median&lt;br /&gt;
&lt;br /&gt;
Find the median of set of numbers&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | median | number1 | number2 | ...}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math | median }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.median(args)&lt;br /&gt;
	return p._median(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._median(...)&lt;br /&gt;
	local vals = makeArgArray(...)	&lt;br /&gt;
	local count = #vals&lt;br /&gt;
	table.sort(vals)&lt;br /&gt;
	&lt;br /&gt;
	if count == 0 then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if p._mod(count, 2) == 0 then&lt;br /&gt;
		return (vals[count/2] + vals[count/2+1])/2&lt;br /&gt;
	else&lt;br /&gt;
		return vals[math.ceil(count/2)]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
min &lt;br /&gt;
&lt;br /&gt;
Finds the minimum argument&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| min | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math| min }}&lt;br /&gt;
&lt;br /&gt;
When used with no arguments, it takes its input from the parent&lt;br /&gt;
frame.  Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.min(args)&lt;br /&gt;
	return p._min(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._min(...)&lt;br /&gt;
	local min_value = binary_fold((function(a, b) return a &amp;lt; b end), ...)&lt;br /&gt;
	if min_value then&lt;br /&gt;
		return min_value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sum &lt;br /&gt;
&lt;br /&gt;
Finds the sum&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| sum | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math| sum }}&lt;br /&gt;
&lt;br /&gt;
Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.sum(args)&lt;br /&gt;
	return p._sum(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._sum(...)&lt;br /&gt;
	local sums, count = fold((function(a, b) return a + b end), ...)&lt;br /&gt;
	if not sums then&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		return sums&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
average &lt;br /&gt;
&lt;br /&gt;
Finds the average&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| average | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math| average }}&lt;br /&gt;
&lt;br /&gt;
Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.average(args)&lt;br /&gt;
	return p._average(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._average(...)&lt;br /&gt;
	local sum, count = fold((function(a, b) return a + b end), ...)&lt;br /&gt;
	if not sum then&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		return sum / count&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
round&lt;br /&gt;
&lt;br /&gt;
Rounds a number to specified precision&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | round | value | precision }}&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function wrap.round(args)&lt;br /&gt;
	local value = p._cleanNumber(args[1] or args.value or 0)&lt;br /&gt;
	local precision = p._cleanNumber(args[2] or args.precision or 0)&lt;br /&gt;
	if value == nil or precision == nil then&lt;br /&gt;
		return err(&amp;#039;round input appears non-numeric&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return p._round(value, precision)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._round(value, precision)&lt;br /&gt;
	local rescale = math.pow(10, precision or 0);&lt;br /&gt;
	return math.floor(value * rescale + 0.5) / rescale;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
log10&lt;br /&gt;
&lt;br /&gt;
returns the log (base 10) of a number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | log10 | x }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.log10(args)&lt;br /&gt;
	return math.log10(args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
mod&lt;br /&gt;
&lt;br /&gt;
Implements the modulo operator&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | mod | x | y }}&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function wrap.mod(args)&lt;br /&gt;
	local x = p._cleanNumber(args[1])&lt;br /&gt;
	local y = p._cleanNumber(args[2])&lt;br /&gt;
	if not x then&lt;br /&gt;
		return err(&amp;#039;first argument to mod appears non-numeric&amp;#039;)&lt;br /&gt;
	elseif not y then&lt;br /&gt;
		return err(&amp;#039;second argument to mod appears non-numeric&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return p._mod(x, y)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._mod(x, y)&lt;br /&gt;
	local ret = x % y&lt;br /&gt;
	if not (0 &amp;lt;= ret and ret &amp;lt; y) then&lt;br /&gt;
		ret = 0&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
gcd&lt;br /&gt;
&lt;br /&gt;
Calculates the greatest common divisor of multiple numbers&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function wrap.gcd(args)&lt;br /&gt;
	return p._gcd(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._gcd(...)&lt;br /&gt;
	local function findGcd(a, b)&lt;br /&gt;
		local r = b&lt;br /&gt;
		local oldr = a&lt;br /&gt;
		while r ~= 0 do&lt;br /&gt;
			local quotient = math.floor(oldr / r)&lt;br /&gt;
			oldr, r = r, oldr - quotient * r&lt;br /&gt;
		end&lt;br /&gt;
		if oldr &amp;lt; 0 then&lt;br /&gt;
			oldr = oldr * -1&lt;br /&gt;
		end&lt;br /&gt;
		return oldr&lt;br /&gt;
	end&lt;br /&gt;
	local result, count = fold(findGcd, ...)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision_format&lt;br /&gt;
&lt;br /&gt;
Rounds a number to the specified precision and formats according to rules &lt;br /&gt;
originally used for {{template:Rnd}}.  Output is a string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke: Math | precision_format | number | precision }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.precision_format(args)&lt;br /&gt;
	local value_string = args[1] or 0&lt;br /&gt;
	local precision = args[2] or 0&lt;br /&gt;
	return p._precision_format(value_string, precision)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._precision_format(value_string, precision)&lt;br /&gt;
	-- For access to Mediawiki built-in formatter.&lt;br /&gt;
	local lang = mw.getContentLanguage();&lt;br /&gt;
&lt;br /&gt;
	local value&lt;br /&gt;
	value, value_string = p._cleanNumber(value_string)&lt;br /&gt;
	precision = p._cleanNumber(precision)&lt;br /&gt;
&lt;br /&gt;
	-- Check for non-numeric input&lt;br /&gt;
	if value == nil or precision == nil then&lt;br /&gt;
		return err(&amp;#039;invalid input when rounding&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local current_precision = p._precision(value)&lt;br /&gt;
	local order = p._order(value)&lt;br /&gt;
&lt;br /&gt;
	-- Due to round-off effects it is neccesary to limit the returned precision under&lt;br /&gt;
	-- some circumstances because the terminal digits will be inaccurately reported.&lt;br /&gt;
	if order + precision &amp;gt;= 14 then&lt;br /&gt;
		orig_precision = p._precision(value_string)&lt;br /&gt;
		if order + orig_precision &amp;gt;= 14 then&lt;br /&gt;
			precision = 13 - order;        &lt;br /&gt;
		end        &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If rounding off, truncate extra digits&lt;br /&gt;
	if precision &amp;lt; current_precision then&lt;br /&gt;
		value = p._round(value, precision)&lt;br /&gt;
		current_precision = p._precision(value)&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	local formatted_num = lang:formatNum(math.abs(value))&lt;br /&gt;
	local sign&lt;br /&gt;
&lt;br /&gt;
	-- Use proper unary minus sign rather than ASCII default&lt;br /&gt;
	if value &amp;lt; 0 then&lt;br /&gt;
		sign = &amp;#039;−&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		sign = &amp;#039;&amp;#039;&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	-- Handle cases requiring scientific notation&lt;br /&gt;
	if string.find(formatted_num, &amp;#039;E&amp;#039;, 1, true) ~= nil or math.abs(order) &amp;gt;= 9 then&lt;br /&gt;
		value = value * math.pow(10, -order)&lt;br /&gt;
		current_precision = current_precision + order&lt;br /&gt;
		precision = precision + order&lt;br /&gt;
		formatted_num = lang:formatNum(math.abs(value))&lt;br /&gt;
	else&lt;br /&gt;
		order = 0;        &lt;br /&gt;
	end&lt;br /&gt;
	formatted_num = sign .. formatted_num&lt;br /&gt;
&lt;br /&gt;
	-- Pad with zeros, if needed    &lt;br /&gt;
	if current_precision &amp;lt; precision then&lt;br /&gt;
		local padding&lt;br /&gt;
		if current_precision &amp;lt;= 0 then&lt;br /&gt;
			if precision &amp;gt; 0 then&lt;br /&gt;
				local zero_sep = lang:formatNum(1.1)&lt;br /&gt;
				formatted_num = formatted_num .. zero_sep:sub(2,2)&lt;br /&gt;
&lt;br /&gt;
				padding = precision&lt;br /&gt;
				if padding &amp;gt; 20 then&lt;br /&gt;
					padding = 20&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				formatted_num = formatted_num .. string.rep(&amp;#039;0&amp;#039;, padding)&lt;br /&gt;
			end            &lt;br /&gt;
		else                   &lt;br /&gt;
			padding = precision - current_precision&lt;br /&gt;
			if padding &amp;gt; 20 then&lt;br /&gt;
				padding = 20&lt;br /&gt;
			end&lt;br /&gt;
			formatted_num = formatted_num .. string.rep(&amp;#039;0&amp;#039;, padding)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add exponential notation, if necessary.&lt;br /&gt;
	if order ~= 0 then&lt;br /&gt;
		-- Use proper unary minus sign rather than ASCII default&lt;br /&gt;
		if order &amp;lt; 0 then&lt;br /&gt;
			order = &amp;#039;−&amp;#039; .. lang:formatNum(math.abs(order))&lt;br /&gt;
		else&lt;br /&gt;
			order = lang:formatNum(order)&lt;br /&gt;
		end    &lt;br /&gt;
&lt;br /&gt;
		formatted_num = formatted_num .. &amp;#039;&amp;lt;span style=&amp;quot;margin:0 .15em 0 .25em&amp;quot;&amp;gt;×&amp;lt;/span&amp;gt;10&amp;lt;sup&amp;gt;&amp;#039; .. order .. &amp;#039;&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return formatted_num&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that interprets the input numerically.  If the &lt;br /&gt;
input does not appear to be a number, attempts evaluating it as&lt;br /&gt;
a parser functions expression.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function p._cleanNumber(number_string)&lt;br /&gt;
	if type(number_string) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		-- We were passed a number, so we don&amp;#039;t need to do any processing.&lt;br /&gt;
		return number_string, tostring(number_string)&lt;br /&gt;
	elseif type(number_string) ~= &amp;#039;string&amp;#039; or not number_string:find(&amp;#039;%S&amp;#039;) then&lt;br /&gt;
		-- We were passed a non-string or a blank string, so exit.&lt;br /&gt;
		return nil, nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Attempt basic conversion&lt;br /&gt;
	local number = tonumber(number_string)&lt;br /&gt;
&lt;br /&gt;
	-- If failed, attempt to evaluate input as an expression&lt;br /&gt;
	if number == nil then&lt;br /&gt;
		local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)&lt;br /&gt;
		if success then&lt;br /&gt;
			number = tonumber(result)&lt;br /&gt;
			number_string = tostring(number)&lt;br /&gt;
		else&lt;br /&gt;
			number = nil&lt;br /&gt;
			number_string = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		number_string = number_string:match(&amp;quot;^%s*(.-)%s*$&amp;quot;) -- String is valid but may contain padding, clean it.&lt;br /&gt;
		number_string = number_string:match(&amp;quot;^%+(.*)$&amp;quot;) or number_string -- Trim any leading + signs.&lt;br /&gt;
		if number_string:find(&amp;#039;^%-?0[xX]&amp;#039;) then&lt;br /&gt;
			-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.&lt;br /&gt;
			number_string = tostring(number)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return number, number_string&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current&lt;br /&gt;
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local mt = { __index = function(t, k)&lt;br /&gt;
	return function(frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return wrap[k](getArgs(frame))  -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.&lt;br /&gt;
	end&lt;br /&gt;
end }&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Message_box&amp;diff=643</id>
		<title>Module:Message box</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Message_box&amp;diff=643"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This is a meta-module for producing message box templates, including&lt;br /&gt;
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules.&lt;br /&gt;
require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
local getArgs&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Get a language object for formatDate and ucfirst.&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
-- Define constants&lt;br /&gt;
local CONFIG_MODULE = &amp;#039;Module:Message box/configuration&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(...)&lt;br /&gt;
	-- Get the title object, passing the function through pcall&lt;br /&gt;
	-- in case we are over the expensive function count limit.&lt;br /&gt;
	local success, title = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of two arrays.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, v in ipairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(ret)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(args, prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = mw.ustring.match(tostring(k), &amp;#039;^&amp;#039; .. prefix .. &amp;#039;([1-9]%d*)$&amp;#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			table.insert(nums, tonumber(num))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Box class definition&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local MessageBox = {}&lt;br /&gt;
MessageBox.__index = MessageBox&lt;br /&gt;
&lt;br /&gt;
function MessageBox.new(boxType, args, cfg)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Set the title object and the namespace.&lt;br /&gt;
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set the config for our box type.&lt;br /&gt;
	obj.cfg = cfg[boxType]&lt;br /&gt;
	if not obj.cfg then&lt;br /&gt;
		local ns = obj.title.namespace&lt;br /&gt;
		-- boxType is &amp;quot;mbox&amp;quot; or invalid input&lt;br /&gt;
		if ns == 0 then&lt;br /&gt;
			obj.cfg = cfg.ambox -- main namespace&lt;br /&gt;
		elseif ns == 6 then&lt;br /&gt;
			obj.cfg = cfg.imbox -- file namespace&lt;br /&gt;
		elseif ns == 14 then&lt;br /&gt;
			obj.cfg = cfg.cmbox -- category namespace&lt;br /&gt;
		else&lt;br /&gt;
			local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
			if nsTable and nsTable.isTalk then&lt;br /&gt;
				obj.cfg = cfg.tmbox -- any talk namespace&lt;br /&gt;
			else&lt;br /&gt;
				obj.cfg = cfg.ombox -- other namespaces or invalid input&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the arguments, and remove all blank arguments except for the ones&lt;br /&gt;
	-- listed in cfg.allowBlankParams.&lt;br /&gt;
	do&lt;br /&gt;
		local newArgs = {}&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				newArgs[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do&lt;br /&gt;
			newArgs[param] = args[param]&lt;br /&gt;
		end&lt;br /&gt;
		obj.args = newArgs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define internal data structure.&lt;br /&gt;
	obj.categories = {}&lt;br /&gt;
	obj.classes = {}&lt;br /&gt;
	-- For lazy loading of [[Module:Category handler]].&lt;br /&gt;
	obj.hasCategories = false&lt;br /&gt;
&lt;br /&gt;
	return setmetatable(obj, MessageBox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addCat(ns, cat, sort)&lt;br /&gt;
	if not cat then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if sort then&lt;br /&gt;
		cat = string.format(&amp;#039;[[Category:%s|%s]]&amp;#039;, cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		cat = string.format(&amp;#039;[[Category:%s]]&amp;#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	self.hasCategories = true&lt;br /&gt;
	self.categories[ns] = self.categories[ns] or {}&lt;br /&gt;
	table.insert(self.categories[ns], cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addClass(class)&lt;br /&gt;
	if not class then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setParameters()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Get type data.&lt;br /&gt;
	self.type = args.type&lt;br /&gt;
	local typeData = cfg.types[self.type]&lt;br /&gt;
	self.invalidTypeError = cfg.showInvalidTypeError&lt;br /&gt;
		and self.type&lt;br /&gt;
		and not typeData&lt;br /&gt;
	typeData = typeData or cfg.types[cfg.default]&lt;br /&gt;
	self.typeClass = typeData.class&lt;br /&gt;
	self.typeImage = typeData.image&lt;br /&gt;
&lt;br /&gt;
	-- Find if the box has been wrongly substituted.&lt;br /&gt;
	self.isSubstituted = cfg.substCheck and args.subst == &amp;#039;SUBST&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	self.isSmall = cfg.allowSmall and (&lt;br /&gt;
		cfg.smallParam and args.small == cfg.smallParam&lt;br /&gt;
		or not cfg.smallParam and yesno(args.small)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	self.id = args.id&lt;br /&gt;
	if yesno(args.plainlinks) ~= false then&lt;br /&gt;
		self:addClass(&amp;#039;plainlinks&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs(cfg.classes or {}) do&lt;br /&gt;
		self:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self:addClass(cfg.smallClass or &amp;#039;mbox-small&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(self.typeClass)&lt;br /&gt;
	self:addClass(args.class)&lt;br /&gt;
	self.style = args.style&lt;br /&gt;
	self.attrs = args.attrs&lt;br /&gt;
&lt;br /&gt;
	-- Set text style.&lt;br /&gt;
	self.textstyle = args.textstyle&lt;br /&gt;
&lt;br /&gt;
	-- Find if we are on the template page or not. This functionality is only&lt;br /&gt;
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory&lt;br /&gt;
	-- and cfg.templateCategoryRequireName are set.&lt;br /&gt;
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields&lt;br /&gt;
	if self.useCollapsibleTextFields&lt;br /&gt;
		or cfg.templateCategory&lt;br /&gt;
		and cfg.templateCategoryRequireName&lt;br /&gt;
	then&lt;br /&gt;
		self.name = args.name&lt;br /&gt;
		if self.name then&lt;br /&gt;
			local templateName = mw.ustring.match(&lt;br /&gt;
				self.name,&lt;br /&gt;
				&amp;#039;^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$&amp;#039;&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = &amp;#039;Template:&amp;#039; .. templateName&lt;br /&gt;
			self.templateTitle = getTitleObject(templateName)&lt;br /&gt;
		end&lt;br /&gt;
		self.isTemplatePage = self.templateTitle&lt;br /&gt;
			and mw.title.equals(self.title, self.templateTitle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Process data for collapsible text fields. At the moment these are only&lt;br /&gt;
	-- used in {{ambox}}.&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- Get the self.issue value.&lt;br /&gt;
		if self.isSmall and args.smalltext then&lt;br /&gt;
			self.issue = args.smalltext&lt;br /&gt;
		else&lt;br /&gt;
			local sect&lt;br /&gt;
			if args.sect == &amp;#039;&amp;#039; then&lt;br /&gt;
				sect = &amp;#039;This &amp;#039; .. (cfg.sectionDefault or &amp;#039;page&amp;#039;)&lt;br /&gt;
			elseif type(args.sect) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				sect = &amp;#039;This &amp;#039; .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == &amp;#039;string&amp;#039; and issue ~= &amp;#039;&amp;#039; and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == &amp;#039;string&amp;#039; and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			table.insert(issues, sect)&lt;br /&gt;
			table.insert(issues, issue)&lt;br /&gt;
			table.insert(issues, text)&lt;br /&gt;
			self.issue = table.concat(issues, &amp;#039; &amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get the self.talk value.&lt;br /&gt;
		local talk = args.talk&lt;br /&gt;
		-- Show talk links on the template page or template subpages if the talk&lt;br /&gt;
		-- parameter is blank.&lt;br /&gt;
		if talk == &amp;#039;&amp;#039;&lt;br /&gt;
			and self.templateTitle&lt;br /&gt;
			and (&lt;br /&gt;
				mw.title.equals(self.templateTitle, self.title)&lt;br /&gt;
				or self.title:isSubpageOf(self.templateTitle)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			talk = &amp;#039;#&amp;#039;&lt;br /&gt;
		elseif talk == &amp;#039;&amp;#039; then&lt;br /&gt;
			talk = nil&lt;br /&gt;
		end&lt;br /&gt;
		if talk then&lt;br /&gt;
			-- If the talk value is a talk page, make a link to that page. Else&lt;br /&gt;
			-- assume that it&amp;#039;s a section heading, and make a link to the talk&lt;br /&gt;
			-- page of the current page with that section heading.&lt;br /&gt;
			local talkTitle = getTitleObject(talk)&lt;br /&gt;
			local talkArgIsTalkPage = true&lt;br /&gt;
			if not talkTitle or not talkTitle.isTalkPage then&lt;br /&gt;
				talkArgIsTalkPage = false&lt;br /&gt;
				talkTitle = getTitleObject(&lt;br /&gt;
					self.title.text,&lt;br /&gt;
					mw.site.namespaces[self.title.namespace].talk.id&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if talkTitle and talkTitle.exists then&lt;br /&gt;
				local talkText = &amp;#039;Relevant discussion may be found on&amp;#039;&lt;br /&gt;
				if talkArgIsTalkPage then&lt;br /&gt;
					talkText = string.format(&lt;br /&gt;
						&amp;#039;%s [[%s|%s]].&amp;#039;,&lt;br /&gt;
						talkText,&lt;br /&gt;
						talk,&lt;br /&gt;
						talkTitle.prefixedText&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					talkText = string.format(&lt;br /&gt;
						&amp;#039;%s the [[%s#%s|talk page]].&amp;#039;,&lt;br /&gt;
						talkText,&lt;br /&gt;
						talkTitle.prefixedText,&lt;br /&gt;
						talk&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
				self.talk = talkText&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get other values.&lt;br /&gt;
		self.fix = args.fix ~= &amp;#039;&amp;#039; and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == &amp;#039;&amp;#039; and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate(&amp;#039;F Y&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = string.format(&amp;quot; &amp;lt;small&amp;gt;&amp;#039;&amp;#039;(%s)&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&lt;br /&gt;
		if yesno(args.removalnotice) then&lt;br /&gt;
			self.removalNotice = cfg.removalNotice&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the non-collapsible text field. At the moment this is used by all box&lt;br /&gt;
	-- types other than ambox, and also by ambox when small=yes.&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self.text = args.smalltext or args.text&lt;br /&gt;
	else&lt;br /&gt;
		self.text = args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the below row.&lt;br /&gt;
	self.below = cfg.below and args.below&lt;br /&gt;
&lt;br /&gt;
	-- General image settings.&lt;br /&gt;
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
	if cfg.imageEmptyCellStyle then&lt;br /&gt;
		self.imageEmptyCellStyle = &amp;#039;border:none;padding:0px;width:1px&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Left image settings.&lt;br /&gt;
	local imageLeft = self.isSmall and args.smallimage or args.image&lt;br /&gt;
	if cfg.imageCheckBlank and imageLeft ~= &amp;#039;blank&amp;#039; and imageLeft ~= &amp;#039;none&amp;#039;&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= &amp;#039;none&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		self.imageLeft = imageLeft&lt;br /&gt;
		if not imageLeft then&lt;br /&gt;
			local imageSize = self.isSmall&lt;br /&gt;
				and (cfg.imageSmallSize or &amp;#039;30x30px&amp;#039;)&lt;br /&gt;
				or &amp;#039;40x40px&amp;#039;&lt;br /&gt;
			self.imageLeft = string.format(&amp;#039;[[File:%s|%s|link=|alt=]]&amp;#039;, self.typeImage&lt;br /&gt;
				or &amp;#039;Imbox notice.png&amp;#039;, imageSize)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Right image settings.&lt;br /&gt;
	local imageRight = self.isSmall and args.smallimageright or args.imageright&lt;br /&gt;
	if not (cfg.imageRightNone and imageRight == &amp;#039;none&amp;#039;) then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setMainspaceCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	if not cfg.allowMainspaceCategories then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for _, prefix in ipairs{&amp;#039;cat&amp;#039;, &amp;#039;category&amp;#039;, &amp;#039;all&amp;#039;} do&lt;br /&gt;
		args[prefix .. &amp;#039;1&amp;#039;] = args[prefix]&lt;br /&gt;
		nums = union(nums, getArgNums(args, prefix))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The following is roughly equivalent to the old {{Ambox/category}}.&lt;br /&gt;
	local date = args.date&lt;br /&gt;
	date = type(date) == &amp;#039;string&amp;#039; and date&lt;br /&gt;
	local preposition = &amp;#039;from&amp;#039;&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		local mainCat = args[&amp;#039;cat&amp;#039; .. tostring(num)]&lt;br /&gt;
			or args[&amp;#039;category&amp;#039; .. tostring(num)]&lt;br /&gt;
		local allCat = args[&amp;#039;all&amp;#039; .. tostring(num)]&lt;br /&gt;
		mainCat = type(mainCat) == &amp;#039;string&amp;#039; and mainCat&lt;br /&gt;
		allCat = type(allCat) == &amp;#039;string&amp;#039; and allCat&lt;br /&gt;
		if mainCat and date and date ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			local catTitle = string.format(&amp;#039;%s %s %s&amp;#039;, mainCat, preposition, date)&lt;br /&gt;
			self:addCat(0, catTitle)&lt;br /&gt;
			catTitle = getTitleObject(&amp;#039;Category:&amp;#039; .. catTitle)&lt;br /&gt;
			if not catTitle or not catTitle.exists then&lt;br /&gt;
				self:addCat(0, &amp;#039;Articles with invalid date parameter in template&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mainCat and (not date or date == &amp;#039;&amp;#039;) then&lt;br /&gt;
			self:addCat(0, mainCat)&lt;br /&gt;
		end&lt;br /&gt;
		if allCat then&lt;br /&gt;
			self:addCat(0, allCat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setTemplateCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Add template categories.&lt;br /&gt;
	if cfg.templateCategory then&lt;br /&gt;
		if cfg.templateCategoryRequireName then&lt;br /&gt;
			if self.isTemplatePage then&lt;br /&gt;
				self:addCat(10, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(10, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error categories.&lt;br /&gt;
	if cfg.templateErrorCategory then&lt;br /&gt;
		local templateErrorCategory = cfg.templateErrorCategory&lt;br /&gt;
		local templateCat, templateSort&lt;br /&gt;
		if not self.name and not self.title.isSubpage then&lt;br /&gt;
			templateCat = templateErrorCategory&lt;br /&gt;
		elseif self.isTemplatePage then&lt;br /&gt;
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}&lt;br /&gt;
			local count = 0&lt;br /&gt;
			for i, param in ipairs(paramsToCheck) do&lt;br /&gt;
				if not args[param] then&lt;br /&gt;
					count = count + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if count &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = tostring(count)&lt;br /&gt;
			end&lt;br /&gt;
			if self.categoryNums and #self.categoryNums &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = &amp;#039;C&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(10, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setAllNamespaceCategories()&lt;br /&gt;
	-- Set categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.title.namespace == 0 and &amp;#039;Main:&amp;#039; or &amp;#039;&amp;#039;) .. self.title.prefixedText&lt;br /&gt;
		self:addCat(&amp;#039;all&amp;#039;, &amp;#039;Wikipedia message box parameter needs fixing&amp;#039;, allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat(&amp;#039;all&amp;#039;, &amp;#039;Pages with incorrectly substituted templates&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setCategories()&lt;br /&gt;
	if self.title.namespace == 0 then&lt;br /&gt;
		self:setMainspaceCategories()&lt;br /&gt;
	elseif self.title.namespace == 10 then&lt;br /&gt;
		self:setTemplateCategories()&lt;br /&gt;
	end&lt;br /&gt;
	self:setAllNamespaceCategories()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:renderCategories()&lt;br /&gt;
	if not self.hasCategories then&lt;br /&gt;
		-- No categories added, no need to pass them to Category handler so,&lt;br /&gt;
		-- if it was invoked, it would return the empty string.&lt;br /&gt;
		-- So we shortcut and return the empty string.&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	return require(&amp;#039;Module:Category handler&amp;#039;)._main{&lt;br /&gt;
		main = table.concat(self.categories[0] or {}),&lt;br /&gt;
		template = table.concat(self.categories[10] or {}),&lt;br /&gt;
		all = table.concat(self.categories.all or {}),&lt;br /&gt;
		nocat = self.args.nocat,&lt;br /&gt;
		page = self.args.page&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:export()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root:tag(&amp;#039;b&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;error&amp;#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&amp;#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&amp;#039;,&lt;br /&gt;
				mw.text.nowiki(&amp;#039;{{&amp;#039;), self.name, self.name, mw.text.nowiki(&amp;#039;}}&amp;#039;)&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box table.&lt;br /&gt;
	local boxTable = root:tag(&amp;#039;table&amp;#039;)&lt;br /&gt;
	boxTable:attr(&amp;#039;id&amp;#039;, self.id or nil)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable:addClass(class or nil)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		:cssText(self.style or nil)&lt;br /&gt;
		:attr(&amp;#039;role&amp;#039;, &amp;#039;presentation&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if self.attrs then&lt;br /&gt;
		boxTable:attr(self.attrs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row:tag(&amp;#039;td&amp;#039;):addClass(&amp;#039;mbox-image&amp;#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageLeftCell so that the image&lt;br /&gt;
			-- is inside it. Divs use style=&amp;quot;width: 52px;&amp;quot;, which limits the&lt;br /&gt;
			-- image width to 52px. If any images in a div are wider than that,&lt;br /&gt;
			-- they may overlap with the text or cause other display problems.&lt;br /&gt;
			imageLeftCell = imageLeftCell:tag(&amp;#039;div&amp;#039;):css(&amp;#039;width&amp;#039;, &amp;#039;52px&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell:wikitext(self.imageLeft or nil)&lt;br /&gt;
	elseif self.imageEmptyCell then&lt;br /&gt;
		-- Some message boxes define an empty cell if no image is specified, and&lt;br /&gt;
		-- some don&amp;#039;t. The old template code in templates where empty cells are&lt;br /&gt;
		-- specified gives the following hint: &amp;quot;No image. Cell with some width&lt;br /&gt;
		-- or padding necessary for text cell to have 100% width.&amp;quot;&lt;br /&gt;
		row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;mbox-empty-cell&amp;#039;)&lt;br /&gt;
			:cssText(self.imageEmptyCellStyle or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row:tag(&amp;#039;td&amp;#039;):addClass(&amp;#039;mbox-text&amp;#039;)&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell:cssText(self.textstyle or nil)&lt;br /&gt;
		local textCellDiv = textCell:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
		textCellDiv&lt;br /&gt;
			:addClass(&amp;#039;mbox-text-span&amp;#039;)&lt;br /&gt;
			:wikitext(self.issue or nil)&lt;br /&gt;
		if (self.talk or self.fix) and not self.isSmall then&lt;br /&gt;
			textCellDiv:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;hide-when-compact&amp;#039;)&lt;br /&gt;
				:wikitext(self.talk and (&amp;#039; &amp;#039; .. self.talk) or nil)&lt;br /&gt;
				:wikitext(self.fix and (&amp;#039; &amp;#039; .. self.fix) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		textCellDiv:wikitext(self.date and (&amp;#039; &amp;#039; .. self.date) or nil)&lt;br /&gt;
		if self.info and not self.isSmall then&lt;br /&gt;
			textCellDiv&lt;br /&gt;
				:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;hide-when-compact&amp;#039;)&lt;br /&gt;
				:wikitext(self.info and (&amp;#039; &amp;#039; .. self.info) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		if self.removalNotice then&lt;br /&gt;
			textCellDiv:tag(&amp;#039;small&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;hide-when-compact&amp;#039;)&lt;br /&gt;
				:tag(&amp;#039;i&amp;#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;quot; (%s)&amp;quot;, self.removalNotice))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.text or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = row:tag(&amp;#039;td&amp;#039;):addClass(&amp;#039;mbox-imageright&amp;#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageRightCell so that the image&lt;br /&gt;
			-- is inside it.&lt;br /&gt;
			imageRightCell = imageRightCell:tag(&amp;#039;div&amp;#039;):css(&amp;#039;width&amp;#039;, &amp;#039;52px&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			:wikitext(self.imageRight or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		boxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:attr(&amp;#039;colspan&amp;#039;, self.imageRight and &amp;#039;3&amp;#039; or &amp;#039;2&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;mbox-text&amp;#039;)&lt;br /&gt;
				:cssText(self.textstyle or nil)&lt;br /&gt;
				:wikitext(self.below or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&amp;#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&amp;#039;,&lt;br /&gt;
				self.type or &amp;#039;&amp;#039;&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root:wikitext(self:renderCategories() or nil)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p, mt = {}, {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- For testing.&lt;br /&gt;
	return {&lt;br /&gt;
		MessageBox = MessageBox&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(boxType, args, cfgTables)&lt;br /&gt;
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))&lt;br /&gt;
	box:setParameters()&lt;br /&gt;
	box:setCategories()&lt;br /&gt;
	return box:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mt.__index(t, k)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Message_box/configuration&amp;diff=645</id>
		<title>Module:Message box/configuration</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Message_box/configuration&amp;diff=645"/>
		<updated>2019-01-16T02:01:44Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Message box configuration                         --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module contains configuration data for [[Module:Message box]].        --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &amp;#039;ambox-speedy&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &amp;#039;ambox-delete&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &amp;#039;ambox-content&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox important.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &amp;#039;ambox-style&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &amp;#039;ambox-move&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Merge-split-transwiki default.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &amp;#039;ambox-protection&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Padlock-silver-medium.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &amp;#039;ambox-notice&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default                     = &amp;#039;notice&amp;#039;,&lt;br /&gt;
		allowBlankParams            = {&amp;#039;talk&amp;#039;, &amp;#039;sect&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;issue&amp;#039;, &amp;#039;fix&amp;#039;, &amp;#039;subst&amp;#039;, &amp;#039;hidden&amp;#039;},&lt;br /&gt;
		allowSmall                  = true,&lt;br /&gt;
		smallParam                  = &amp;#039;left&amp;#039;,&lt;br /&gt;
		smallClass                  = &amp;#039;mbox-small-left&amp;#039;,&lt;br /&gt;
		substCheck                  = true,&lt;br /&gt;
		classes                     = {&amp;#039;metadata&amp;#039;, &amp;#039;ambox&amp;#039;},&lt;br /&gt;
		imageEmptyCell              = true,&lt;br /&gt;
		imageCheckBlank             = true,&lt;br /&gt;
		imageSmallSize              = &amp;#039;20x20px&amp;#039;,&lt;br /&gt;
		imageCellDiv                = true,&lt;br /&gt;
		useCollapsibleTextFields    = true,&lt;br /&gt;
		imageRightNone              = true,&lt;br /&gt;
		sectionDefault              = &amp;#039;article&amp;#039;,&lt;br /&gt;
		allowMainspaceCategories    = true,&lt;br /&gt;
		templateCategory            = &amp;#039;Article message templates&amp;#039;,&lt;br /&gt;
	        templateCategoryRequireName = true,&lt;br /&gt;
		templateErrorCategory       = &amp;#039;Article message templates with missing parameters&amp;#039;,&lt;br /&gt;
		templateErrorParamsToCheck  = {&amp;#039;issue&amp;#039;, &amp;#039;fix&amp;#039;, &amp;#039;subst&amp;#039;},&lt;br /&gt;
		removalNotice               = &amp;#039;[[Help:Maintenance template removal|Learn how and when to remove this template message]]&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	cmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &amp;#039;cmbox-speedy&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &amp;#039;cmbox-delete&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &amp;#039;cmbox-content&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox important.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &amp;#039;cmbox-style&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &amp;#039;cmbox-move&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Merge-split-transwiki default.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &amp;#039;cmbox-protection&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Padlock-silver-medium.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &amp;#039;cmbox-notice&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&amp;#039;cmbox&amp;#039;},&lt;br /&gt;
		imageEmptyCell       = true&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	fmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			warning = {&lt;br /&gt;
				class = &amp;#039;fmbox-warning&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			editnotice = {&lt;br /&gt;
				class = &amp;#039;fmbox-editnotice&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			system = {&lt;br /&gt;
				class = &amp;#039;fmbox-system&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &amp;#039;system&amp;#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&amp;#039;fmbox&amp;#039;},&lt;br /&gt;
		imageEmptyCell       = false,&lt;br /&gt;
		imageRightNone       = false&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	imbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &amp;#039;imbox-speedy&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &amp;#039;imbox-delete&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &amp;#039;imbox-content&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox important.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &amp;#039;imbox-style&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &amp;#039;imbox-move&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Merge-split-transwiki default.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &amp;#039;imbox-protection&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Padlock-silver-medium.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			license = {&lt;br /&gt;
				class = &amp;#039;imbox-license licensetpl&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Imbox license.png&amp;#039; -- @todo We need an SVG version of this&lt;br /&gt;
			},&lt;br /&gt;
			featured = {&lt;br /&gt;
				class = &amp;#039;imbox-featured&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Cscr-featured.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &amp;#039;imbox-notice&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&amp;#039;imbox&amp;#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		below                = true,&lt;br /&gt;
		templateCategory     = &amp;#039;File message boxes&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ombox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &amp;#039;ombox-speedy&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &amp;#039;ombox-delete&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &amp;#039;ombox-content&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox important.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &amp;#039;ombox-style&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &amp;#039;ombox-move&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Merge-split-transwiki default.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &amp;#039;ombox-protection&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Padlock-silver-medium.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &amp;#039;ombox-notice&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&amp;#039;ombox&amp;#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageRightNone       = true&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	tmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &amp;#039;tmbox-speedy&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &amp;#039;tmbox-delete&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox warning pn.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &amp;#039;tmbox-content&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Ambox important.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &amp;#039;tmbox-style&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &amp;#039;tmbox-move&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Merge-split-transwiki default.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &amp;#039;tmbox-protection&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Padlock-silver-medium.svg&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &amp;#039;tmbox-notice&amp;#039;,&lt;br /&gt;
				image = &amp;#039;Information icon4.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&amp;#039;tmbox&amp;#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageEmptyCellStyle  = true,&lt;br /&gt;
		templateCategory     = &amp;#039;Talk message boxes&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Hatnote&amp;diff=627</id>
		<title>Module:Hatnote</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Hatnote&amp;diff=627"/>
		<updated>2019-01-16T02:01:43Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                              Module:Hatnote                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module produces hatnote links and links to related articles. It       --&lt;br /&gt;
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --&lt;br /&gt;
-- helper functions for other Lua hatnote modules.                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local mArguments -- lazily initialise [[Module:Arguments]]&lt;br /&gt;
local yesno -- lazily initialise [[Module:Yesno]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame)&lt;br /&gt;
	-- Fetches the arguments from the parent frame. Whitespace is trimmed and&lt;br /&gt;
	-- blanks are removed.&lt;br /&gt;
	mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
	return mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function removeInitialColon(s)&lt;br /&gt;
	-- Removes the initial colon from a string, if present.&lt;br /&gt;
	return s:match(&amp;#039;^:?(.*)&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findNamespaceId(link, removeColon)&lt;br /&gt;
	-- Finds the namespace id (namespace number) of a link or a pagename. This&lt;br /&gt;
	-- function will not work if the link is enclosed in double brackets. Colons&lt;br /&gt;
	-- are trimmed from the start of the link by default. To skip colon&lt;br /&gt;
	-- trimming, set the removeColon parameter to false.&lt;br /&gt;
	checkType(&amp;#039;findNamespaceId&amp;#039;, 1, link, &amp;#039;string&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;findNamespaceId&amp;#039;, 2, removeColon, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if removeColon ~= false then&lt;br /&gt;
		link = removeInitialColon(link)&lt;br /&gt;
	end&lt;br /&gt;
	local namespace = link:match(&amp;#039;^(.-):&amp;#039;)&lt;br /&gt;
	if namespace then&lt;br /&gt;
		local nsTable = mw.site.namespaces[namespace]&lt;br /&gt;
		if nsTable then&lt;br /&gt;
			return nsTable.id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatPages(...)&lt;br /&gt;
	-- Formats a list of pages using formatLink and returns it as an array. Nil&lt;br /&gt;
	-- values are not allowed.&lt;br /&gt;
	local pages = {...}&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, page in ipairs(pages) do&lt;br /&gt;
		ret[i] = p._formatLink(page)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatPageTables(...)&lt;br /&gt;
	-- Takes a list of page/display tables and returns it as a list of&lt;br /&gt;
	-- formatted links. Nil values are not allowed.&lt;br /&gt;
	local pages = {...}&lt;br /&gt;
	local links = {}&lt;br /&gt;
	for i, t in ipairs(pages) do&lt;br /&gt;
		checkType(&amp;#039;formatPageTables&amp;#039;, i, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
		local link = t[1]&lt;br /&gt;
		local display = t[2]&lt;br /&gt;
		links[i] = p._formatLink(link, display)&lt;br /&gt;
	end&lt;br /&gt;
	return links&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)&lt;br /&gt;
	-- Formats an error message to be returned to wikitext. If&lt;br /&gt;
	-- addTrackingCategory is not false after being returned from&lt;br /&gt;
	-- [[Module:Yesno]], and if we are not on a talk page, a tracking category&lt;br /&gt;
	-- is added.&lt;br /&gt;
	checkType(&amp;#039;makeWikitextError&amp;#039;, 1, msg, &amp;#039;string&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;makeWikitextError&amp;#039;, 2, helpLink, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
	yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
	-- Make the help link text.&lt;br /&gt;
	local helpText&lt;br /&gt;
	if helpLink then&lt;br /&gt;
		helpText = &amp;#039; ([[&amp;#039; .. helpLink .. &amp;#039;|help]])&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		helpText = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- Make the category text.&lt;br /&gt;
	local category&lt;br /&gt;
	if not title.isTalkPage and yesno(addTrackingCategory) ~= false then&lt;br /&gt;
		category = &amp;#039;Hatnote templates with errors&amp;#039;&lt;br /&gt;
		category = string.format(&lt;br /&gt;
			&amp;#039;[[%s:%s]]&amp;#039;,&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			category&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		category = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s%s.&amp;lt;/strong&amp;gt;%s&amp;#039;,&lt;br /&gt;
		msg,&lt;br /&gt;
		helpText,&lt;br /&gt;
		category&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.disambiguate(page, disambiguator)&lt;br /&gt;
	-- Formats a page title with a disambiguation parenthetical,&lt;br /&gt;
	-- i.e. &amp;quot;Example&amp;quot; → &amp;quot;Example (disambiguation)&amp;quot;.&lt;br /&gt;
	checkType(&amp;#039;disambiguate&amp;#039;, 1, page, &amp;#039;string&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;disambiguate&amp;#039;, 2, disambiguator, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
	disambiguator = disambiguator or &amp;#039;disambiguation&amp;#039;&lt;br /&gt;
	return string.format(&amp;#039;%s (%s)&amp;#039;, page, disambiguator)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Format link&lt;br /&gt;
--&lt;br /&gt;
-- Makes a wikilink from the given link and display values. Links are escaped&lt;br /&gt;
-- with colons if necessary, and links to sections are detected and displayed&lt;br /&gt;
-- with &amp;quot; § &amp;quot; as a separator rather than the standard MediaWiki &amp;quot;#&amp;quot;. Used in&lt;br /&gt;
-- the {{format hatnote link}} template.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.formatLink(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local link = args[1]&lt;br /&gt;
	local display = args[2]&lt;br /&gt;
	if not link then&lt;br /&gt;
		return p.makeWikitextError(&lt;br /&gt;
			&amp;#039;no link specified&amp;#039;,&lt;br /&gt;
			&amp;#039;Template:Format hatnote link#Errors&amp;#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return p._formatLink(link, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._formatLink(link, display)&lt;br /&gt;
	checkType(&amp;#039;_formatLink&amp;#039;, 1, link, &amp;#039;string&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;_formatLink&amp;#039;, 2, display, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
&lt;br /&gt;
	-- Remove the initial colon for links where it was specified manually.&lt;br /&gt;
	link = removeInitialColon(link)&lt;br /&gt;
&lt;br /&gt;
	-- Find whether a faux display value has been added with the {{!}} magic&lt;br /&gt;
	-- word.&lt;br /&gt;
	if not display then&lt;br /&gt;
		local prePipe, postPipe = link:match(&amp;#039;^(.-)|(.*)$&amp;#039;)&lt;br /&gt;
		link = prePipe or link&lt;br /&gt;
		display = postPipe&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the display value.&lt;br /&gt;
	if not display then&lt;br /&gt;
		local page, section = link:match(&amp;#039;^(.-)#(.*)$&amp;#039;)&lt;br /&gt;
		if page then&lt;br /&gt;
			display = page .. &amp;#039; §&amp;amp;nbsp;&amp;#039; .. section&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assemble the link.&lt;br /&gt;
	if display then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&amp;#039;[[:%s|%s]]&amp;#039;,&lt;br /&gt;
			string.gsub(link, &amp;#039;|(.*)$&amp;#039;, &amp;#039;&amp;#039;), --display overwrites manual piping&lt;br /&gt;
			display&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&amp;#039;[[:%s]]&amp;#039;, link)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Hatnote&lt;br /&gt;
--&lt;br /&gt;
-- Produces standard hatnote text. Implements the {{hatnote}} template.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.hatnote(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local s = args[1]&lt;br /&gt;
	local options = {}&lt;br /&gt;
	if not s then&lt;br /&gt;
		return p.makeWikitextError(&lt;br /&gt;
			&amp;#039;no text specified&amp;#039;,&lt;br /&gt;
			&amp;#039;Template:Hatnote#Errors&amp;#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	options.extraclasses = args.extraclasses&lt;br /&gt;
	options.selfref = args.selfref&lt;br /&gt;
	return p._hatnote(s, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._hatnote(s, options)&lt;br /&gt;
	checkType(&amp;#039;_hatnote&amp;#039;, 1, s, &amp;#039;string&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;_hatnote&amp;#039;, 2, options, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local classes = {&amp;#039;hatnote&amp;#039;, &amp;#039;navigation-not-searchable&amp;#039;}&lt;br /&gt;
	local extraclasses = options.extraclasses&lt;br /&gt;
	local selfref = options.selfref&lt;br /&gt;
	if type(extraclasses) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		classes[#classes + 1] = extraclasses&lt;br /&gt;
	end&lt;br /&gt;
	if selfref then&lt;br /&gt;
		classes[#classes + 1] = &amp;#039;selfref&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;#039;&amp;lt;div role=&amp;quot;note&amp;quot; class=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
		table.concat(classes, &amp;#039; &amp;#039;),&lt;br /&gt;
		s&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Hatnote_list&amp;diff=629</id>
		<title>Module:Hatnote list</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Hatnote_list&amp;diff=629"/>
		<updated>2019-01-16T02:01:43Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                           Module:Hatnote list                              --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module produces and formats lists for use in hatnotes. In particular, --&lt;br /&gt;
-- it implements the for-see list, i.e. lists of &amp;quot;For X, see Y&amp;quot; statements,   --&lt;br /&gt;
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced    --&lt;br /&gt;
-- are andList &amp;amp; orList helpers for formatting lists with those conjunctions. --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local mHatnote = require(&amp;#039;Module:Hatnote&amp;#039;)&lt;br /&gt;
local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- List stringification helper functions&lt;br /&gt;
--&lt;br /&gt;
-- These functions are used for stringifying lists, usually page lists inside&lt;br /&gt;
-- the &amp;quot;Y&amp;quot; portion of &amp;quot;For X, see Y&amp;quot; for-see items.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--default options table used across the list stringification functions&lt;br /&gt;
local stringifyListDefaultOptions = {&lt;br /&gt;
	conjunction = &amp;quot;and&amp;quot;,&lt;br /&gt;
	separator = &amp;quot;,&amp;quot;,&lt;br /&gt;
	altSeparator = &amp;quot;;&amp;quot;,&lt;br /&gt;
	space = &amp;quot; &amp;quot;,&lt;br /&gt;
	formatted = false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Stringifies a list generically; probably shouldn&amp;#039;t be used directly&lt;br /&gt;
function stringifyList(list, options)&lt;br /&gt;
	-- Type-checks, defaults, and a shortcut&lt;br /&gt;
	checkType(&amp;quot;stringifyList&amp;quot;, 1, list, &amp;quot;table&amp;quot;)&lt;br /&gt;
	if #list == 0 then return nil end&lt;br /&gt;
	checkType(&amp;quot;stringifyList&amp;quot;, 2, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(stringifyListDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	local s = options.space&lt;br /&gt;
	-- Format the list if requested&lt;br /&gt;
	if options.formatted then list = mHatnote.formatPages(unpack(list)) end&lt;br /&gt;
	-- Set the separator; if any item contains it, use the alternate separator&lt;br /&gt;
	local separator = options.separator&lt;br /&gt;
	--searches display text only&lt;br /&gt;
	function searchDisp(t, f)&lt;br /&gt;
		return string.find(string.sub(t, (string.find(t, &amp;#039;|&amp;#039;) or 0) + 1), f)&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(list) do&lt;br /&gt;
		if searchDisp(v, separator) then&lt;br /&gt;
			separator = options.altSeparator&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Set the conjunction, apply Oxford comma, and force a comma if #1 has &amp;quot;§&amp;quot;&lt;br /&gt;
	local conjunction = s .. options.conjunction .. s&lt;br /&gt;
	if #list == 2 and searchDisp(list[1], &amp;quot;§&amp;quot;) or #list &amp;gt; 2 then&lt;br /&gt;
		conjunction = separator .. conjunction&lt;br /&gt;
	end&lt;br /&gt;
	-- Return the formatted string&lt;br /&gt;
	return mw.text.listToText(list, separator .. s, conjunction)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--DRY function&lt;br /&gt;
function conjList (conj, list, fmt)&lt;br /&gt;
	return stringifyList(list, {conjunction = conj, formatted = fmt})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies lists with &amp;quot;and&amp;quot; or &amp;quot;or&amp;quot;&lt;br /&gt;
function p.andList (...) return conjList(&amp;quot;and&amp;quot;, ...) end&lt;br /&gt;
function p.orList (...) return conjList(&amp;quot;or&amp;quot;, ...) end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- For see&lt;br /&gt;
--&lt;br /&gt;
-- Makes a &amp;quot;For X, see [[Y]].&amp;quot; list from raw parameters. Intended for the&lt;br /&gt;
-- {{about}} and {{redirect}} templates and their variants.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--default options table used across the forSee family of functions&lt;br /&gt;
local forSeeDefaultOptions = {&lt;br /&gt;
	andKeyword = &amp;#039;and&amp;#039;,&lt;br /&gt;
	title = mw.title.getCurrentTitle().text,&lt;br /&gt;
	otherText = &amp;#039;other uses&amp;#039;,&lt;br /&gt;
	forSeeForm = &amp;#039;For %s, see %s.&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Collapses duplicate punctuation&lt;br /&gt;
function punctuationCollapse (text)&lt;br /&gt;
	local replacements = {&lt;br /&gt;
		[&amp;quot;%.%.$&amp;quot;] = &amp;quot;.&amp;quot;,&lt;br /&gt;
		[&amp;quot;%?%.$&amp;quot;] = &amp;quot;?&amp;quot;,&lt;br /&gt;
		[&amp;quot;%!%.$&amp;quot;] = &amp;quot;!&amp;quot;,&lt;br /&gt;
		[&amp;quot;%.%]%]%.$&amp;quot;] = &amp;quot;.]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%?%]%]%.$&amp;quot;] = &amp;quot;?]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%!%]%]%.$&amp;quot;] = &amp;quot;!]]&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	for k, v in pairs(replacements) do text = string.gsub(text, k, v) end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Structures arguments into a table for stringification, &amp;amp; options&lt;br /&gt;
function p.forSeeArgsToTable (args, from, options)&lt;br /&gt;
	-- Type-checks and defaults&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 1, args, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 2, from, &amp;#039;number&amp;#039;, true)&lt;br /&gt;
	from = from or 1&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 3, options, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(forSeeDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	-- maxArg&amp;#039;s gotten manually because getArgs() and table.maxn aren&amp;#039;t friends&lt;br /&gt;
	local maxArg = 0&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; and k &amp;gt; maxArg then maxArg = k end&lt;br /&gt;
	end&lt;br /&gt;
	-- Structure the data out from the parameter list:&lt;br /&gt;
	-- * forTable is the wrapper table, with forRow rows&lt;br /&gt;
	-- * Rows are tables of a &amp;quot;use&amp;quot; string &amp;amp; a &amp;quot;pages&amp;quot; table of pagename strings&lt;br /&gt;
	-- * Blanks are left empty for defaulting elsewhere, but can terminate list&lt;br /&gt;
	local forTable = {}&lt;br /&gt;
	local i = from&lt;br /&gt;
	local terminated = false&lt;br /&gt;
	-- If there is extra text, and no arguments are given, give nil value&lt;br /&gt;
	-- to not produce default of &amp;quot;For other uses, see foo (disambiguation)&amp;quot;&lt;br /&gt;
	if options.extratext and i &amp;gt; maxArg then return nil end&lt;br /&gt;
	-- Loop to generate rows&lt;br /&gt;
	repeat&lt;br /&gt;
		-- New empty row&lt;br /&gt;
		local forRow = {}&lt;br /&gt;
		-- On blank use, assume list&amp;#039;s ended &amp;amp; break at end of this loop&lt;br /&gt;
		forRow.use = args[i]&lt;br /&gt;
		if not args[i] then terminated = true end&lt;br /&gt;
		-- New empty list of pages&lt;br /&gt;
		forRow.pages = {}&lt;br /&gt;
		-- Insert first pages item if present&lt;br /&gt;
		table.insert(forRow.pages, args[i + 1])&lt;br /&gt;
		-- If the param after next is &amp;quot;and&amp;quot;, do inner loop to collect params&lt;br /&gt;
		-- until the &amp;quot;and&amp;quot;&amp;#039;s stop. Blanks are ignored: &amp;quot;1|and||and|3&amp;quot; → {1, 3}&lt;br /&gt;
		while args[i + 2] == options.andKeyword do&lt;br /&gt;
			if args[i + 3] then &lt;br /&gt;
				table.insert(forRow.pages, args[i + 3])&lt;br /&gt;
			end&lt;br /&gt;
			-- Increment to next &amp;quot;and&amp;quot;&lt;br /&gt;
			i = i + 2&lt;br /&gt;
		end&lt;br /&gt;
		-- Increment to next use&lt;br /&gt;
		i = i + 2&lt;br /&gt;
		-- Append the row&lt;br /&gt;
		table.insert(forTable, forRow)&lt;br /&gt;
	until terminated or i &amp;gt; maxArg&lt;br /&gt;
	&lt;br /&gt;
	return forTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies a table as formatted by forSeeArgsToTable&lt;br /&gt;
function p.forSeeTableToString (forSeeTable, options)&lt;br /&gt;
	-- Type-checks and defaults&lt;br /&gt;
	checkType(&amp;quot;forSeeTableToString&amp;quot;, 1, forSeeTable, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	checkType(&amp;quot;forSeeTableToString&amp;quot;, 2, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(forSeeDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	-- Stringify each for-see item into a list&lt;br /&gt;
	local strList = {}&lt;br /&gt;
	if forSeeTable then&lt;br /&gt;
		for k, v in pairs(forSeeTable) do&lt;br /&gt;
			local useStr = v.use or options.otherText&lt;br /&gt;
			local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink(mHatnote.disambiguate(options.title))&lt;br /&gt;
			local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)&lt;br /&gt;
			forSeeStr = punctuationCollapse(forSeeStr)&lt;br /&gt;
			table.insert(strList, forSeeStr)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..&amp;#039;.&amp;#039;)) end&lt;br /&gt;
	-- Return the concatenated list&lt;br /&gt;
	return table.concat(strList, &amp;#039; &amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produces a &amp;quot;For X, see [[Y]]&amp;quot; string from arguments. Expects index gaps&lt;br /&gt;
-- but not blank/whitespace values. Ignores named args and args &amp;lt; &amp;quot;from&amp;quot;.&lt;br /&gt;
function p._forSee (args, from, options)&lt;br /&gt;
	local forSeeTable = p.forSeeArgsToTable(args, from, options)&lt;br /&gt;
	return p.forSeeTableToString(forSeeTable, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- As _forSee, but uses the frame.&lt;br /&gt;
function p.forSee (frame, from, options)&lt;br /&gt;
	mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
	return p._forSee(mArguments.getArgs(frame), from, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Yesno-no&amp;diff=621</id>
		<title>Template:Yesno-no</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Yesno-no&amp;diff=621"/>
		<updated>2019-01-16T02:01:42Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safesubst:&amp;lt;noinclude /&amp;gt;yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|Template:Yesno/doc}}&lt;br /&gt;
&amp;lt;!--Categories go in the doc page referenced above; interwikis go in Wikidata.--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Color_contrast&amp;diff=623</id>
		<title>Module:Color contrast</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Color_contrast&amp;diff=623"/>
		<updated>2019-01-16T02:01:42Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&lt;br /&gt;
-- This module implements&lt;br /&gt;
--  {{Color contrast ratio}}&lt;br /&gt;
--  {{Greater color contrast ratio}}&lt;br /&gt;
--  {{ColorToLum}}&lt;br /&gt;
--  {{RGBColorToLum}}&lt;br /&gt;
--&lt;br /&gt;
local p = {}&lt;br /&gt;
local HTMLcolor = mw.loadData( &amp;#039;Module:Color contrast/colors&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
local function sRGB (v)&lt;br /&gt;
	if (v &amp;lt;= 0.03928) then&lt;br /&gt;
		v = v / 12.92&lt;br /&gt;
	else&lt;br /&gt;
		v = math.pow((v+0.055)/1.055, 2.4)&lt;br /&gt;
	end&lt;br /&gt;
	return v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function rgbdec2lum(R, G, B)&lt;br /&gt;
	if ( 0 &amp;lt;= R and R &amp;lt; 256 and 0 &amp;lt;= G and G &amp;lt; 256 and 0 &amp;lt;= B and B &amp;lt; 256 ) then&lt;br /&gt;
		return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hsl2lum(h, s, l)&lt;br /&gt;
	if ( 0 &amp;lt;= h and h &amp;lt; 360 and 0 &amp;lt;= s and s &amp;lt;= 1 and 0 &amp;lt;= l and l &amp;lt;= 1 ) then&lt;br /&gt;
		local c = (1 - math.abs(2*l - 1))*s&lt;br /&gt;
		local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )&lt;br /&gt;
		local m = l - c/2&lt;br /&gt;
&lt;br /&gt;
		local r, g, b = m, m, m&lt;br /&gt;
		if( 0 &amp;lt;= h and h &amp;lt; 60 ) then&lt;br /&gt;
			r = r + c&lt;br /&gt;
			g = g + x&lt;br /&gt;
		elseif( 60 &amp;lt;= h and h &amp;lt; 120 ) then&lt;br /&gt;
			r = r + x&lt;br /&gt;
			g = g + c&lt;br /&gt;
		elseif( 120 &amp;lt;= h and h &amp;lt; 180 ) then&lt;br /&gt;
			g = g + c&lt;br /&gt;
			b = b + x&lt;br /&gt;
		elseif( 180 &amp;lt;= h and h &amp;lt; 240 ) then&lt;br /&gt;
			g = g + x&lt;br /&gt;
			b = b + c&lt;br /&gt;
		elseif( 240 &amp;lt;= h and h &amp;lt; 300 ) then&lt;br /&gt;
			r = r + x&lt;br /&gt;
			b = b + c&lt;br /&gt;
		elseif( 300 &amp;lt;= h and h &amp;lt; 360 ) then&lt;br /&gt;
			r = r + c&lt;br /&gt;
			b = b + x&lt;br /&gt;
		end&lt;br /&gt;
		return rgbdec2lum(255*r, 255*g, 255*b)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function color2lum(c)&lt;br /&gt;
&lt;br /&gt;
	if (c == nil) then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- html &amp;#039;#&amp;#039; entity&lt;br /&gt;
	c = c:gsub(&amp;quot;&amp;amp;#35;&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- whitespace&lt;br /&gt;
	c = c:match( &amp;#039;^%s*(.-)[%s;]*$&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	-- unstrip nowiki strip markers&lt;br /&gt;
	c = mw.text.unstripNoWiki(c)&lt;br /&gt;
&lt;br /&gt;
	-- lowercase&lt;br /&gt;
	c = c:lower()&lt;br /&gt;
&lt;br /&gt;
	-- first try to look it up&lt;br /&gt;
	local L = HTMLcolor[c]&lt;br /&gt;
	if (L ~= nil) then&lt;br /&gt;
		return L&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert from hsl&lt;br /&gt;
	if mw.ustring.match(c,&amp;#039;^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$&amp;#039;) then&lt;br /&gt;
		local h, s, l = mw.ustring.match(c,&amp;#039;^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$&amp;#039;)&lt;br /&gt;
		return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert from rgb&lt;br /&gt;
	if mw.ustring.match(c,&amp;#039;^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$&amp;#039;) then&lt;br /&gt;
		local R, G, B = mw.ustring.match(c,&amp;#039;^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$&amp;#039;)&lt;br /&gt;
		return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert from rgb percent&lt;br /&gt;
	if mw.ustring.match(c,&amp;#039;^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$&amp;#039;) then&lt;br /&gt;
		local R, G, B = mw.ustring.match(c,&amp;#039;^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$&amp;#039;)&lt;br /&gt;
		return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- remove leading # (if there is one) and whitespace&lt;br /&gt;
	c = mw.ustring.match(c, &amp;#039;^[%s#]*([a-f0-9]*)[%s]*$&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- split into rgb&lt;br /&gt;
	local cs = mw.text.split(c or &amp;#039;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	if( #cs == 6 ) then&lt;br /&gt;
		local R = 16*tonumber(&amp;#039;0x&amp;#039; .. cs[1]) + tonumber(&amp;#039;0x&amp;#039; .. cs[2])&lt;br /&gt;
		local G = 16*tonumber(&amp;#039;0x&amp;#039; .. cs[3]) + tonumber(&amp;#039;0x&amp;#039; .. cs[4])&lt;br /&gt;
		local B = 16*tonumber(&amp;#039;0x&amp;#039; .. cs[5]) + tonumber(&amp;#039;0x&amp;#039; .. cs[6])&lt;br /&gt;
&lt;br /&gt;
		return rgbdec2lum(R, G, B)&lt;br /&gt;
	elseif ( #cs == 3 ) then&lt;br /&gt;
		local R = 16*tonumber(&amp;#039;0x&amp;#039; .. cs[1]) + tonumber(&amp;#039;0x&amp;#039; .. cs[1])&lt;br /&gt;
		local G = 16*tonumber(&amp;#039;0x&amp;#039; .. cs[2]) + tonumber(&amp;#039;0x&amp;#039; .. cs[2])&lt;br /&gt;
		local B = 16*tonumber(&amp;#039;0x&amp;#039; .. cs[3]) + tonumber(&amp;#039;0x&amp;#039; .. cs[3])&lt;br /&gt;
&lt;br /&gt;
		return rgbdec2lum(R, G, B)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- failure, return blank&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This exports the function for use in other modules.&lt;br /&gt;
-- The colour is passed as a string.&lt;br /&gt;
function p._lum(color)&lt;br /&gt;
	return color2lum(color)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._greatercontrast(args)&lt;br /&gt;
	local bias = tonumber(args[&amp;#039;bias&amp;#039;] or &amp;#039;0&amp;#039;) or 0&lt;br /&gt;
	local css = (args[&amp;#039;css&amp;#039;] and args[&amp;#039;css&amp;#039;] ~= &amp;#039;&amp;#039;) and true or false&lt;br /&gt;
	local v1 = color2lum(args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	local c2 = args[2] or &amp;#039;#FFFFFF&amp;#039;&lt;br /&gt;
	local v2 = color2lum(c2)&lt;br /&gt;
	local c3 = args[3] or &amp;#039;#000000&amp;#039;&lt;br /&gt;
	local v3 = color2lum(c3)&lt;br /&gt;
	local ratio1 = -1;&lt;br /&gt;
	local ratio2 = -1;&lt;br /&gt;
	if (type(v1) == &amp;#039;number&amp;#039; and type(v2) == &amp;#039;number&amp;#039;) then&lt;br /&gt;
		ratio1 = (v2 + 0.05)/(v1 + 0.05)&lt;br /&gt;
		ratio1 = (ratio1 &amp;lt; 1) and 1/ratio1 or ratio1&lt;br /&gt;
	end&lt;br /&gt;
	if (type(v1) == &amp;#039;number&amp;#039; and type(v3) == &amp;#039;number&amp;#039;) then&lt;br /&gt;
		ratio2 = (v3 + 0.05)/(v1 + 0.05)&lt;br /&gt;
		ratio2 = (ratio2 &amp;lt; 1) and 1/ratio2 or ratio2&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if css then&lt;br /&gt;
		local c1 = args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
		if mw.ustring.match(c1, &amp;#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&amp;#039;) or&lt;br /&gt;
			mw.ustring.match(c1, &amp;#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&amp;#039;) then&lt;br /&gt;
				c1 = &amp;#039;#&amp;#039; .. c1&lt;br /&gt;
		end&lt;br /&gt;
		if mw.ustring.match(c2, &amp;#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&amp;#039;) or&lt;br /&gt;
			mw.ustring.match(c2, &amp;#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&amp;#039;) then&lt;br /&gt;
				c2 = &amp;#039;#&amp;#039; .. c2&lt;br /&gt;
		end&lt;br /&gt;
		if mw.ustring.match(v3, &amp;#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&amp;#039;) or&lt;br /&gt;
			mw.ustring.match(v3, &amp;#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&amp;#039;) then&lt;br /&gt;
				c3 = &amp;#039;#&amp;#039; .. c3&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;#039;background-color:&amp;#039; .. c1 .. &amp;#039;; color:&amp;#039; .. ((ratio1 &amp;gt; 0) and (ratio2 &amp;gt; 0) and ((ratio1 + bias &amp;gt; ratio2) and c2 or c3) or &amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return (ratio1 &amp;gt; 0) and (ratio2 &amp;gt; 0) and ((ratio1 + bias &amp;gt; ratio2) and c2 or c3) or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._ratio(args)&lt;br /&gt;
	local v1 = color2lum(args[1])&lt;br /&gt;
	local v2 = color2lum(args[2])&lt;br /&gt;
	if (type(v1) == &amp;#039;number&amp;#039; and type(v2) == &amp;#039;number&amp;#039;) then&lt;br /&gt;
		-- v1 should be the brighter of the two.&lt;br /&gt;
		if v2 &amp;gt; v1 then&lt;br /&gt;
			v1, v2 = v2, v1&lt;br /&gt;
		end&lt;br /&gt;
		return (v1 + 0.05)/(v2 + 0.05)&lt;br /&gt;
	else&lt;br /&gt;
		return args[&amp;#039;error&amp;#039;] or &amp;#039;?&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._styleratio(args)&lt;br /&gt;
	local style = (args[1] or &amp;#039;&amp;#039;):lower()&lt;br /&gt;
	local bg, fg = &amp;#039;white&amp;#039;, &amp;#039;black&amp;#039;&lt;br /&gt;
	local lum_bg, lum_fg = 1, 0&lt;br /&gt;
&lt;br /&gt;
	if args[2] then&lt;br /&gt;
		local lum = color2lum(args[2])&lt;br /&gt;
		if lum ~= &amp;#039;&amp;#039; then bg, lum_bg = args[2], lum end&lt;br /&gt;
	end&lt;br /&gt;
	if args[3] then&lt;br /&gt;
		local lum = color2lum(args[3])&lt;br /&gt;
		if lum ~= &amp;#039;&amp;#039; then fg, lum_fg = args[3], lum end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or &amp;#039;&amp;#039;, &amp;#039;&amp;amp;#[Xx]23;&amp;#039;, &amp;#039;#&amp;#039;), &amp;#039;&amp;amp;#35;&amp;#039;, &amp;#039;#&amp;#039;), &amp;#039;;&amp;#039;)&lt;br /&gt;
	for k = 1,#slist do&lt;br /&gt;
		local s = slist[k]&lt;br /&gt;
		local k,v = s:match( &amp;#039;^[%s]*([^:]-):([^:]-)[%s;]*$&amp;#039; )&lt;br /&gt;
		k = k or &amp;#039;&amp;#039;&lt;br /&gt;
		v = v or &amp;#039;&amp;#039;&lt;br /&gt;
		if (k:match(&amp;#039;^[%s]*(background)[%s]*$&amp;#039;) or k:match(&amp;#039;^[%s]*(background%-color)[%s]*$&amp;#039;)) then&lt;br /&gt;
			local lum = color2lum(v)&lt;br /&gt;
			if( lum ~= &amp;#039;&amp;#039; ) then bg, lum_bg = v, lum end&lt;br /&gt;
		elseif (k:match(&amp;#039;^[%s]*(color)[%s]*$&amp;#039;)) then&lt;br /&gt;
			local lum = color2lum(v)&lt;br /&gt;
			if( lum ~= &amp;#039;&amp;#039; ) then bg, lum_fg = v, lum end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if lum_bg &amp;gt; lum_fg then&lt;br /&gt;
		return (lum_bg + 0.05)/(lum_fg + 0.05)&lt;br /&gt;
	else&lt;br /&gt;
		return (lum_fg + 0.05)/(lum_bg + 0.05)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Use {{#invoke:Color contrast|somecolor}} directly or&lt;br /&gt;
{{#invoke:Color contrast}} from a wrapper template.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
	-- |1=	— required; A color to check.&lt;br /&gt;
--]]&lt;br /&gt;
function p.lum(frame)&lt;br /&gt;
	local color = frame.args[1] or frame:getParent().args[1]&lt;br /&gt;
	return p._lum(color)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ratio(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	return p._ratio(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.styleratio(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	return p._styleratio(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.greatercontrast(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	return p._greatercontrast(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Module:Effective_protection_level&amp;diff=625</id>
		<title>Module:Effective protection level</title>
		<link rel="alternate" type="text/html" href="index.php?title=Module:Effective_protection_level&amp;diff=625"/>
		<updated>2019-01-16T02:01:42Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Returns the permission required to perform a given action on a given title.&lt;br /&gt;
-- If no title is specified, the title of the page being displayed is used.&lt;br /&gt;
function p._main(action, pagename)&lt;br /&gt;
	local title&lt;br /&gt;
	if type(pagename) == &amp;#039;table&amp;#039; and pagename.prefixedText then&lt;br /&gt;
		title = pagename&lt;br /&gt;
	elseif pagename then&lt;br /&gt;
		title = mw.title.new(pagename)&lt;br /&gt;
	else&lt;br /&gt;
		title = mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
	pagename = title.prefixedText&lt;br /&gt;
	if action == &amp;#039;autoreview&amp;#039; then&lt;br /&gt;
		local level = mw.ext.FlaggedRevs.getStabilitySettings(title)&lt;br /&gt;
		level = level and level.autoreview&lt;br /&gt;
		if level == &amp;#039;review&amp;#039; then&lt;br /&gt;
			return &amp;#039;reviewer&amp;#039;&lt;br /&gt;
		elseif level ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			return level&lt;br /&gt;
		else&lt;br /&gt;
			return nil -- not &amp;#039;*&amp;#039;. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not &amp;#039;&amp;#039;, as that would mean PC-protected but nobody can review&lt;br /&gt;
		end&lt;br /&gt;
	elseif action ~= &amp;#039;edit&amp;#039; and action ~= &amp;#039;move&amp;#039; and action ~= &amp;#039;create&amp;#039; and action ~= &amp;#039;upload&amp;#039; then&lt;br /&gt;
		error( &amp;#039;First parameter must be one of edit, move, create, upload, autoreview&amp;#039;, 2 )&lt;br /&gt;
	end&lt;br /&gt;
	if title.namespace == 8 then -- MediaWiki namespace&lt;br /&gt;
		if title.contentModel == &amp;#039;javascript&amp;#039; or title.contentModel == &amp;#039;css&amp;#039; then -- site JS or CSS page&lt;br /&gt;
			return &amp;#039;interfaceadmin&amp;#039;&lt;br /&gt;
		else -- any non-JS/CSS MediaWiki page&lt;br /&gt;
			return &amp;#039;sysop&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif title.namespace == 2 and title.isSubpage then&lt;br /&gt;
		if title.contentModel == &amp;#039;javascript&amp;#039; or title.contentModel == &amp;#039;css&amp;#039; then -- user JS or CSS page&lt;br /&gt;
			return &amp;#039;interfaceadmin&amp;#039;&lt;br /&gt;
		elseif title.contentModel == &amp;#039;json&amp;#039; then -- user JSON page&lt;br /&gt;
			return &amp;#039;sysop&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local level = title.protectionLevels[action] and title.protectionLevels[action][1]&lt;br /&gt;
	if level == &amp;#039;sysop&amp;#039; or level == &amp;#039;editprotected&amp;#039; then&lt;br /&gt;
		return &amp;#039;sysop&amp;#039;&lt;br /&gt;
	elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page&lt;br /&gt;
		return &amp;#039;sysop&amp;#039;&lt;br /&gt;
	elseif level == &amp;#039;templateeditor&amp;#039; then&lt;br /&gt;
		return &amp;#039;templateeditor&amp;#039;&lt;br /&gt;
	elseif action == &amp;#039;move&amp;#039; then&lt;br /&gt;
		local blacklistentry = mw.ext.TitleBlacklist.test(&amp;#039;edit&amp;#039;, pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.&lt;br /&gt;
		if blacklistentry and not blacklistentry.params.autoconfirmed then&lt;br /&gt;
			return &amp;#039;templateeditor&amp;#039;&lt;br /&gt;
		elseif title.namespace == 6 then&lt;br /&gt;
			return &amp;#039;filemover&amp;#039;&lt;br /&gt;
		elseif level == &amp;#039;extendedconfirmed&amp;#039; then&lt;br /&gt;
			return &amp;#039;extendedconfirmed&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)&lt;br /&gt;
	if blacklistentry then&lt;br /&gt;
		if not blacklistentry.params.autoconfirmed then&lt;br /&gt;
			return &amp;#039;templateeditor&amp;#039;&lt;br /&gt;
		elseif level == &amp;#039;extendedconfirmed&amp;#039; then&lt;br /&gt;
			return &amp;#039;extendedconfirmed&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif level == &amp;#039;editsemiprotected&amp;#039; then -- create-semiprotected pages return this for some reason&lt;br /&gt;
		return &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
	elseif level then&lt;br /&gt;
		return level&lt;br /&gt;
	elseif action == &amp;#039;upload&amp;#039; then&lt;br /&gt;
		return &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
	elseif action == &amp;#039;create&amp;#039; and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts&lt;br /&gt;
		return &amp;#039;user&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;*&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
setmetatable(p, { __index = function(t, k)&lt;br /&gt;
	return function(frame)&lt;br /&gt;
		return t._main(k, frame.args[1])&lt;br /&gt;
	end&lt;br /&gt;
end })&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:TemplateData_header&amp;diff=613</id>
		<title>Template:TemplateData header</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:TemplateData_header&amp;diff=613"/>
		<updated>2019-01-16T02:01:41Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;templatedata-header&amp;quot;&amp;gt;{{#if:{{{noheader|}}}|{{Template error report}}|This is the {{#if:{{{nolink|}}}|TemplateData|[[Wikipedia:TemplateData|TemplateData]]}} documentation for this template used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools; {{Template error report|lc=yes}}}} &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TemplateData for {{{1|{{BASEPAGENAME}}}}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;includeonly&amp;gt;{{#ifeq:{{SUBPAGENAME}}|sandbox||&lt;br /&gt;
[[Category:Templates using TemplateData]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Template_error_report&amp;diff=615</id>
		<title>Template:Template error report</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Template_error_report&amp;diff=615"/>
		<updated>2019-01-16T02:01:41Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{yesno-no|{{{lc}}}}}|no|S|s}}ee the [https://tools.wmflabs.org/bambots/TemplateParam.php?wiki=enwiki&amp;amp;template={{Urlencode:{{{1|{{ROOTPAGENAME}}}}}}} monthly error report] for this template.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:External link templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Tl&amp;diff=617</id>
		<title>Template:Tl</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Tl&amp;diff=617"/>
		<updated>2019-01-16T02:01:41Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Template:Tlx]]&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Yesno&amp;diff=619</id>
		<title>Template:Yesno</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Yesno&amp;diff=619"/>
		<updated>2019-01-16T02:01:41Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#switch: {{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;lc: {{{1|¬}}} }}&lt;br /&gt;
 |no&lt;br /&gt;
 |n&lt;br /&gt;
 |false&lt;br /&gt;
 |off&lt;br /&gt;
 |0        = {{{no|&amp;lt;!-- null --&amp;gt;}}}&lt;br /&gt;
 |         = {{{blank|{{{no|&amp;lt;!-- null --&amp;gt;}}}}}}&lt;br /&gt;
 |¬        = {{{¬|}}}&lt;br /&gt;
 |yes&lt;br /&gt;
 |y&lt;br /&gt;
 |true&lt;br /&gt;
 |on&lt;br /&gt;
 |1        = {{{yes|yes}}}&lt;br /&gt;
 |#default = {{{def|{{{yes|yes}}}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:See_also/doc&amp;diff=605</id>
		<title>Template:See also/doc</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:See_also/doc&amp;diff=605"/>
		<updated>2019-01-16T02:01:40Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{lua|Module:Labelled list hatnote}}&lt;br /&gt;
{{high-risk|≈ 130,000}}&lt;br /&gt;
&lt;br /&gt;
This template is used to create &amp;#039;&amp;#039;&amp;#039;[[WP:Hatnotes|hatnotes]] to point to a small number of other related titles&amp;#039;&amp;#039;&amp;#039; at the &amp;#039;&amp;#039;&amp;#039;top&amp;#039;&amp;#039;&amp;#039; of [[Help:Section|article sections]] (excluding the [[WP:LEAD|lead]]) according to [[Wikipedia:Layout]]. It looks like this:&lt;br /&gt;
&lt;br /&gt;
{{See also|Article}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Do not&amp;#039;&amp;#039; use this template inside the &amp;#039;&amp;#039;&amp;quot;See also&amp;quot; section&amp;#039;&amp;#039; at the end of an article, or for links to other articles or subsections of the same article within regular article text. Where subsections are linked to, [[Template:Section link]] may be suitable instead.&lt;br /&gt;
&lt;br /&gt;
Refer to the examples below to see how the template handles link targets containing section links and commas.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
; Basic usage:&lt;br /&gt;
 &amp;amp;#123;{See also|&amp;#039;&amp;#039;page1&amp;#039;&amp;#039;|&amp;#039;&amp;#039;page2&amp;#039;&amp;#039;|&amp;#039;&amp;#039;page3&amp;#039;&amp;#039;|...}}&lt;br /&gt;
&lt;br /&gt;
; All parameters:&lt;br /&gt;
 &amp;amp;#123;{See also|&amp;#039;&amp;#039;page1&amp;#039;&amp;#039;|&amp;#039;&amp;#039;page2&amp;#039;&amp;#039;|&amp;#039;&amp;#039;page3&amp;#039;&amp;#039;| ...&lt;br /&gt;
 |label 1 = &amp;#039;&amp;#039;label 1&amp;#039;&amp;#039;|label 2 = &amp;#039;&amp;#039;label2&amp;#039;&amp;#039;|label 3 = &amp;#039;&amp;#039;label3&amp;#039;&amp;#039;| ...&lt;br /&gt;
 |l1 = &amp;#039;&amp;#039;label1&amp;#039;&amp;#039;|l2 = &amp;#039;&amp;#039;label2&amp;#039;&amp;#039;|l3 = &amp;#039;&amp;#039;label3&amp;#039;&amp;#039;| ...&lt;br /&gt;
 |selfref = &amp;#039;&amp;#039;yes&amp;#039;&amp;#039;|category = &amp;#039;&amp;#039;no&amp;#039;&amp;#039;}}&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
This template accepts the following parameters:&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, ... – the pages to link to. At least one page name is required. Categories and files are automatically escaped with the [[Help:Colon trick|colon trick]], and links to sections are automatically formatted as &amp;#039;&amp;#039;page § section&amp;#039;&amp;#039;, rather than the MediaWiki default of &amp;#039;&amp;#039;page#section&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;lt;code&amp;gt;label 1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;label 2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;label 3&amp;lt;/code&amp;gt;, ...; or &amp;lt;code&amp;gt;l1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l3&amp;lt;/code&amp;gt;, ...; optional labels for each of the pages to link to.&lt;br /&gt;
* &amp;lt;code&amp;gt;selfref&amp;lt;/code&amp;gt; – if set to &amp;quot;yes&amp;quot;, &amp;quot;y&amp;quot;, &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot;, adds the CSS class &amp;quot;selfref&amp;quot;. This is used to denote self-references to Wikipedia. See [[Template:Selfref]] for more information.&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; – if set to &amp;quot;no&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;false&amp;quot;, or &amp;quot;0&amp;quot;, suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This only has an effect if the first positional parameter (the page to link to) is omitted.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Article}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Article}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Article#Section}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Article#Section}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Article#Section|label 1=Custom section label}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Article#Section|label 1=Custom section label}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Article1|Article2|Article3}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Article1|Article2|Article3}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Article1|Article,2|Article3}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Article1|Article,2|Article3}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Veni, vidi, vici|Julius Caesar}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Veni, vidi, vici|Julius Caesar}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Veni, vidi, vici|Julius Caesar#Civil war}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Veni, vidi, vici|Julius Caesar#Civil war}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Julius Caesar#Civil war|Veni, vidi, vici}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Julius Caesar#Civil war|Veni, vidi, vici}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|Julius Caesar#Civil war|Crossing the Rubicon}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{See also|Julius Caesar#Civil war|Crossing the Rubicon}}&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
If no page names are supplied, the template outputs the following message with the (help) wikilink pointing to this very Errors section:&lt;br /&gt;
*{{See also|category=no}}&lt;br /&gt;
&lt;br /&gt;
If you see this error message, it is for one of three reasons:&lt;br /&gt;
# No parameters were specified (the template code was &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; with no pipe character nor page to link to). Please use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;page&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
# Some parameters were specified, but no page names were included. For example, the template text &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|selfref=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; will produce this error. Please use (for example) &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;page&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;|selfref=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
# A page name was specified, but it contains an equals sign (&amp;quot;=&amp;quot;). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|1+1=2|2+2=4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; will produce this error. To work around this, you can specify the parameter name explicitly by using &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, etc., before the page name, like this: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|1=1+1=2|2=2+2=4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you see this error message and are unsure of what to do, please post a message on [[WP:HD|the help desk (WP:HD)]], and someone should be able to help you.&lt;br /&gt;
&lt;br /&gt;
To see a list of wikilinks to articles that contain this error message, see the [[Wikipedia:Maintenance|maintenance category]]: [[:Category:Hatnote templates with errors]].&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;This template creates a hatnote to point to a small number of related pages. It is placed at the top of a section, directly underneath the section heading.&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;Page 1&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the first page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Article name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the second page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the third page that you want to link to. More pages can be added using the parameters \&amp;quot;4\&amp;quot;, \&amp;quot;5\&amp;quot;, \&amp;quot;6\&amp;quot;, etc.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the first linked article is to be displayed as. &amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l1&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 2&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the second linked article is to be displayed as.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l2&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;selfref&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Self reference&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Set to \&amp;quot;yes\&amp;quot; if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;no&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;category&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Category&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Set to \&amp;quot;no\&amp;quot;, \&amp;quot;n\&amp;quot;, \&amp;quot;false\&amp;quot;, or \&amp;quot;0\&amp;quot; to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;no&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 3&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l3&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the third linked article is to be displayed as. Other labels can be added by using increasing numbers (starting with \&amp;quot;label 4\&amp;quot; or \&amp;quot;l4\&amp;quot; for page 4) as parameter names.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*{{tl|See also if exists}}&lt;br /&gt;
*{{tl|Category see also}}&lt;br /&gt;
*{{tl|Main}}&lt;br /&gt;
*{{tl|See}} (redirect to {{tl|Further information}})&lt;br /&gt;
&lt;br /&gt;
{{Hatnote templates}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{#ifeq:{{SUBPAGENAME}}|sandbox||&lt;br /&gt;
&amp;lt;!-- Categories go here and interwikis go in Wikidata. --&amp;gt;&lt;br /&gt;
[[Category:Exclude in print]]&lt;br /&gt;
[[Category:Hatnote templates]]&lt;br /&gt;
[[Category:Related-topic templates]]&lt;br /&gt;
[[Category:Wikipedia page-section templates]]&lt;br /&gt;
[[Category:Wikipedia see also]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Sigfig&amp;diff=607</id>
		<title>Template:Sigfig</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Sigfig&amp;diff=607"/>
		<updated>2019-01-16T02:01:40Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Significant figures]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Significant_figures&amp;diff=609</id>
		<title>Template:Significant figures</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Significant_figures&amp;diff=609"/>
		<updated>2019-01-16T02:01:40Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{{1&amp;lt;noinclude&amp;gt;|0&amp;lt;/noinclude&amp;gt;}}}|0&lt;br /&gt;
 |0&lt;br /&gt;
 |{{significant figures/{{#if:{{{2|}}}&lt;br /&gt;
   |rnd&lt;br /&gt;
   |sum&lt;br /&gt;
  }}&lt;br /&gt;
  |1={{formatnum:{{{1}}}|R}}&lt;br /&gt;
  |2={{{2}}}&lt;br /&gt;
  |3={{Order of magnitude|{{formatnum:{{{1}}}|R}}}}&lt;br /&gt;
 }}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Significant_figures/rnd&amp;diff=611</id>
		<title>Template:Significant figures/rnd</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Significant_figures/rnd&amp;diff=611"/>
		<updated>2019-01-16T02:01:40Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{rnd|{{{1}}}|{{{2}}}-{{{3}}}-1}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc|content=&lt;br /&gt;
A rounding subtemplate, it calls {{tl|rnd}}.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||7|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||6|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||5|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||4|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||3|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||2|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||1|||2}}&lt;br /&gt;
*{{xpd5op3p3p3c|d=||||||sigfig/rnd|123.456|||0|||2}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Subtemplates of template sigfig|rnd]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
	<entry>
		<id>index.php?title=Template:Rnd&amp;diff=603</id>
		<title>Template:Rnd</title>
		<link rel="alternate" type="text/html" href="index.php?title=Template:Rnd&amp;diff=603"/>
		<updated>2019-01-16T02:01:39Z</updated>

		<summary type="html">&lt;p&gt;StarSumiaki: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Being deleted|2018 December 14|Template:Rnd|merge=Template:Round}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#iferror:{{#expr:{{{2|0}}}}} |&lt;br /&gt;
  [[Category:Pages with bad rounding precision]]{{hid|Bad rounding here}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#invoke:Math|precision_format| {{{1}}} | 1-{{order of magnitude|{{{1}}}}} }}|&lt;br /&gt;
  {{#invoke:Math|precision_format| {{{1}}} | {{{2|0}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>StarSumiaki</name></author>
		
	</entry>
</feed>